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