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