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