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