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