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