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