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