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