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