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