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