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