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