|
|
作者autopear。) U. }5 _- J, s8 O
: |* A7 {3 h" r1 F( L' Y1 X: S
前言: 5 S, w' H" k5 ^( E1 `
* F; H9 X1 R" q 目前iOS平臺上常見的安裝包有三種,deb、ipa和pxl。
+ S5 ]' Z% C2 p
; [# R1 f# E9 d* i6 j; _ 其中deb格式是Debian系統(包含Debian和Ubuntu)專屬安裝包格式,配合APT軟體管理系統,成為了當前在Linux下非常流行的一種安裝包。進入2.x時代之後有Cydia作者JayFreeman(saurik)移植到iPhone平臺上,一起的還有APT軟體管理系統。 1 g3 i1 q# u$ T$ o) `) m4 S2 w
5 K. r' B0 k8 O: N 而ipa格式則是蘋果在iOS平臺上推出的專屬軟體安裝包,在2.0固件開始才正式使用,是目前iPhone/iPodTouch/iPad平臺上唯一的官方安裝包。 + H% w6 N" }% u3 k3 f
# o$ O4 A5 Y+ s# r
而pxl格式則起源於Mac系統上的pkg安裝包,被廣泛應用於1.x固件時代,曾經是iPhone平臺上唯一的軟體安裝包,現在仍在被91等軟體所使用。
4 h$ m: o" Q7 W& [; P0 f3 l e
安裝包格式:
! ~ B* W1 p0 w/ I; u, x
: @) ~ \0 w& Z7 n8 Q) w .deb
& u2 E. O W* ` S0 H' D x! [
: W0 l* U5 P$ m4 g+ K4 q+ g. Q% e deb是Unix系統(其實主要是Linux)下的安裝包,基於tar包,因此本身會記錄檔的許可權(讀/寫/可執行)以及所有者/用戶組。 , G# w2 g3 Q4 m7 a: a+ O5 \3 i+ z! c
/ Q( H4 g3 B5 \
由於Unix類系統對許可權、所有者、組的嚴格要求,而deb格式安裝包又經常會涉及到系統比較底層的操作,所以許可權等的設置尤其重要。 J5 A! V) d; `/ u
1 f& W B2 Y6 J% k: q+ J deb包本身有三部分組成:
# g: h' h% D. C6 `5 ]
" l* t0 R7 Q0 o" ]8 T" `$ d 資料包,包含實際安裝的程式資料,檔案名為data.tar.XXX; & s6 V4 B! Y" {# O& D% c
0 |: O1 P6 e# c3 `( F# `7 m1 _+ J 安裝資訊及控制腳本包,包含deb的安裝說明,標識,腳本等,檔案名為control.tar.gz;
0 F' Z4 |2 I: j4 T l
; q# E% S/ K. t/ F- ]$ k 最後一個是deb檔的一些二進位資料,包括檔頭等資訊,一般看不到,在某些軟體中打開可以看到。 - _* x/ J% a7 W$ m
8 c u" s+ r3 B4 a/ ] J$ R- s deb本身可以使用不同的壓縮方式。tar格式並不是一種壓縮格式,而是直接把分散的檔和目錄集合在一起,並記錄其許可權等資料資訊。之前提到過的data.tar.XXX,這裏XXX就是經過壓縮後的尾碼名。deb默認使用的壓縮格式為gzip格式,所以最常見的就是data.tar.gz。常有的壓縮格式還有bzip2和lzma,其中lzma壓縮率最高,但壓縮需要的CPU資源和時間都比較長。
1 B4 N$ P2 O8 z2 u5 A
4 X( i" Z7 ?% e2 L: a- K9 G data.tar.gz包含的是實際安裝的程式資料,而在安裝過程中,該包裏的資料會被直接解壓到根目錄(即/),因此在打包之前需要根據檔所在位置設置好相應的檔/目錄樹。 $ j8 ^" C; A2 i' }$ M7 s6 b
- Z5 n6 v- ^! J/ [2 `9 x/ f' f
而control.tar.gz則包含了一個deb安裝的時候所需要的控制資訊。一般有5個檔: * E# q% F' H5 L% [
5 j( X; \9 e/ w3 t3 a, ~' M/ j0 w
control,用了記錄軟體標識,版本號,平臺,依賴資訊等資料; , `: Z7 `/ O+ s; E- r# q
9 d) H7 Q: \! S2 A- C5 _ preinst,在解包data.tar.gz前運行的腳本;
0 L+ X# ^& L$ V' d" J5 [0 x5 f$ u
6 ?& G+ o# \, E2 y$ v' l; j4 J postinst,在解包資料後運行的腳本;
F. Z3 h" Y6 E
9 _' t( q2 @: K prerm,卸載時,在刪除檔之前運行的腳本;
( M7 `( p" L: D7 \
. y4 }8 E8 g; U! I postrm,在刪除檔之後運行的腳本;
+ h4 Z6 D7 z( @
& c. G7 _# i% W4 F2 R4 j 在Cydia系統中,Cydia的作者Saurik另外添加了一個腳本,extrainst_,作用與postinst類似。
- y0 O9 F7 `( [6 v
9 w$ e: Y. l& C ? .ipa
0 p9 s: X3 G% ]5 a- X: V) o' Y9 w. L& ~7 j$ K9 A3 d
使用過MacOS的人可能都知道,Mac下的軟體大部分都只有一個.app目錄,裏面包含了程式全部資源和可執行檔。簡單來說,Mac下的軟體就像是Windows下的綠色軟體一樣,解壓後即可使用,不需要安裝,卸載的話也只用刪除程式檔即可(這裏不涉及pkg格式安裝包)。而ipa格式可以視為這種.app軟體的衍生物。
6 o1 W( e* t) S: i; c% S) ?" H& k) z2 U8 y
ipa檔實質是一個zip壓縮包(不是rar或7z包),包含3個元件:
" \* g7 g7 P' X" C/ Z1 s: l+ x1 E1 [/ g& B
payload目錄下的.app目錄,這個是軟體的主程序; ! N# c) T# W h% I1 t: V' O
- Q/ F& P. @' f/ H
iTunesArtwork,實質是一個無尾碼名的png圖片,用來在iTunes中顯示圖示;
- c2 f+ ?" E; ]: ~' `& D6 q2 m* |
1 ?) C! K: ~! @ iTunesMetadata.plist,記錄購買者資訊、售價等資料。 7 W* I. W/ [- P% ` W4 `
# z+ ?6 N# S0 l7 ~" G% ] 由於zip包不能記錄許可權和所有者等資訊,所以蘋果規定了ipa的安裝方式,即全部ipa都會解包安裝在/var/mobile/Applications目錄下,全部檔和目錄的所有者及用戶組均設為mobile(ID為501),主程序(可執行檔)的許可權設為0755(所有人都可以執行,但只有所有者可以修改),可執行檔在plist中定義。全部目錄許可權設為0755,而其他所有檔都設為0644(僅所有者可以修改,其餘人只允許讀取,全部人都不允許執行)。 $ C* m' Z9 d3 j
* F; D+ W D! {" l, P ipa解包後並非直接放置於Applications目錄下,而是放在一串由隨機碼構成的目錄下,其作用在於,只允許這個軟體運行在一個特定的沙盒(Sandbox)中,不能干擾其他軟體。因此那串隨機碼目錄下,除了ipa本身的三個組件之外,還有三個目錄: / }+ S" B2 e; Y% p' c- a) K' [
& H- A/ J' a$ V$ l+ j Library,一般是用了儲存設置檔等資料;
( U: A4 g# m! j% l$ P, m# P5 ]4 Z+ l) h, H
Documents,存儲資料,多用了保存存檔;
1 A. p' l+ O7 |/ X+ b5 T
/ S R6 Z$ p1 M i& U8 L% h tmp,暫存檔案夾。 7 ]% `8 K% I. F
9 X) j8 _/ b' B4 L: B 由於這個軟體只能在這個特定的目錄下運行(當然了,部分程式會調用系統的通訊錄、相機等元件,但仍然是受限制的),從而保證了整個系統的安全性和穩定性。
+ S/ N& ?) j2 ^- ~ [- @+ r/ ^% s6 ~* T2 z) h( \, f- u
由於Unix系統下對許可權的規定相當嚴格,所以“越權”的行為是絕對不允許的。舉個例子,mobile用戶無權刪除root所有的檔,因為root的許可權高於mobile。所以有些人在修改ipa安裝後的檔時,比如進行漢化或者修改存檔,發現不能刪除乾淨軟體,或不能保存,這是因為刪除時不能刪除root所有的檔,程式本身也無法對root所有的存檔檔進行寫入操作。
. p R: {% U# K2 }( w# A+ M
6 Z, K, l; j% ?- E+ R# B .pxl
% B. ^/ _& Z! G
8 i- o% C2 w. |' [9 ]6 o pxl格式在1.x時代是iPhone平臺上唯一的安裝格式,原因是那時候還沒有Cydia這樣的APT管理軟體,蘋果官方也沒有推出AppStore。由於在1.x時代積累了大量人氣,在接下來的AppStore時代中,pxl格式以其相對簡易的打包和安裝方式,仍然佔據了很大一部分市場。但隨著Installer的停止開發,iBrickr等軟體停止更新,目前唯一還在堅持使用pxl格式的就只剩下91一家了。 , j& w8 i1 `" r& i0 S$ K5 Q& S$ I
2 W2 B4 }/ B# k2 l' U9 u3 Y pxl安裝包通常包含3個組件: & {5 ^2 A# \ n
0 Y" I2 E+ K! A0 C+ V
PxlPkg.plist記錄程式檔的存放位置、所有者、許可權以及軟體標識等資訊;
& O2 L2 F' _% K5 I
2 I9 J# n# P9 m* t0 x( D f PkgScript文件夾,存放安裝和卸載腳本; ' D( `6 O) _ e% e3 l
! B* c$ J) V$ U& w* _% g1 q/ d6 Y 程式檔。
8 O3 C2 M8 ^" t. e4 F( G/ J% N8 S5 X: x" W( ^8 a
PxlPkg.plist檔的開頭通常是CFBundleIdentifier,記錄著軟體的唯一標識,以和其他軟體進行區分。RDPxlPackageVersion則記錄軟體版本。RDPxlPackageFireware被用來記錄可以運行的固件版本。其餘還有一些鍵值是用來記錄軟體介紹、網址、作者資訊等資料。
% g! q) h1 q. n
% h$ _8 d2 X$ A9 P 除了軟體標識、軟體版本和可用固件版本以外,PxlPkg.plist的核心部分就是RDPxlPackageFiles和RDPxlPackagePostflight兩項。RDPxlPackageFiles記錄了程式檔應該被複製到的路徑,並提供了是否覆蓋的參數:overwrite。而RDPxlPackagePostflight則記錄程式檔應該被賦予的所有者和許可權,分別以chown和chmod命令來實現。另外,對於含有安裝/卸載腳本的pxl來說,還會以sh命令執行相應的腳本Postflight和Preremove。 2 b' L( |- X5 s. M/ M6 k) z
' P5 Q5 T! ?& Q2 x/ H [ PkgScript通常包含兩個檔,安裝後執行的腳本Postflight和卸載前執行的腳本Preremove,這兩個腳本就是標準的LinuxShellScript,以sh命令執行。
4 k/ g$ @- ^9 j! I+ A9 q9 ^/ U
! k* p& O' O0 Z; T* T: [ 安裝包的特點: @. y( i2 e5 u$ O
" ~1 [0 H0 r. d0 e
.deb
- S! S/ k0 T* F8 g
1 t# @6 k0 X* q+ O. ^0 c% w 豐富的資源:Cydia上本身就不少,更何況任何格式的安裝包都可以轉換為deb。
: G" Q4 i" j) P6 g' f8 H( i& M) ^ A! G, q0 x7 \. a6 \; N$ q$ h
相對方便的線上購買模式:CydiaStore,不過儘管沒有AppStore的5台設備的限制,但對國內用戶來說,付款方式比較困難。 # j- d; V7 [3 C7 @
% e7 @1 S5 |+ [1 s8 D- N: h& s
破解難度較大,沒有使用AppStore的驗證方式,所以必須將驗證和防破解措施加入程式裏面,這樣就比較難破解,對軟體發展者來說是個好事。 5 ~4 a5 g' O% a% e- f6 X2 B! K* i$ X/ \
# M' j3 a/ ?/ c- y' d 完善的Unix檔系統支援:無需以命令設置檔的許可權、所有者和用戶組(當然也可以以腳本來設置) ' C; v, S+ O+ L! L5 {+ L
% Y, P5 W- V1 X5 x, z 完善的腳本支援:5個腳本依照安裝和卸載的先後順序執行,可以提供更多選擇。比如備份還原操作,可以在preinst中備份檔案,而在postrm中還原檔 z6 `+ A2 K4 T& K: Y6 E
! T+ G7 u5 y, b* `: q$ V7 {/ \
嚴格的依賴關係:deb遵循嚴格的依賴關係(於Depends和Pre-Depends指定),可以確保軟體運行所必需的元件。線上安裝的時候會自動安裝所依賴的套裝軟體。卸載時也很重要,比如套裝軟體A依賴於B,當卸載B的時候會提示A依賴於B,卸載掉B的話會導致A不能用,這樣可以確保系統的完整性和穩定性。
6 k# I6 p1 @( Y7 U' ~- S* o* O2 R! z" {1 N2 j4 ^! l, W
Conflicts、Replaces、Provides等鍵值的存在可以實現衝突提示或替換其他套裝軟體。
9 f' a0 K" H8 [
c# @# Q' b5 C5 q: N$ z 完全許可權:由於deb必須以最高許可權root的身份運行,deb可以對系統任何位置進行操作,換句話說,deb擁有對整個系統的完全控制,因此deb安裝包軟體可以實現很多ipa不能實現的功能。 5 e4 R# h: \8 U& k
4 A( J, N! g6 _* m3 S2 Y 相對簡單的獲取方式(線上或離線)和安裝方式,也不用擔心在不同機器上同步會刪掉程式的問題。 ! B/ O. o/ M8 J( P. n/ `/ U/ x7 [/ [
# \% J: J H. G/ B0 e q' i
安裝相對簡單:其實無論是哪種安裝包,安裝方法都不算很複雜,只不過deb稍微複雜一些。 4 z z) B: L4 w7 `6 F, k9 u
1 Z M& @. P1 m
deb的安裝方法大體有5種: 4 _: D: m- ]" L* H" o, d( j
' x. j( I% l: n# O# S8 i5 F* }6 M Cydia或同類APT管理軟體線上安裝,這個是最佳的安裝方式,因為通常無需考慮依賴關係,但缺點是對網路的要求比較高; ! x; t( q' \' n- i
8 x7 a4 b+ O, ~# n 命令行中以dpkg-iXXX.deb的形式安裝,好處是可以以通配符一次性安裝多個deb,而且也可以直接看到腳本的運行狀況和安裝成功/失敗的提示資訊,缺點是需要命令行軟體的支援,如Putty/WinSCP的控制臺/iSSH/MobileTerminal,很多人也不熟悉命令行下的操作。另外,安裝完後會不顯示圖示; 0 V! u, {) u2 v" g `$ Y
% C+ q& I3 F7 E, f" Y# X 放置於AutoInstall目錄重啟安裝。該方法實際是Cydia提供的一個啟動腳本,在每次系統啟動時以dpkg命令安裝AutoInstall目錄下的deb,好處是不需要命令行操作,缺點是必須要重啟,有些甚至要重啟兩次,也會出現不顯示圖示的情況;
# f' C( H9 V6 [ Z* y" c8 A: r/ @& X0 @
利用iFile安裝,好處是圖形化操作,桌面會顯示圖示,缺點是不能一次安裝多個deb; & |# i1 q+ U6 Y6 Q- ?
. @7 C2 U, ]9 ~5 I+ `
用CyderII等軟體來安裝,其原理是類比一個APT軟體管理器來下載相應的deb檔並傳到設備,然後以前面幾種方式來安裝。
1 x, [, T# t4 e/ Y2 i! b, K
: L8 J. _! _3 n5 e; O8 B 總體來說,deb的安裝都是依賴於dpkg-i命令來安裝,只不過有些是在命令行下輸入命令,有些是提供了圖形介面。但除了Cydia安裝一種方式之外,其餘幾種安裝方式都存在一些共有的問題:
# F5 R' I" d1 j% } V: P9 m" @$ X( p; h
不會自行搜索依賴關係,必須手動提供所依賴的deb;
6 |9 p. J! i" W, O$ J0 t5 y/ f
& g- u& u( j5 V8 ` q! K: h2 B7 P* T. U Cydia會讀取安裝腳本裏的一些特殊語句,比如僅在全新安裝時執行而不在升級時執行,安裝完成後重啟SpringBoard或設備等等。
" z4 f2 X, |) b% R, N$ r9 q+ G( z, T9 M
當然了,deb軟體的卸載也比較簡單,有兩種方式: , [9 ]. H" `! U
! G& s7 h B6 B# R Cydia裏卸載,優點是卸載過程和提示資訊很詳細,全圖形介面操作,同時也提供了重新安裝的選項; $ m6 ^; {& M% r0 J
0 Y1 h7 J+ Y% M) O& @1 o6 E2 W6 L
以dpkg-rPackage_ID命令或dpkg-PPackage_ID命令來卸載(詳情後面會說);
; k+ U( c8 g6 G" H* m
8 {. g! l9 h) Q( d0 V Cydelete來卸載,優點是可以直接在桌面上卸載有圖示的軟體,但對那些沒有圖示的無能為力。
( V( C6 D4 G' _$ [1 s6 n9 K
# a& M, S- ^9 G 其實,不管是安裝還是刪除,都可以才要全手動的方法。即,解包deb之後,自己將檔放到相應位置,然後設置許可權等並執行腳本。但這樣有必要麼?
+ v8 m; b* M9 H9 k- z: h- Q$ ]' M! E. H/ V7 `( z8 A4 e
deb的安裝過程如下: % Q2 y4 X7 Q: k& @0 R4 n. g
5 r# l' l$ R a& v; o! F 讀取資料庫並鎖定,避免同時有兩個安裝程式在運行 ' h$ X4 c0 Q) W+ |
3 C6 @: s7 q4 |* @: f
讀取control中的Package(套裝軟體標識)和版本資訊,並搜索資料庫,若已存在,則卸載之後再安裝;
6 i6 Q5 g+ q+ x( N) ~3 U6 @
0 ?7 s6 v& y3 S1 {8 X$ x/ D6 q( B+ [ 檢查Depends,Pre-Depends,Conflicts和Replaces,如果檢測到已存在Conflicts中存在的軟體,則報錯並終止安裝。如未找到Pre-Depends指定的軟體,則報錯並終止安裝。如找到Replaces中指定的軟體,則卸載之;
- Y' J, S, h" p( M+ R3 O! h
3 L/ w# W* [& D: [ 將資料寫入/var/lib/dpkg/status檔中;
4 @0 h! N$ k: g- E% ]3 y! p* l
, C& s3 }7 p0 r- z7 A- J, X 執行preinst腳本(如果有);
y. {1 W8 [8 b" z; ^; `/ q6 w u- R* ^& H0 Z: ?& @
解包data.tar.gz,將檔放置於相應位置,並將檔列表寫入/var/lib/dpkg/info/XXX.list;
7 ?* q9 ] {0 |+ @* j( H: ^. R8 E, `" ]' r
運行postinst和extrainst_腳本(如果有);
& v$ r3 P; w A6 F3 T* s9 R
% L V8 x1 c! O* a1 U, a 如果之前的安裝都沒有出錯,即安裝成功,那麼會在status檔中寫入Status:installokinstalled資訊,否則會寫入其他狀態資料,比如Unpacked(未解包資料)、Failed-config(腳本未能成功執行)、Half-installed(安裝失敗等);
+ c* {4 \7 l) x( u) l% ~) `. l- K
8 Q) H! t$ p4 B8 ~0 W+ m- N 重新載入資料庫並解除鎖定。 * Q, B5 i. {+ Y" j& r
* \( X- i. q9 a0 x/ c; }7 b- r deb的卸載過程如下:
& D0 l' u R. y* O4 {% ^5 e
/ ~0 A+ k: q F4 | 讀取資料庫並鎖定;
1 r* H/ `, b- d' Q V
6 A9 P& a- |/ H- l; H" \ 根據軟體標識搜尋資料庫; 1 u* t: I' q$ O
0 ^: n" L' Z1 X6 r6 y! g6 G; x
檢查是否有軟體依賴於待卸載的軟體,如果有則提示,並中斷卸載;
( T' Y% I/ m- J2 _) z5 T
: J7 H2 [6 s2 n" Y8 Z$ U1 |' O 執行prerm腳本(如果有);
7 `$ @- x( ^- ^) Q: H' U+ b) h4 F& k/ U* |: Q" O# J3 b7 u* ? l
讀取/var/lib/dpkg/info/XXX.list檔,並刪除list檔中記錄的全部檔和非空檔夾;
) v2 Q1 ^* p7 E; W) G6 W& v7 \
& t: b6 _9 W. n" ]! e. B1 n+ A 運行postrm腳本; $ I1 g6 r4 ^: V" A
& d m# \8 M3 b! c
如果卸載命令是dpkg-r,則保留status中的記錄並改為Status:Notinstalled;如果卸載命令是dpkg-P,則刪除全部資料;
; d7 H8 h9 q' y v( G3 O! |' }" b: ^: p. O# E5 N% y3 s
如果卸載過程沒有錯誤的話,重新讀取資料庫並解除鎖定。
& h2 }5 a- p$ _% Z M& P/ O8 M
1 v* b8 U8 ]$ K; `1 P$ A3 G 由於deb安裝的軟體可能會在運行時在/var/mobile/Documents下放置存檔檔,或在/var/mobile/Library/Preferences下放置設置檔,而這些檔並沒有記錄在list檔裏,所以卸載的時候不會被刪除。 0 f% ~# g7 E. L& e. p/ T
1 c" g7 D3 }% V9 Z' L M6 L# A .ipa
8 |, P! f& w) I
: I* b8 v5 \' `0 l 豐富的資源:AppStore上那麼多資源,apptrackr等網站也提供了很多破解版。 , P P0 c3 B+ |* f
) l# W5 H& B) @1 x$ |- ]
完善的更新、後期服務。 5 h& c. h- j$ P8 |+ m! { ]& x
+ P. [ {0 [+ N6 P+ ~- R7 d
只能使用最小許可權,保障安全性。 " u2 ]% C; r6 T8 t+ B {, D9 v" ~
% R4 r& G& c' M9 ]
不涉及系統級的操作,所以一般不容易造成死機或白蘋果(有些是因為資源消耗太大所以卡死)。
& a, a& R# B1 b# b$ Y$ G: B7 R' }5 }2 J, `
便捷的安裝方式,無論是直接在設備上用AppStore安裝,還是用iTunes來同步,抑或是用Installous和91這類第三方軟體來安裝,都是很方便快速的安裝方式。 * I2 m9 `0 c; x, J
. \* m( G* Q Y: w4 m
超級簡單的卸載方式:還有什麼比只需要點一個X就能卸載更簡單呢? ' ?( g, V n6 y- Y6 x
1 e7 A5 z/ p! ?9 ?1 z/ F
完全刪除,不會留下任何垃圾檔(如存檔、設置檔等) . G# v: T$ ? A4 n8 y0 \
# h' j% h. ^* @6 L# A; _" T 總體來說破解還是比較容易的,但現在越來越多軟體加入了防破解措施。 5 G0 u' A3 `& o% C1 k
! y5 `- t% c& w7 H. z
之前提到過,ipa軟體是被安裝在一個類似于沙盒的環境中,除了能對/var/mobile/Media/DCIM目錄(拍照、截圖存放目錄)進行操作,或是調用壁紙、鈴聲、相機等元件,不能對系統進行任何干涉,這樣在最大程度上保證了系統的穩定運行,也不會干擾其他軟體的正常使用。但問題是,由於ipa軟體的許可權很低,想要對系統進行修改,尤其是應用補丁時,ipa就無能為力了。
+ k1 t# t0 D- V4 t6 N8 j# N" a1 [
ipa軟體官方的安裝方式有兩種,一是在AppStore這個軟體中下載安裝,二是用iTunes同步。 * t& \0 o; n, H- Y* Z! |- Y* I
; J0 v5 D6 _9 S" a" P. A2 [# o( X
前者的問題主要是網路問題,網速不好很容易安裝失敗;GPRS之類的上網安裝又很耗流量。後者的問題主要是不能在不同系統下使用(包含不同電腦和同一部電腦上的不同系統),在其他系統上同步會抹掉原有的軟體。當然了,iTunes每次同步時間比較長也是經常被人詬病的。尤其是當安裝軟體比較多的時候,每次同步之前的備份需要很長很長時間,這個很噁心(不過可以直接X掉備份操作)。
8 H( k5 c/ _# G; B) o) A1 j
9 i* p0 H# \9 Z" J$ G" P" {) K 由於以上兩種方式存在一些問題,所以很多人會選擇使用Installous或91來安裝ipa,這也確實是個不錯的選擇。
3 A/ _/ o$ M4 A$ N6 t
! \1 N$ ? k6 [ o0 L5 H Installous一般沒什麼問題,但對部分驗證比較嚴格的ipa處理不是很好。雖然Installous基本能代替iTunes,但畢竟不完全等同。最典型的就是Installous安裝Microsoft官方出的LiveMessenger(正版,非破解版)時不能運行。實際上Installous對很多未破解的正版軟體支援不是很好。 / h* `+ @- a: m, X. P; ^! o. S
# ?5 T# u. l& {+ }# x, M 至於91,經常被人批評。91雖然可以安裝ipa,但除了Installous都有的正版軟體的支援問題外,由於91的安裝機制有缺陷,軟體不能實現多語言,只會使用英文介面,而忽略掉zh_CN.lproj,zh_TW.lproj這些語言包。這對那些用希望使用漢化版的人來說實在是一個悲劇。所以通常是要避免使用91來安裝ipa的。 4 x! I* d j I
/ ], I; S5 [1 W1 B- q1 g B 至於卸載,三種方法: 0 u1 [ k1 {- p
9 r% ?: B0 g, `) {4 V: f- }# `# D 設備上按住圖示直到開始晃動,點擊圖示左上角的X即可卸載;
& m+ u3 G/ a% Y" e
: X! Q! m( e3 d2 a' G" G 於iTunes中取消選中,然後同步
- S$ g( Y3 q% O0 H* V" h
: E/ \5 X" e6 C7 p- F1 C! o5 u/ R 找到/var/mobile/Applications下的相應目錄,強行刪除整個檔夾。這個在前面兩種方法無法使用是可以採用(有時候卸載體積太大的軟體,比如超過1G,因為刪除過程太長導致失去回應並刪除失敗。),但這種方法會造成系統的不穩定。除非是確實碰到了問題,否則強烈建議不要使用。 8 k2 c z f$ n6 \: N
, Z" F, d. U Y; A .pxl
9 _1 u" v: }# ^. f
+ y; P# ^3 ?( Y1 a 嚴格來說,pxl格式的資源並不算多,但也不少。現在使用pxl格式的絕大多數都是91的用戶。
+ d) T. b0 s0 m) C4 l7 l& Q
* a: ]! p5 {0 x 從時效性上來說,很多軟體(主要是AppStore上的)一被人破解就馬上會被人轉成pxl格式,這樣來說,pxl格式的更新還是不錯的。 * O+ `5 x H; _; e( I) g
" d* N$ C8 p4 X9 l5 Y+ Z5 \! x) Q+ q
由於91手機助手沒有iTunes同步會抹掉軟體的問題,加上其他一些比較方便的功能,使得很多新手都是從91開始瞭解並熟悉iPhone/iPodTouch的使用。其結果是,pxl格式依賴于91而生存。 5 G6 f4 H, }, k
6 F% l2 d% W5 U; N
pxl格式的流行也不是歷史的遺物,而是符合市場規律的需求。91助手的便捷的軟體管理方式(尤其是支援WiFi管理),加上免費的旗號,使得pxl格式在新手中很受歡迎。
" u( e) i8 f4 P% a$ h2 ~6 E* _8 j. Y
; j+ r* |2 S3 O: Q# f6 B( [ 實際上,pxl格式和deb格式具有的功能完全一樣。雖然pxl不能記錄檔的許可權等資料,但完全可以用腳本來彌補。即是說,pxl格式和deb格式其實是不相伯仲的。而且因為pxl格式的製作並不需要比較少見的Unix環境,尤其是Debian環境,其本身是優於deb格式的。 3 P* b$ `% ]: r2 }
6 m5 z- L( z2 Y( F8 k0 w C3 H
但為什麼現在很多人都經常在說不要使用pxl呢?我個人認為,原因主要有以下幾個:
) L# F- ~) H" q% F% ?
: J5 [- E6 o5 h) C9 W 資源的局限性:除了91公司自己開發的幾個軟體之外,其餘所有軟體都是從deb和ipa轉換而來。如果原版軟體沒破解,pxl無能為力(比如Microsoft官方出的LiveMessenger和Cydia上一眾沒被破解的軟體); f: F0 o( _2 `& K) R) z$ r
4 l- s/ H- l: Y! H0 @8 Z
資源時效性:跟上面一點相似,pxl格式大部分是從其他格式轉換而來,跟原版相比總是會慢一些,尤其是當無法破解時,pxl根本就出不來; " w8 Y& [* M" x
1 |% |/ F& M2 P7 G* { ~
打包人水準有限:現在很多人都是直接用91助手來打包pxl。對大部分只有一個XXX.app目錄的程式來說一般不會有問題,但若遇見那些對檔許可權等資料有嚴格要求的軟體(比如可執行檔沒有可執行許可權,或是mobile用戶不能改寫root所有的檔等等),或是需要比較複雜的腳本才能運行的軟體,往往pxl製作者並沒有能力去製作一個完善的pxl出來,這樣也導致了許多安裝使用上的問題; : v7 L& H$ a( O. s: V* E
4 ` w8 W, [+ r! s& D 安全性:絕大部分人在製作pxl的時候都習慣用chmod-R命令來將整個XXX.app目錄及其中的全部檔和子目錄設為755/775/777許可權,而這種行為會造成一定的安全隱患。關於這些數位的意思請自行搜索相關資料。這裏簡單說明一下。644屬性表示僅有該檔的所有人才可以進行改寫操作,其餘任何人都只能讀取,任何人都不能執行這個檔。755和775是在644的基礎上加入了可執行許可權,755是該檔所在的用戶組的所有人都可以改寫。而777許可權則標識任何人都可以改寫並執行。由於mobile本身是受限帳戶,如果使用777許可權的話,有機會通過這個漏洞來獲取整個系統的控制權。只不過因為iPhone系統相對封閉,也不太有機會造成損失。但採用775和777許可權是不應該的;
6 N. b9 w6 F' n# |3 ?, ]0 K
4 S5 w+ T5 Q/ Z) @, {) H& z9 U1 z ipa轉pxl的存檔問題:不少人都有這樣的經歷,在遊戲A存檔之後再進遊戲B,存檔B之後再進A,發現A的存檔已經不在了。原因在於,ipa轉換成的pxl軟體,存檔全部是放在/var/mobile/Documents目錄下,而正好有兩個軟體的存檔檔案名相同(最常見的就是data.sav或save.data),互相改寫之後導致不能讀取。這種問題也發生在ipa轉deb上,而且無法解決;
3 g J- W% n6 E0 R1 l& Z( V9 J3 x7 d6 M: R0 X+ _
無法完整刪除:卸載pxl格式時,不會刪除存檔檔、配置檔、暫存檔案等資料,長期使用會導致可用空間減少; , N7 C$ t0 }; ~' s) I5 T
" |1 d' ?' R1 B, l 在部分機型上存在相容問題:有些機器越獄後並沒有將系統分區中的/Applications目錄轉移到/var/stash的用戶分區中。由於系統分區的可用空間很少(默認500MB,通常可用空間不超過50MB),強行往/Applications裏安裝會導致剩餘空間消耗殆盡或安裝失敗。
2 x. ~+ Q% A1 E1 L, F3 l" b. d" O$ D& A J& V6 c+ X5 C, @
由此可以看出,pxl格式的問題更多不是pxl本身的問題,而是打包者的問題以及安裝方式的缺陷所致。
4 A# t& H- U# `5 Z' y7 t1 y, z1 T0 [+ [
另外要指出的是,pxl最大的提供者,91,經常是轉載他人發佈的軟體(包括網友自己購買破解的,或Cydia上直接下載的)然後當作自己發佈的軟體,對版權問題完全不在意,這樣也引起了很多人,尤其是原發佈者的反感。這種赤裸裸的剽竊行為實在是令人不恥。正因為這樣,很多人是因為不爽91而不爽pxl,這實在是冤枉pxl格式本身了。
- F% z; E. J9 C* l; S3 C4 ]' U+ u" F* }
總結: . H; y% o& R5 a, ~8 S
5 E. V, F( F; Y* |, _" {3 u3 E 一般的軟體還是儘量用ipa格式,不要使用ipa轉換成的deb或pxl格式,這樣可以確保相容性和安全性。而在系統級的程式(如SBSettings和輸入法),ipa是絕無能力的,那麼最好的選擇還是deb。pxl作為快被淘汰的格式,還是果斷的放棄比較好。 - c1 H8 ?$ N* Y( [6 }3 T
1 d+ e/ r8 N# ]% Y; |" E9 f H" X 至於ipa和deb的安裝方式,ipa的安裝首選iTunes同步和AppStore線上安裝,次選Installous,以保證最佳相容性。deb的安裝首選Cydia線上安裝,次選除91外的其他任何安裝方式。 ; P* }. v# W. M* W8 T- o
' P' Y# V2 n' { 任何情況下都不推薦用91來安裝ipa和deb,因為91的安裝機制並不完善,很容易出問題。 & z* H8 m9 b6 U3 f
* _ Z+ x- G$ l; c% B+ e2 o
& j3 M. I( }0 r4 K7 a5 N4 D7 S
本文是原樣轉過來的,甚至字體以及顏色都沒有更改。主要是為了方便機友查閱,也好進行更進一步的操作。感謝威鋒網,感謝作者autopear。 |
|