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