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