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