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