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