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