找回密碼
 註冊
搜索
查看: 3281|回復: 0

[教學] 什麼是 deb、ipa 和 pxl

[複製鏈接]
發表於 12-9-2010 21:46:02 | 顯示全部樓層 |閱讀模式
作者autopear。
  o  q0 p4 t* O5 e) F+ P* T+ S* |. P3 |3 k; O8 O- C
前言: : C# w1 G" Q6 d0 h
) m% ~$ g' E& {7 K; Q: g* L
  目前iOS平臺上常見的安裝包有三種,deb、ipa和pxl。
/ V( k; p" `$ {; U. G+ d9 d
0 n7 \1 o& }: @; F. B  其中deb格式是Debian系統(包含Debian和Ubuntu)專屬安裝包格式,配合APT軟體管理系統,成為了當前在Linux下非常流行的一種安裝包。進入2.x時代之後有Cydia作者JayFreeman(saurik)移植到iPhone平臺上,一起的還有APT軟體管理系統。 - x" |$ q8 t; H- e2 q' E
1 Z8 V4 i& F2 ~$ L4 ?' [' C$ s
  而ipa格式則是蘋果在iOS平臺上推出的專屬軟體安裝包,在2.0固件開始才正式使用,是目前iPhone/iPodTouch/iPad平臺上唯一的官方安裝包。 & q5 W# W) B* @1 H! Z( E
8 d  u8 X0 @, b" v5 [$ C
  而pxl格式則起源於Mac系統上的pkg安裝包,被廣泛應用於1.x固件時代,曾經是iPhone平臺上唯一的軟體安裝包,現在仍在被91等軟體所使用。 0 d) X/ U% X! D+ t

' d  P( S0 a' s. e) `) E: ^  安裝包格式: ; P. ?/ s$ l1 u5 ]% U% Z
# I9 p+ `! _7 U9 x: y) y
  .deb
; N% I/ w9 O9 v
) e1 G5 H" r  W+ D, k/ @7 E4 O- y  deb是Unix系統(其實主要是Linux)下的安裝包,基於tar包,因此本身會記錄檔的許可權(讀/寫/可執行)以及所有者/用戶組。 ( p4 ?( B$ Z4 S4 X+ B; O

8 \0 f* _  ?9 h' z# u1 z  由於Unix類系統對許可權、所有者、組的嚴格要求,而deb格式安裝包又經常會涉及到系統比較底層的操作,所以許可權等的設置尤其重要。
9 H' s5 U; t7 Q: X1 c  {* e
9 G- ?; w! U8 T" e9 m% a. i- ^( @  deb包本身有三部分組成: ; U6 D2 |, a6 \. `
- @" b0 s% {: ^+ E# C" z  p, j
  資料包,包含實際安裝的程式資料,檔案名為data.tar.XXX;
3 j6 x) ?$ |' N4 i
0 S; v+ F4 c9 U$ A' n) f# l  安裝資訊及控制腳本包,包含deb的安裝說明,標識,腳本等,檔案名為control.tar.gz;
. `- l/ N2 h$ I
8 \: h* `$ B; m' ~  最後一個是deb檔的一些二進位資料,包括檔頭等資訊,一般看不到,在某些軟體中打開可以看到。 0 G" `0 @/ G& V0 {" ]; L

7 D! u/ k) s0 {5 B" q5 ^  deb本身可以使用不同的壓縮方式。tar格式並不是一種壓縮格式,而是直接把分散的檔和目錄集合在一起,並記錄其許可權等資料資訊。之前提到過的data.tar.XXX,這裏XXX就是經過壓縮後的尾碼名。deb默認使用的壓縮格式為gzip格式,所以最常見的就是data.tar.gz。常有的壓縮格式還有bzip2和lzma,其中lzma壓縮率最高,但壓縮需要的CPU資源和時間都比較長。 9 @9 a2 k3 N, f/ B) X' P. p1 {5 |

- F( C2 x5 k+ n0 B% R5 _  data.tar.gz包含的是實際安裝的程式資料,而在安裝過程中,該包裏的資料會被直接解壓到根目錄(即/),因此在打包之前需要根據檔所在位置設置好相應的檔/目錄樹。 ( i: u# M& Z+ o, t+ k
! E# M* d9 U) _7 K
  而control.tar.gz則包含了一個deb安裝的時候所需要的控制資訊。一般有5個檔: * o$ A& a6 l) ~2 y2 ?6 ]

+ ?. y# m4 T2 b, _2 c1 t& H6 m  control,用了記錄軟體標識,版本號,平臺,依賴資訊等資料; & t# ~7 g0 f( }; D" x
+ y# N( n$ k7 R* R
  preinst,在解包data.tar.gz前運行的腳本; , E8 d( e' _( u5 O* `$ P$ D

6 J/ ^& Z$ U+ `  q% \( ?/ u1 p  postinst,在解包資料後運行的腳本;
) m; n1 B8 {* Y) P. r
6 Z$ P3 g: v) B: J" h) W8 Q  D$ }  prerm,卸載時,在刪除檔之前運行的腳本;
( u. B& c" {7 ]  }: G) N5 `3 ?8 l8 O- E0 s, G
  postrm,在刪除檔之後運行的腳本; " [1 G; B) T* K

" K' r) x7 k* o4 C4 P7 [( X  在Cydia系統中,Cydia的作者Saurik另外添加了一個腳本,extrainst_,作用與postinst類似。
8 S5 m. G4 W0 A2 ~0 \' k0 S+ D3 M' n& m( J% M$ ^: U) i
  .ipa
0 X2 G8 O) C; W- K' w7 t1 s
8 ^( R' V6 P' R  l  使用過MacOS的人可能都知道,Mac下的軟體大部分都只有一個.app目錄,裏面包含了程式全部資源和可執行檔。簡單來說,Mac下的軟體就像是Windows下的綠色軟體一樣,解壓後即可使用,不需要安裝,卸載的話也只用刪除程式檔即可(這裏不涉及pkg格式安裝包)。而ipa格式可以視為這種.app軟體的衍生物。 - b' I4 E( \7 l( S
/ n6 t4 J- o8 z4 u  C. H
  ipa檔實質是一個zip壓縮包(不是rar或7z包),包含3個元件:
; c& V5 Q( R# Y* V( u. X7 b; m1 D# B+ ~5 O. l# x) b
  payload目錄下的.app目錄,這個是軟體的主程序; 3 K, C8 `2 h8 a

: N- I( {2 R$ m8 F% f  iTunesArtwork,實質是一個無尾碼名的png圖片,用來在iTunes中顯示圖示; . H4 Q5 V/ `. `
) v+ m. r- c* t
  iTunesMetadata.plist,記錄購買者資訊、售價等資料。 % S$ t- y: L. p( Y# B0 P6 e+ f
3 |) {8 i7 b8 t* W
  由於zip包不能記錄許可權和所有者等資訊,所以蘋果規定了ipa的安裝方式,即全部ipa都會解包安裝在/var/mobile/Applications目錄下,全部檔和目錄的所有者及用戶組均設為mobile(ID為501),主程序(可執行檔)的許可權設為0755(所有人都可以執行,但只有所有者可以修改),可執行檔在plist中定義。全部目錄許可權設為0755,而其他所有檔都設為0644(僅所有者可以修改,其餘人只允許讀取,全部人都不允許執行)。 8 w: p: G; X' l# e' o$ W. i
" z7 [% t6 I; v. r; _/ I  }' Z
  ipa解包後並非直接放置於Applications目錄下,而是放在一串由隨機碼構成的目錄下,其作用在於,只允許這個軟體運行在一個特定的沙盒(Sandbox)中,不能干擾其他軟體。因此那串隨機碼目錄下,除了ipa本身的三個組件之外,還有三個目錄:
8 [7 I: e: r" |6 g$ E
: M4 K7 C6 r9 U+ c0 c) i& O/ V  Library,一般是用了儲存設置檔等資料;
. ~) S9 S2 Y  f
+ Q5 Z! r$ x+ v  Documents,存儲資料,多用了保存存檔;
$ Y) e! H! P9 ^6 T" a
5 e$ G3 {+ H* G, y' ]- |  tmp,暫存檔案夾。
" ]) H, c  h" a
% D! {6 r- m- c% e' j* d  由於這個軟體只能在這個特定的目錄下運行(當然了,部分程式會調用系統的通訊錄、相機等元件,但仍然是受限制的),從而保證了整個系統的安全性和穩定性。
: U  M. B0 d% y9 B9 G% m2 b2 ~( `% S+ M( u
  由於Unix系統下對許可權的規定相當嚴格,所以“越權”的行為是絕對不允許的。舉個例子,mobile用戶無權刪除root所有的檔,因為root的許可權高於mobile。所以有些人在修改ipa安裝後的檔時,比如進行漢化或者修改存檔,發現不能刪除乾淨軟體,或不能保存,這是因為刪除時不能刪除root所有的檔,程式本身也無法對root所有的存檔檔進行寫入操作。
* V$ j/ @# l: H$ ?4 u2 [/ w4 |% D  e' C  ^! ~
  .pxl
* X  L9 S0 r0 j
. ^, Z0 ?" m( e0 [( V  pxl格式在1.x時代是iPhone平臺上唯一的安裝格式,原因是那時候還沒有Cydia這樣的APT管理軟體,蘋果官方也沒有推出AppStore。由於在1.x時代積累了大量人氣,在接下來的AppStore時代中,pxl格式以其相對簡易的打包和安裝方式,仍然佔據了很大一部分市場。但隨著Installer的停止開發,iBrickr等軟體停止更新,目前唯一還在堅持使用pxl格式的就只剩下91一家了。 4 [2 Y7 d& J* N3 v0 y3 R

+ A; F8 r# l- W  R+ {  pxl安裝包通常包含3個組件:   Z# J0 V  ]( i! O: U: }
0 z; O# K; \. ?2 S; o
  PxlPkg.plist記錄程式檔的存放位置、所有者、許可權以及軟體標識等資訊;
& A( V: z$ a2 Q$ l0 H
9 x# u2 E% n- i: U; [; p' ]  PkgScript文件夾,存放安裝和卸載腳本; % y+ ~4 `+ D% ]& T! y

" p, i8 Y4 f7 _3 E; X- t3 `  程式檔。
$ h) U) D% j9 A! u5 i, k$ J( f! x* i6 u
6 a. S: {$ P) {2 X/ Q  PxlPkg.plist檔的開頭通常是CFBundleIdentifier,記錄著軟體的唯一標識,以和其他軟體進行區分。RDPxlPackageVersion則記錄軟體版本。RDPxlPackageFireware被用來記錄可以運行的固件版本。其餘還有一些鍵值是用來記錄軟體介紹、網址、作者資訊等資料。
# @( F9 Z- U% x+ R: |, T+ t4 s3 D! @
  除了軟體標識、軟體版本和可用固件版本以外,PxlPkg.plist的核心部分就是RDPxlPackageFiles和RDPxlPackagePostflight兩項。RDPxlPackageFiles記錄了程式檔應該被複製到的路徑,並提供了是否覆蓋的參數:overwrite。而RDPxlPackagePostflight則記錄程式檔應該被賦予的所有者和許可權,分別以chown和chmod命令來實現。另外,對於含有安裝/卸載腳本的pxl來說,還會以sh命令執行相應的腳本Postflight和Preremove。
& T" \" |* x6 F+ e; H* ]( c5 T  U+ }0 r" d' a2 G+ z4 _4 O
  PkgScript通常包含兩個檔,安裝後執行的腳本Postflight和卸載前執行的腳本Preremove,這兩個腳本就是標準的LinuxShellScript,以sh命令執行。
9 B+ f( \6 t5 o* Z' X
9 z  t  X  u* W. m( }/ b1 s  安裝包的特點: ( [+ `8 C' E! m* p6 ^% I7 G( j
! u( a! {6 M: ~% K/ q( p& e9 z
  .deb / e9 [# I& e, [/ J% b/ n  a" F4 U
+ s6 I/ Z" g  ?% W- @# k
  豐富的資源:Cydia上本身就不少,更何況任何格式的安裝包都可以轉換為deb。
2 S7 C. Y, f- y+ K* B6 X4 @6 r4 [; m
  相對方便的線上購買模式:CydiaStore,不過儘管沒有AppStore的5台設備的限制,但對國內用戶來說,付款方式比較困難。 $ T. u0 f% w* }& u: j
8 K6 s$ j  r! N3 ]
  破解難度較大,沒有使用AppStore的驗證方式,所以必須將驗證和防破解措施加入程式裏面,這樣就比較難破解,對軟體發展者來說是個好事。 ' u% M0 R4 ~) \8 O7 l3 q

  [  M5 `1 N- t1 J3 ?4 N7 }  完善的Unix檔系統支援:無需以命令設置檔的許可權、所有者和用戶組(當然也可以以腳本來設置)   G# h4 B& k- l  o
% ]1 o# e- Z. ?  e: `2 w) ~; t3 V# ^
  完善的腳本支援:5個腳本依照安裝和卸載的先後順序執行,可以提供更多選擇。比如備份還原操作,可以在preinst中備份檔案,而在postrm中還原檔
+ \0 _& ~5 s3 e1 i. N2 B1 S) J) H. `
! K+ T2 Q2 ^  n, u  嚴格的依賴關係:deb遵循嚴格的依賴關係(於Depends和Pre-Depends指定),可以確保軟體運行所必需的元件。線上安裝的時候會自動安裝所依賴的套裝軟體。卸載時也很重要,比如套裝軟體A依賴於B,當卸載B的時候會提示A依賴於B,卸載掉B的話會導致A不能用,這樣可以確保系統的完整性和穩定性。
3 u+ ^. }0 M1 l. x
. N4 u- A; x8 N* K( i& o  Conflicts、Replaces、Provides等鍵值的存在可以實現衝突提示或替換其他套裝軟體。 0 g1 x0 U) h3 j9 g0 I6 L: `

; q( ?' z0 P- s, {! g" P/ }  完全許可權:由於deb必須以最高許可權root的身份運行,deb可以對系統任何位置進行操作,換句話說,deb擁有對整個系統的完全控制,因此deb安裝包軟體可以實現很多ipa不能實現的功能。
0 }, d& [7 ~" z9 ?4 _. v: a& q6 T; I* f2 c
  相對簡單的獲取方式(線上或離線)和安裝方式,也不用擔心在不同機器上同步會刪掉程式的問題。
3 I1 N! I+ Z; h0 B
" |: J- G( U' j) r/ j  安裝相對簡單:其實無論是哪種安裝包,安裝方法都不算很複雜,只不過deb稍微複雜一些。
7 x3 p5 J6 j! S9 T) v
; o" ~8 C- k  r+ |' b8 l  deb的安裝方法大體有5種:
2 G# c% \; ^% _! i
! R3 P, P- k" j  Cydia或同類APT管理軟體線上安裝,這個是最佳的安裝方式,因為通常無需考慮依賴關係,但缺點是對網路的要求比較高;
7 H9 n7 ^) X5 q; n( @7 @
: S* y# g% C$ p' @) d- Y6 J  命令行中以dpkg-iXXX.deb的形式安裝,好處是可以以通配符一次性安裝多個deb,而且也可以直接看到腳本的運行狀況和安裝成功/失敗的提示資訊,缺點是需要命令行軟體的支援,如Putty/WinSCP的控制臺/iSSH/MobileTerminal,很多人也不熟悉命令行下的操作。另外,安裝完後會不顯示圖示; ) q# F2 m- H& _) H9 Y& B* {' t  w

' ?" p2 V! h2 G2 _* l  放置於AutoInstall目錄重啟安裝。該方法實際是Cydia提供的一個啟動腳本,在每次系統啟動時以dpkg命令安裝AutoInstall目錄下的deb,好處是不需要命令行操作,缺點是必須要重啟,有些甚至要重啟兩次,也會出現不顯示圖示的情況; 6 d" n* f9 U# {& M- V
* n7 b5 `! C5 ~+ k7 n
  利用iFile安裝,好處是圖形化操作,桌面會顯示圖示,缺點是不能一次安裝多個deb;
. Q$ g0 R3 Y) H5 J8 K- Z0 Y7 Y) I6 a4 Z5 `, ?2 k/ D( Z
  用CyderII等軟體來安裝,其原理是類比一個APT軟體管理器來下載相應的deb檔並傳到設備,然後以前面幾種方式來安裝。
) t* g8 {0 r4 K- [  b, t
2 L, w4 B9 K4 k: \: y: _/ \  總體來說,deb的安裝都是依賴於dpkg-i命令來安裝,只不過有些是在命令行下輸入命令,有些是提供了圖形介面。但除了Cydia安裝一種方式之外,其餘幾種安裝方式都存在一些共有的問題:
, E* _. A: K' ~+ k1 R2 A5 W; J
: {3 l3 u" }& T8 i0 R, O8 z$ X  不會自行搜索依賴關係,必須手動提供所依賴的deb; ' j" [7 H$ b. z6 Z8 _# V

6 ^; {7 }1 O1 C. D" W  E; ^$ y  Cydia會讀取安裝腳本裏的一些特殊語句,比如僅在全新安裝時執行而不在升級時執行,安裝完成後重啟SpringBoard或設備等等。 9 @* p+ e, S  {* O3 r

* _( |: L! d" \! x* V  當然了,deb軟體的卸載也比較簡單,有兩種方式:
4 E$ [' S( r, p3 g( c: }$ n! u( Y3 f# R7 e; b4 Z% k& y
  Cydia裏卸載,優點是卸載過程和提示資訊很詳細,全圖形介面操作,同時也提供了重新安裝的選項; & `+ u  B% ~3 j, A0 _
" {* S$ X1 y7 l% A
  以dpkg-rPackage_ID命令或dpkg-PPackage_ID命令來卸載(詳情後面會說); ) G' @, {9 d  a+ h2 I
: o! X! o9 Y* S/ V6 R6 i
  Cydelete來卸載,優點是可以直接在桌面上卸載有圖示的軟體,但對那些沒有圖示的無能為力。
- Z$ ~; m. @7 \  [! i3 U) N
; |+ _8 W/ y- z# _+ K  其實,不管是安裝還是刪除,都可以才要全手動的方法。即,解包deb之後,自己將檔放到相應位置,然後設置許可權等並執行腳本。但這樣有必要麼?
% Z/ G/ T; x. u3 Y2 S
4 [5 y- r9 A2 m& b# ^. a+ g  deb的安裝過程如下:
( \; {( K% `2 Y2 d9 N
8 F  S# X: `$ C$ N  讀取資料庫並鎖定,避免同時有兩個安裝程式在運行
( j8 c& K5 k1 b) F3 X+ }& `1 f! d
$ w( h2 @/ K) e9 p) P  讀取control中的Package(套裝軟體標識)和版本資訊,並搜索資料庫,若已存在,則卸載之後再安裝; 4 {7 j# Y- q7 \& S; N6 l
5 f; I- Z0 f/ e' p' S! }5 D7 ]
  檢查Depends,Pre-Depends,Conflicts和Replaces,如果檢測到已存在Conflicts中存在的軟體,則報錯並終止安裝。如未找到Pre-Depends指定的軟體,則報錯並終止安裝。如找到Replaces中指定的軟體,則卸載之; 6 `9 Z" V9 i5 ]! u0 b

/ y( J6 l8 G5 f# J5 Z! [  將資料寫入/var/lib/dpkg/status檔中; $ V# R) T) e: F- A5 K

1 t* z+ e. D  \  執行preinst腳本(如果有);
& U1 U9 q  W  \* v( e* m$ R! m0 V3 M4 w1 G9 P  {
  解包data.tar.gz,將檔放置於相應位置,並將檔列表寫入/var/lib/dpkg/info/XXX.list;
& m) J; [9 x( W% c3 W7 F
/ F5 c$ X" S: S9 h7 n9 b8 X  運行postinst和extrainst_腳本(如果有);
$ ^2 @3 Q( U) X# S$ e; _1 |/ J; s. h1 n
  如果之前的安裝都沒有出錯,即安裝成功,那麼會在status檔中寫入Status:installokinstalled資訊,否則會寫入其他狀態資料,比如Unpacked(未解包資料)、Failed-config(腳本未能成功執行)、Half-installed(安裝失敗等); 5 j/ K" N9 g/ e' d0 z: \% E
# S4 v( |+ u& k* o" n5 x7 E- I
  重新載入資料庫並解除鎖定。 ) l3 P' B2 V8 }

+ e7 X6 o5 U( B- S  deb的卸載過程如下: + @" X2 B; ?: n  @: D! R2 ~
' u  h' y6 q4 A7 `
  讀取資料庫並鎖定; # q9 _" _: C9 `- [

! M1 F# K- P6 E" U- g# T& V5 ~  根據軟體標識搜尋資料庫; 8 |& O+ d! ~  s+ c, c% y
# S6 K3 x8 s3 ]/ ]; I
  檢查是否有軟體依賴於待卸載的軟體,如果有則提示,並中斷卸載; 5 l) @) S! N& t1 M
, {8 z; }3 o/ g0 W! |1 x
  執行prerm腳本(如果有);
, L- @3 Q# e3 Z# ]4 Q- u
) ^" d+ A0 T; L& c. W* u  讀取/var/lib/dpkg/info/XXX.list檔,並刪除list檔中記錄的全部檔和非空檔夾;
% X0 Z5 _0 o* [- ?, z: V+ F, y' H7 D. D- K9 D: j
  運行postrm腳本; ' i, p7 O- u2 k1 s4 n4 \4 A7 w

  B* p5 X7 E2 w8 I8 w  如果卸載命令是dpkg-r,則保留status中的記錄並改為Status:Notinstalled;如果卸載命令是dpkg-P,則刪除全部資料; 4 D2 u% Q. }9 n& J2 z7 v
5 d# M* |6 a, G# o! {( l. {0 J) O
  如果卸載過程沒有錯誤的話,重新讀取資料庫並解除鎖定。 * D  B+ d0 N3 z! d: J

# K& |' y) W/ O- Z/ Y  由於deb安裝的軟體可能會在運行時在/var/mobile/Documents下放置存檔檔,或在/var/mobile/Library/Preferences下放置設置檔,而這些檔並沒有記錄在list檔裏,所以卸載的時候不會被刪除。 " t( d  B- q% p& R4 l

3 D, R2 H! H, a) b8 G! Y( y  .ipa " I: M" ?6 a- A% v' ^, H* ^
" c! v1 p8 w; `+ g& ~( k
  豐富的資源:AppStore上那麼多資源,apptrackr等網站也提供了很多破解版。
* f; S7 I, [1 P# [3 Q: _" ~. @0 {* _, m
  完善的更新、後期服務。 3 k- P( e) X' `% _3 v

3 h* i( L0 }  L' M  只能使用最小許可權,保障安全性。 5 |, k! m  g2 `$ s

, R. M6 l0 h9 x/ h$ O  不涉及系統級的操作,所以一般不容易造成死機或白蘋果(有些是因為資源消耗太大所以卡死)。 6 v( {6 m* J( L
- h  r5 d% l4 M: B$ g6 e0 M
  便捷的安裝方式,無論是直接在設備上用AppStore安裝,還是用iTunes來同步,抑或是用Installous和91這類第三方軟體來安裝,都是很方便快速的安裝方式。 ; C' w. g0 c0 D; \  H- G
* H$ t7 T- R) i! f7 p" C; W9 J
  超級簡單的卸載方式:還有什麼比只需要點一個X就能卸載更簡單呢? . z5 L* g6 X( [9 z0 ~+ L
: q, u) C, m6 l5 d+ |5 ]
  完全刪除,不會留下任何垃圾檔(如存檔、設置檔等) " v' P% b; U$ I/ k/ s  j& g- q* `
' x* h: W9 P+ T9 p2 F* B
  總體來說破解還是比較容易的,但現在越來越多軟體加入了防破解措施。
) |6 o8 L8 ~/ A& r! V
) w+ K/ E( V! {; {) Q  之前提到過,ipa軟體是被安裝在一個類似于沙盒的環境中,除了能對/var/mobile/Media/DCIM目錄(拍照、截圖存放目錄)進行操作,或是調用壁紙、鈴聲、相機等元件,不能對系統進行任何干涉,這樣在最大程度上保證了系統的穩定運行,也不會干擾其他軟體的正常使用。但問題是,由於ipa軟體的許可權很低,想要對系統進行修改,尤其是應用補丁時,ipa就無能為力了。 4 O) ~# p& O/ ~7 U6 S" k

) j5 d* _+ u# N5 J' U  ipa軟體官方的安裝方式有兩種,一是在AppStore這個軟體中下載安裝,二是用iTunes同步。
" ^% N" x9 M2 C& l! [9 G: M/ w2 O: l7 E+ F# M* o& G, C
  前者的問題主要是網路問題,網速不好很容易安裝失敗;GPRS之類的上網安裝又很耗流量。後者的問題主要是不能在不同系統下使用(包含不同電腦和同一部電腦上的不同系統),在其他系統上同步會抹掉原有的軟體。當然了,iTunes每次同步時間比較長也是經常被人詬病的。尤其是當安裝軟體比較多的時候,每次同步之前的備份需要很長很長時間,這個很噁心(不過可以直接X掉備份操作)。
3 H/ l/ J+ o' H* i
( l( c4 ?! H: B2 \) T  由於以上兩種方式存在一些問題,所以很多人會選擇使用Installous或91來安裝ipa,這也確實是個不錯的選擇。 4 @" N) }# j; V  U0 v$ S
' k/ I; p& o, e" a- f) O2 P8 Q
  Installous一般沒什麼問題,但對部分驗證比較嚴格的ipa處理不是很好。雖然Installous基本能代替iTunes,但畢竟不完全等同。最典型的就是Installous安裝Microsoft官方出的LiveMessenger(正版,非破解版)時不能運行。實際上Installous對很多未破解的正版軟體支援不是很好。 : J/ G+ J! P: Y6 j* _. X3 a7 u

5 H3 q4 i- P6 x1 A, L3 L' I9 w  至於91,經常被人批評。91雖然可以安裝ipa,但除了Installous都有的正版軟體的支援問題外,由於91的安裝機制有缺陷,軟體不能實現多語言,只會使用英文介面,而忽略掉zh_CN.lproj,zh_TW.lproj這些語言包。這對那些用希望使用漢化版的人來說實在是一個悲劇。所以通常是要避免使用91來安裝ipa的。 9 V; G( o  o. K7 ]' R1 S) ^

5 ?. S; ]8 Z/ I! f( r! m2 m  至於卸載,三種方法: 7 V7 _9 o% F7 q2 Z+ m# d$ }' H
3 K( ~# a) T* L1 e) n# v* s
  設備上按住圖示直到開始晃動,點擊圖示左上角的X即可卸載; 1 Q; C, H) }' j) l/ k
' S! G9 K/ z. {& q7 w; ?% y
  於iTunes中取消選中,然後同步 4 h5 T7 M( R3 j  Y5 v0 K
, |3 V5 a3 D( G" I- w3 j. w
  找到/var/mobile/Applications下的相應目錄,強行刪除整個檔夾。這個在前面兩種方法無法使用是可以採用(有時候卸載體積太大的軟體,比如超過1G,因為刪除過程太長導致失去回應並刪除失敗。),但這種方法會造成系統的不穩定。除非是確實碰到了問題,否則強烈建議不要使用。
% [2 I) L$ c1 D8 X; J& \: C9 u. O2 ?3 Q! J, V
  .pxl 6 n" t3 o' M2 i; ~* o4 u

% \& D1 N; G8 {1 q  嚴格來說,pxl格式的資源並不算多,但也不少。現在使用pxl格式的絕大多數都是91的用戶。 / v! C: F" t/ y2 m% x# o
1 {/ G7 H* z* ]3 k* d
  從時效性上來說,很多軟體(主要是AppStore上的)一被人破解就馬上會被人轉成pxl格式,這樣來說,pxl格式的更新還是不錯的。 ' J' R! f" }5 f" U' q, y+ P' {
" i0 I  y( F4 n, R# h5 Z/ s
  由於91手機助手沒有iTunes同步會抹掉軟體的問題,加上其他一些比較方便的功能,使得很多新手都是從91開始瞭解並熟悉iPhone/iPodTouch的使用。其結果是,pxl格式依賴于91而生存。
5 P- D9 q+ v. L; ]" _* O, E# v$ A
, x( H2 Q; `* e/ }+ d0 O) v  pxl格式的流行也不是歷史的遺物,而是符合市場規律的需求。91助手的便捷的軟體管理方式(尤其是支援WiFi管理),加上免費的旗號,使得pxl格式在新手中很受歡迎。
! \5 r* O, T/ T
5 T- \! z! Z7 Z% A( Z  實際上,pxl格式和deb格式具有的功能完全一樣。雖然pxl不能記錄檔的許可權等資料,但完全可以用腳本來彌補。即是說,pxl格式和deb格式其實是不相伯仲的。而且因為pxl格式的製作並不需要比較少見的Unix環境,尤其是Debian環境,其本身是優於deb格式的。 - i2 Z! M' f% ]: T2 |
/ Y9 d  e" w5 C9 a
  但為什麼現在很多人都經常在說不要使用pxl呢?我個人認為,原因主要有以下幾個:
1 |) u$ B8 B8 l* Q& h' U
$ k" k, P7 s" V4 Q$ `  資源的局限性:除了91公司自己開發的幾個軟體之外,其餘所有軟體都是從deb和ipa轉換而來。如果原版軟體沒破解,pxl無能為力(比如Microsoft官方出的LiveMessenger和Cydia上一眾沒被破解的軟體); 9 `3 ^2 j: y3 R3 j; `" p$ z6 q
9 @' K0 X  N- `3 l5 ~1 j9 ]
  資源時效性:跟上面一點相似,pxl格式大部分是從其他格式轉換而來,跟原版相比總是會慢一些,尤其是當無法破解時,pxl根本就出不來;
. y2 E8 N$ v' z- ^2 [- m: u1 M
4 ]/ W' f$ \9 R  N3 g4 i! e2 Z; U+ i  打包人水準有限:現在很多人都是直接用91助手來打包pxl。對大部分只有一個XXX.app目錄的程式來說一般不會有問題,但若遇見那些對檔許可權等資料有嚴格要求的軟體(比如可執行檔沒有可執行許可權,或是mobile用戶不能改寫root所有的檔等等),或是需要比較複雜的腳本才能運行的軟體,往往pxl製作者並沒有能力去製作一個完善的pxl出來,這樣也導致了許多安裝使用上的問題;
* {- Y" r3 o/ Z4 c! o. C: t0 W( L: t% e7 T7 B7 ?7 w
  安全性:絕大部分人在製作pxl的時候都習慣用chmod-R命令來將整個XXX.app目錄及其中的全部檔和子目錄設為755/775/777許可權,而這種行為會造成一定的安全隱患。關於這些數位的意思請自行搜索相關資料。這裏簡單說明一下。644屬性表示僅有該檔的所有人才可以進行改寫操作,其餘任何人都只能讀取,任何人都不能執行這個檔。755和775是在644的基礎上加入了可執行許可權,755是該檔所在的用戶組的所有人都可以改寫。而777許可權則標識任何人都可以改寫並執行。由於mobile本身是受限帳戶,如果使用777許可權的話,有機會通過這個漏洞來獲取整個系統的控制權。只不過因為iPhone系統相對封閉,也不太有機會造成損失。但採用775和777許可權是不應該的;
- P7 B, R- N6 ~, _9 ^0 {, n' t" G
$ W! y8 H& c9 @1 Y: n7 k  ipa轉pxl的存檔問題:不少人都有這樣的經歷,在遊戲A存檔之後再進遊戲B,存檔B之後再進A,發現A的存檔已經不在了。原因在於,ipa轉換成的pxl軟體,存檔全部是放在/var/mobile/Documents目錄下,而正好有兩個軟體的存檔檔案名相同(最常見的就是data.sav或save.data),互相改寫之後導致不能讀取。這種問題也發生在ipa轉deb上,而且無法解決;
) U( o; h* U- u% l% S& m( e% L  _
  無法完整刪除:卸載pxl格式時,不會刪除存檔檔、配置檔、暫存檔案等資料,長期使用會導致可用空間減少; . w/ ]; F; r+ s% a) ?
% ?5 e. N7 V/ f: ^1 L6 |1 ]
  在部分機型上存在相容問題:有些機器越獄後並沒有將系統分區中的/Applications目錄轉移到/var/stash的用戶分區中。由於系統分區的可用空間很少(默認500MB,通常可用空間不超過50MB),強行往/Applications裏安裝會導致剩餘空間消耗殆盡或安裝失敗。
  z: o' D% A9 N5 _6 ^/ X0 {. \
' n4 s2 {, ?' k  由此可以看出,pxl格式的問題更多不是pxl本身的問題,而是打包者的問題以及安裝方式的缺陷所致。
4 x) T- C! W  R7 ?. ~# }" F# M2 G- n
  另外要指出的是,pxl最大的提供者,91,經常是轉載他人發佈的軟體(包括網友自己購買破解的,或Cydia上直接下載的)然後當作自己發佈的軟體,對版權問題完全不在意,這樣也引起了很多人,尤其是原發佈者的反感。這種赤裸裸的剽竊行為實在是令人不恥。正因為這樣,很多人是因為不爽91而不爽pxl,這實在是冤枉pxl格式本身了。
3 \6 V) l- w! W
1 k4 _. O) f  b* ?+ L# f  總結: 1 ?' \9 P0 L7 d4 L& v+ o
0 U* e2 ^. l  h
  一般的軟體還是儘量用ipa格式,不要使用ipa轉換成的deb或pxl格式,這樣可以確保相容性和安全性。而在系統級的程式(如SBSettings和輸入法),ipa是絕無能力的,那麼最好的選擇還是deb。pxl作為快被淘汰的格式,還是果斷的放棄比較好。
5 ^2 S( M9 s( }) }
; ^5 x4 Q$ n4 ^  至於ipa和deb的安裝方式,ipa的安裝首選iTunes同步和AppStore線上安裝,次選Installous,以保證最佳相容性。deb的安裝首選Cydia線上安裝,次選除91外的其他任何安裝方式。 ) Y& T+ t7 Q2 V, w: W

; e- z8 e2 A! c5 j) t4 Q  G! a  任何情況下都不推薦用91來安裝ipa和deb,因為91的安裝機制並不完善,很容易出問題。
/ H4 Y7 [! V3 P9 ?1 q! z  v* L6 F# n3 i- a/ M

1 l) c! g2 h4 L6 C本文是原樣轉過來的,甚至字體以及顏色都沒有更改。主要是為了方便機友查閱,也好進行更進一步的操作。感謝威鋒網,感謝作者autopear。
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

Archiver|手機版|小黑屋|歡迎光臨 Julybee Club

GMT+8, 2-6-2024 06:05 , Processed in 1.176293 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回復 返回頂部 返回列表