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