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

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

[複製鏈接]
發表於 12-9-2010 21:46:02 | 顯示全部樓層 |閱讀模式
作者autopear。! o- h" O0 O* H, J2 }
) m# K- }0 ~, L3 N7 S5 s+ M% z
前言: 9 `3 y! \2 N: F: h( m$ n

) ^/ S8 a( A7 n3 @  目前iOS平臺上常見的安裝包有三種,deb、ipa和pxl。
! U3 S1 A) G' P; V& ~) {( ]& i) |# r; F" X) `1 E) n
  其中deb格式是Debian系統(包含Debian和Ubuntu)專屬安裝包格式,配合APT軟體管理系統,成為了當前在Linux下非常流行的一種安裝包。進入2.x時代之後有Cydia作者JayFreeman(saurik)移植到iPhone平臺上,一起的還有APT軟體管理系統。 : _9 k" u0 g  w, E: X8 Y

; A7 {* i% G9 O' g8 _: l9 _( z  而ipa格式則是蘋果在iOS平臺上推出的專屬軟體安裝包,在2.0固件開始才正式使用,是目前iPhone/iPodTouch/iPad平臺上唯一的官方安裝包。 ; R' z6 X, T- q7 q6 }/ q8 h' m

2 y- e, J$ H  _* b  而pxl格式則起源於Mac系統上的pkg安裝包,被廣泛應用於1.x固件時代,曾經是iPhone平臺上唯一的軟體安裝包,現在仍在被91等軟體所使用。 % q4 v" ]) i* J5 z8 R6 J+ B, D2 X
9 Q( p4 K4 F3 R: g  |' {
  安裝包格式: ( B- H; _1 u5 Q6 m2 ~3 A" F5 c5 i/ D
2 S  Q  _8 }$ ^7 R
  .deb ! B# J4 y6 D1 u, U3 i' ]
9 T; s4 [2 ]: [0 |" K# g. f! m2 \$ g
  deb是Unix系統(其實主要是Linux)下的安裝包,基於tar包,因此本身會記錄檔的許可權(讀/寫/可執行)以及所有者/用戶組。   R% Q2 I- N! t8 @) k* |3 k/ |
& K; g  X+ L9 ?7 N' v3 [, a
  由於Unix類系統對許可權、所有者、組的嚴格要求,而deb格式安裝包又經常會涉及到系統比較底層的操作,所以許可權等的設置尤其重要。
3 M& O7 a" O1 K/ Q5 X( [5 v
& O& \' ^. s( N) g+ x! N  deb包本身有三部分組成:
! M. ^/ {. r4 o' o; c) A; t8 `! {( Y$ H
  資料包,包含實際安裝的程式資料,檔案名為data.tar.XXX;
( d* ?& T8 a  ?1 o7 m& E4 G4 _4 r" x- X3 s
  安裝資訊及控制腳本包,包含deb的安裝說明,標識,腳本等,檔案名為control.tar.gz; 3 F: {3 x) ^; |2 z0 _

+ D5 m9 G4 f" q  ^  最後一個是deb檔的一些二進位資料,包括檔頭等資訊,一般看不到,在某些軟體中打開可以看到。 8 G) U$ X7 C: a1 j

$ `$ E6 A, c% B8 Y2 g4 Q  deb本身可以使用不同的壓縮方式。tar格式並不是一種壓縮格式,而是直接把分散的檔和目錄集合在一起,並記錄其許可權等資料資訊。之前提到過的data.tar.XXX,這裏XXX就是經過壓縮後的尾碼名。deb默認使用的壓縮格式為gzip格式,所以最常見的就是data.tar.gz。常有的壓縮格式還有bzip2和lzma,其中lzma壓縮率最高,但壓縮需要的CPU資源和時間都比較長。
6 \% D1 e" O7 G' W6 y: q
: r) V! D8 `5 E. i7 x/ P  data.tar.gz包含的是實際安裝的程式資料,而在安裝過程中,該包裏的資料會被直接解壓到根目錄(即/),因此在打包之前需要根據檔所在位置設置好相應的檔/目錄樹。
; W0 K. T5 V/ v
% H- U0 A# `. e  而control.tar.gz則包含了一個deb安裝的時候所需要的控制資訊。一般有5個檔:
9 X3 v1 N  I/ J% T# T1 e# G+ E6 t6 x, v
  control,用了記錄軟體標識,版本號,平臺,依賴資訊等資料;
; h# X& w) M2 _, B/ {4 `8 @, y' A6 N
  preinst,在解包data.tar.gz前運行的腳本;
2 I! o2 f( R7 |
: ^! D/ K9 I, B2 J  postinst,在解包資料後運行的腳本; " q, |1 O  P. S- T  h: O

; {$ R# t% @3 m- a2 C) n0 d- j  prerm,卸載時,在刪除檔之前運行的腳本;
0 z! [" M; Q3 i+ v* Y+ z8 J/ \) x( X
  postrm,在刪除檔之後運行的腳本;
4 x0 f2 B% ?5 V5 z  L6 t
, M$ s/ x( `. f+ t2 b) k1 I  在Cydia系統中,Cydia的作者Saurik另外添加了一個腳本,extrainst_,作用與postinst類似。   I/ h7 u% l7 z4 C9 X; B7 F, @

2 v+ s4 ^% h( ~  .ipa
' i! {0 h% I; }0 H/ Y0 _7 [! S# A" r
  使用過MacOS的人可能都知道,Mac下的軟體大部分都只有一個.app目錄,裏面包含了程式全部資源和可執行檔。簡單來說,Mac下的軟體就像是Windows下的綠色軟體一樣,解壓後即可使用,不需要安裝,卸載的話也只用刪除程式檔即可(這裏不涉及pkg格式安裝包)。而ipa格式可以視為這種.app軟體的衍生物。
! w% h" e) X$ L+ g& R* s: O* \# ~+ Z( H/ j; W6 k
  ipa檔實質是一個zip壓縮包(不是rar或7z包),包含3個元件: " q, ~' U" I5 {0 a; k" f" Z

" j* q) ]+ f! g/ C# x  payload目錄下的.app目錄,這個是軟體的主程序; % F4 o3 S" [$ T2 }9 C$ [
( I% p9 G% o  b5 E/ f; A
  iTunesArtwork,實質是一個無尾碼名的png圖片,用來在iTunes中顯示圖示;
; O6 |% z5 G  g
+ t2 u/ ^6 P/ G+ c  O! O' H  iTunesMetadata.plist,記錄購買者資訊、售價等資料。
! I0 T2 k3 q' H/ e
0 N8 F8 i% I2 c( g1 _; u" s  由於zip包不能記錄許可權和所有者等資訊,所以蘋果規定了ipa的安裝方式,即全部ipa都會解包安裝在/var/mobile/Applications目錄下,全部檔和目錄的所有者及用戶組均設為mobile(ID為501),主程序(可執行檔)的許可權設為0755(所有人都可以執行,但只有所有者可以修改),可執行檔在plist中定義。全部目錄許可權設為0755,而其他所有檔都設為0644(僅所有者可以修改,其餘人只允許讀取,全部人都不允許執行)。 ' U4 ]. X/ G- F' l  F5 t
# L/ m# u" W$ H1 S
  ipa解包後並非直接放置於Applications目錄下,而是放在一串由隨機碼構成的目錄下,其作用在於,只允許這個軟體運行在一個特定的沙盒(Sandbox)中,不能干擾其他軟體。因此那串隨機碼目錄下,除了ipa本身的三個組件之外,還有三個目錄: 2 t6 |2 a( k, \. B* u7 @

! z0 o4 T  f$ l  z+ T! C% J  Library,一般是用了儲存設置檔等資料; " l" D  S0 F: ^+ q4 m

" N0 \4 u% u5 c. J: Q3 h  Documents,存儲資料,多用了保存存檔; # C3 j( K% l( Q1 D- [6 j

9 T, j+ `+ _# X1 i7 Q4 X  tmp,暫存檔案夾。 0 N' x/ c/ t' [

4 ]4 K5 G5 H  p8 @' G/ P: ]+ h  由於這個軟體只能在這個特定的目錄下運行(當然了,部分程式會調用系統的通訊錄、相機等元件,但仍然是受限制的),從而保證了整個系統的安全性和穩定性。 ) v! c) P+ q3 e3 U) Q: q
5 T! g% |( M2 Q* R
  由於Unix系統下對許可權的規定相當嚴格,所以“越權”的行為是絕對不允許的。舉個例子,mobile用戶無權刪除root所有的檔,因為root的許可權高於mobile。所以有些人在修改ipa安裝後的檔時,比如進行漢化或者修改存檔,發現不能刪除乾淨軟體,或不能保存,這是因為刪除時不能刪除root所有的檔,程式本身也無法對root所有的存檔檔進行寫入操作。
0 R2 O" `: y4 V5 |- w- @! u. x6 _
. K  w' T6 @0 r7 ]$ w  .pxl
3 C/ f* |1 v# ]3 f1 k4 q. l" ~3 {' b# |2 A9 |* s" I1 k
  pxl格式在1.x時代是iPhone平臺上唯一的安裝格式,原因是那時候還沒有Cydia這樣的APT管理軟體,蘋果官方也沒有推出AppStore。由於在1.x時代積累了大量人氣,在接下來的AppStore時代中,pxl格式以其相對簡易的打包和安裝方式,仍然佔據了很大一部分市場。但隨著Installer的停止開發,iBrickr等軟體停止更新,目前唯一還在堅持使用pxl格式的就只剩下91一家了。
. G( t% ?) F5 J: u/ R
$ k& D/ c: m% V# b7 [2 d) _  pxl安裝包通常包含3個組件: - c( c+ j& H4 K& L  c
7 Z% ^: v3 `# l7 T. r3 Z  `
  PxlPkg.plist記錄程式檔的存放位置、所有者、許可權以及軟體標識等資訊;
7 H6 N( S- E. X0 [5 }5 l) u- b/ ]5 i: X! e) O' z1 i
  PkgScript文件夾,存放安裝和卸載腳本; 5 h, [0 t1 y, n/ G; B/ F( G

7 x' Z8 q1 U1 N$ f, W5 t4 I9 K  程式檔。 . z8 c: C* C7 Z8 Z
8 t) G( X9 T: |
  PxlPkg.plist檔的開頭通常是CFBundleIdentifier,記錄著軟體的唯一標識,以和其他軟體進行區分。RDPxlPackageVersion則記錄軟體版本。RDPxlPackageFireware被用來記錄可以運行的固件版本。其餘還有一些鍵值是用來記錄軟體介紹、網址、作者資訊等資料。 5 a! O+ D- W+ K/ ~5 ^

! o9 n% u8 x# Q) t' @9 n9 |8 ~  除了軟體標識、軟體版本和可用固件版本以外,PxlPkg.plist的核心部分就是RDPxlPackageFiles和RDPxlPackagePostflight兩項。RDPxlPackageFiles記錄了程式檔應該被複製到的路徑,並提供了是否覆蓋的參數:overwrite。而RDPxlPackagePostflight則記錄程式檔應該被賦予的所有者和許可權,分別以chown和chmod命令來實現。另外,對於含有安裝/卸載腳本的pxl來說,還會以sh命令執行相應的腳本Postflight和Preremove。 4 K9 Y  r8 V/ ~4 k. {0 G
0 o; S) D1 f! C2 y$ }4 B  x5 f
  PkgScript通常包含兩個檔,安裝後執行的腳本Postflight和卸載前執行的腳本Preremove,這兩個腳本就是標準的LinuxShellScript,以sh命令執行。 / R) @+ h- L$ q5 `. G) N( n3 I6 ]" G

; Z$ v2 g" Q1 P& L6 X0 t  安裝包的特點:
- F  n* r$ S9 L. Q! G
: j: {: C# y# Y& w1 ^$ Q  .deb
" n% E: q; P+ |) y7 \2 T" j. ]9 y+ }$ g0 u7 i' f9 f
  豐富的資源:Cydia上本身就不少,更何況任何格式的安裝包都可以轉換為deb。
: d6 k1 @2 K% g" ~+ h1 R- V
+ x" a$ [1 c' G  相對方便的線上購買模式:CydiaStore,不過儘管沒有AppStore的5台設備的限制,但對國內用戶來說,付款方式比較困難。
2 d* [( f/ i/ Y( y0 ^+ g& V0 \
+ ]9 e# W3 G) x; x6 ~2 I, g  破解難度較大,沒有使用AppStore的驗證方式,所以必須將驗證和防破解措施加入程式裏面,這樣就比較難破解,對軟體發展者來說是個好事。
3 W5 R) B! K  M$ s, F# c/ G) h# b+ \9 a
  完善的Unix檔系統支援:無需以命令設置檔的許可權、所有者和用戶組(當然也可以以腳本來設置)
! G7 C/ T2 w; I3 W/ b& M& `
% Y. v  L" E5 M9 \  完善的腳本支援:5個腳本依照安裝和卸載的先後順序執行,可以提供更多選擇。比如備份還原操作,可以在preinst中備份檔案,而在postrm中還原檔
8 A" j  T3 D( I# d' J6 j$ u: c1 A7 I. S# c7 p8 C
  嚴格的依賴關係:deb遵循嚴格的依賴關係(於Depends和Pre-Depends指定),可以確保軟體運行所必需的元件。線上安裝的時候會自動安裝所依賴的套裝軟體。卸載時也很重要,比如套裝軟體A依賴於B,當卸載B的時候會提示A依賴於B,卸載掉B的話會導致A不能用,這樣可以確保系統的完整性和穩定性。 * O6 S. O' T+ Z1 U* Z

# a4 X) J1 P& Q1 ?  Conflicts、Replaces、Provides等鍵值的存在可以實現衝突提示或替換其他套裝軟體。
; H/ ^6 N9 @; N4 k- ~* r
- E% N3 [5 N* n( y6 ~  完全許可權:由於deb必須以最高許可權root的身份運行,deb可以對系統任何位置進行操作,換句話說,deb擁有對整個系統的完全控制,因此deb安裝包軟體可以實現很多ipa不能實現的功能。 7 N8 m+ }: {8 L) \+ e- S  W

9 U& s5 ~0 j1 s5 M7 N4 T: e  相對簡單的獲取方式(線上或離線)和安裝方式,也不用擔心在不同機器上同步會刪掉程式的問題。 - ]6 A) y* P( \6 L

: a% G! F( A5 @& H( z  安裝相對簡單:其實無論是哪種安裝包,安裝方法都不算很複雜,只不過deb稍微複雜一些。
" i1 q3 D  M2 q" d7 e2 p
8 I1 z  Y1 e7 S+ e, }2 ^  deb的安裝方法大體有5種:
' W. e3 E7 I) \  q. y0 d; B! P! y% T7 y8 f( u
  Cydia或同類APT管理軟體線上安裝,這個是最佳的安裝方式,因為通常無需考慮依賴關係,但缺點是對網路的要求比較高; 2 E. @% K7 s7 j8 F8 A' f# ?8 W; E) v
1 B4 q5 @3 d: l& {8 n
  命令行中以dpkg-iXXX.deb的形式安裝,好處是可以以通配符一次性安裝多個deb,而且也可以直接看到腳本的運行狀況和安裝成功/失敗的提示資訊,缺點是需要命令行軟體的支援,如Putty/WinSCP的控制臺/iSSH/MobileTerminal,很多人也不熟悉命令行下的操作。另外,安裝完後會不顯示圖示; % X+ O' g9 I$ p) M4 v2 a8 o
2 i0 k9 v: F3 N% w9 I
  放置於AutoInstall目錄重啟安裝。該方法實際是Cydia提供的一個啟動腳本,在每次系統啟動時以dpkg命令安裝AutoInstall目錄下的deb,好處是不需要命令行操作,缺點是必須要重啟,有些甚至要重啟兩次,也會出現不顯示圖示的情況; # P  t1 F% F) D6 F7 B

  h9 F8 I, s. N0 {. T* {  利用iFile安裝,好處是圖形化操作,桌面會顯示圖示,缺點是不能一次安裝多個deb;   B. z- e# }; L6 G8 c; g" w9 E

: t2 b- e$ f" T+ x% u" [  用CyderII等軟體來安裝,其原理是類比一個APT軟體管理器來下載相應的deb檔並傳到設備,然後以前面幾種方式來安裝。
/ Z7 Y! {% Q" H
9 m1 S  V& {9 C  總體來說,deb的安裝都是依賴於dpkg-i命令來安裝,只不過有些是在命令行下輸入命令,有些是提供了圖形介面。但除了Cydia安裝一種方式之外,其餘幾種安裝方式都存在一些共有的問題:
  A; S, M( |/ ^9 Z% `
7 H3 o9 T: e3 Q  不會自行搜索依賴關係,必須手動提供所依賴的deb;
0 V  a6 X3 X- b( l6 t$ Z9 Y: }/ M
# ]+ i  P1 E0 i# ~  Cydia會讀取安裝腳本裏的一些特殊語句,比如僅在全新安裝時執行而不在升級時執行,安裝完成後重啟SpringBoard或設備等等。
- R! J6 l1 t2 l% C: z6 p& U
7 a2 o* ?7 y/ z+ P, q  R  當然了,deb軟體的卸載也比較簡單,有兩種方式: 6 O6 _2 }/ {) E8 ~
: v: U$ n2 Z2 j- d# s- S7 C
  Cydia裏卸載,優點是卸載過程和提示資訊很詳細,全圖形介面操作,同時也提供了重新安裝的選項; 3 g! }: c" o/ S$ l

+ g1 ^6 \7 f, I" A3 r9 H3 b; r  K5 m( t  以dpkg-rPackage_ID命令或dpkg-PPackage_ID命令來卸載(詳情後面會說); * O8 g4 q+ v  b& ?+ m5 {% _3 k
& }8 x, w1 \# H( C6 x% p! K0 @2 E
  Cydelete來卸載,優點是可以直接在桌面上卸載有圖示的軟體,但對那些沒有圖示的無能為力。
2 h* u  x: ]# h- @
+ c. f+ @+ M# r9 Z' x  其實,不管是安裝還是刪除,都可以才要全手動的方法。即,解包deb之後,自己將檔放到相應位置,然後設置許可權等並執行腳本。但這樣有必要麼? " }: L) e" `/ N2 L" ^

' A% G3 U8 N, @% n# \6 M! @7 q; ~- R  deb的安裝過程如下:
& M2 M8 f: t1 [; Z; p8 O6 M! l# q9 g. Y4 X
  讀取資料庫並鎖定,避免同時有兩個安裝程式在運行 . V) T8 L: ?  s5 E6 [' H0 s& ^

7 b8 O8 x8 m( O! M5 ?/ f6 `/ m  讀取control中的Package(套裝軟體標識)和版本資訊,並搜索資料庫,若已存在,則卸載之後再安裝;
* R: I, W* G  L9 U4 G6 F5 G* j3 o1 v" V! Y( N! V2 g8 z
  檢查Depends,Pre-Depends,Conflicts和Replaces,如果檢測到已存在Conflicts中存在的軟體,則報錯並終止安裝。如未找到Pre-Depends指定的軟體,則報錯並終止安裝。如找到Replaces中指定的軟體,則卸載之; - ~! o1 _7 \5 z3 K5 i! k6 {) o

7 @9 t: h& v6 w2 i' Q+ `. u' O, o! X  將資料寫入/var/lib/dpkg/status檔中;
; ~/ }+ g0 n, E; @+ y0 N% R4 Q$ ]1 _
  執行preinst腳本(如果有); % Y9 D8 ^8 ^- I8 e. _' e
$ e& X6 F! N7 o6 r$ T% N
  解包data.tar.gz,將檔放置於相應位置,並將檔列表寫入/var/lib/dpkg/info/XXX.list;
) w9 E1 {; A- I) `; M# v$ ~: u
# Z4 @# \4 T1 k9 O( `  運行postinst和extrainst_腳本(如果有);
! B! B0 j' A5 s: ^. j  l! V& S* h* U5 v" d7 v# a' n  j% S8 Z
  如果之前的安裝都沒有出錯,即安裝成功,那麼會在status檔中寫入Status:installokinstalled資訊,否則會寫入其他狀態資料,比如Unpacked(未解包資料)、Failed-config(腳本未能成功執行)、Half-installed(安裝失敗等);
, e; X& W5 O' E/ I- A; l
2 f  q% v) O! x! i  重新載入資料庫並解除鎖定。
6 _; e" |/ Q8 M1 V0 k- F1 j4 v3 J9 v
  deb的卸載過程如下: / k5 R/ N# [. z: l7 m/ K
# A) }. b  Y. W, f1 Y# ^
  讀取資料庫並鎖定; $ m7 i+ X6 t. j% }$ O* L
0 e. Z8 x( v; I: R7 J! Y! @4 V
  根據軟體標識搜尋資料庫; $ e/ k7 K" b; `0 D; z! Y

/ E: w! P8 t/ ?3 A4 ?  檢查是否有軟體依賴於待卸載的軟體,如果有則提示,並中斷卸載; 5 u/ Y, P9 j( w$ x/ ?: H2 j
) u2 m: v  n9 q- O* p; V
  執行prerm腳本(如果有);
0 h# c! P- p! H: y& E: A$ ?6 @) ~8 O% Y1 R5 X% F
  讀取/var/lib/dpkg/info/XXX.list檔,並刪除list檔中記錄的全部檔和非空檔夾;
4 l6 t0 I6 B; }" p" w1 Q1 K- J$ u4 Q
  運行postrm腳本;
) p8 J) h5 f6 Y( {1 s0 k" u6 _( c8 V5 I+ F; [
  如果卸載命令是dpkg-r,則保留status中的記錄並改為Status:Notinstalled;如果卸載命令是dpkg-P,則刪除全部資料;
, P* ]4 n! b' g9 L
: ^- Y( C. @) j  如果卸載過程沒有錯誤的話,重新讀取資料庫並解除鎖定。 - H/ V7 o. B2 i) d3 F
8 L+ o* a; v( h0 ]- E, I! _2 \
  由於deb安裝的軟體可能會在運行時在/var/mobile/Documents下放置存檔檔,或在/var/mobile/Library/Preferences下放置設置檔,而這些檔並沒有記錄在list檔裏,所以卸載的時候不會被刪除。
, W5 A( b. x- d8 `4 X
6 J. f6 Z2 I, B  .ipa * Q) {0 w& J5 O7 `
* J+ P1 {" _9 K0 G
  豐富的資源:AppStore上那麼多資源,apptrackr等網站也提供了很多破解版。
3 h2 `5 m" Q: W
3 O, X6 X1 U, c3 G! ~  完善的更新、後期服務。 0 L& N9 T3 ~9 Y6 u
. E- Z* c: g; ~3 N
  只能使用最小許可權,保障安全性。 3 H3 d" z; i5 w

5 K4 J9 t, g' _3 I  不涉及系統級的操作,所以一般不容易造成死機或白蘋果(有些是因為資源消耗太大所以卡死)。
, v) u, k# L0 d0 Z
1 h" R/ N# G& l! F6 |  便捷的安裝方式,無論是直接在設備上用AppStore安裝,還是用iTunes來同步,抑或是用Installous和91這類第三方軟體來安裝,都是很方便快速的安裝方式。 4 i6 n& Q0 e  s6 @$ }3 p8 X

% z: s! E, i" O2 h1 ?2 e: y7 ~  超級簡單的卸載方式:還有什麼比只需要點一個X就能卸載更簡單呢? 7 N+ W% N/ ]: F/ ^& [% N( ?
/ \3 C8 G8 Y' Z0 c
  完全刪除,不會留下任何垃圾檔(如存檔、設置檔等) / D5 E2 M" v0 u: B  g6 @! _
* Y; Q+ M; O# j  {+ m& y
  總體來說破解還是比較容易的,但現在越來越多軟體加入了防破解措施。
& i$ b1 j+ i4 \/ P8 ?2 H7 T" E5 a% ]$ u! }( {4 O
  之前提到過,ipa軟體是被安裝在一個類似于沙盒的環境中,除了能對/var/mobile/Media/DCIM目錄(拍照、截圖存放目錄)進行操作,或是調用壁紙、鈴聲、相機等元件,不能對系統進行任何干涉,這樣在最大程度上保證了系統的穩定運行,也不會干擾其他軟體的正常使用。但問題是,由於ipa軟體的許可權很低,想要對系統進行修改,尤其是應用補丁時,ipa就無能為力了。
* |, Q0 K, a  _/ E  z! e, e: B& F7 z
  ipa軟體官方的安裝方式有兩種,一是在AppStore這個軟體中下載安裝,二是用iTunes同步。 $ n' m, X) J, _" U

1 n8 E  J5 t% Q+ h) d4 `7 e  前者的問題主要是網路問題,網速不好很容易安裝失敗;GPRS之類的上網安裝又很耗流量。後者的問題主要是不能在不同系統下使用(包含不同電腦和同一部電腦上的不同系統),在其他系統上同步會抹掉原有的軟體。當然了,iTunes每次同步時間比較長也是經常被人詬病的。尤其是當安裝軟體比較多的時候,每次同步之前的備份需要很長很長時間,這個很噁心(不過可以直接X掉備份操作)。
% X/ t5 K  j& H: P
: ^( E/ l# B* R8 l. B  由於以上兩種方式存在一些問題,所以很多人會選擇使用Installous或91來安裝ipa,這也確實是個不錯的選擇。 - ~( L5 w9 x( J  L

1 v+ ~7 U% c" L! U1 \; j3 h  Installous一般沒什麼問題,但對部分驗證比較嚴格的ipa處理不是很好。雖然Installous基本能代替iTunes,但畢竟不完全等同。最典型的就是Installous安裝Microsoft官方出的LiveMessenger(正版,非破解版)時不能運行。實際上Installous對很多未破解的正版軟體支援不是很好。
+ I7 W5 H1 p, p% |% }" W
0 K9 w, n5 {% ?, T8 v  至於91,經常被人批評。91雖然可以安裝ipa,但除了Installous都有的正版軟體的支援問題外,由於91的安裝機制有缺陷,軟體不能實現多語言,只會使用英文介面,而忽略掉zh_CN.lproj,zh_TW.lproj這些語言包。這對那些用希望使用漢化版的人來說實在是一個悲劇。所以通常是要避免使用91來安裝ipa的。
) O  G! B% X& [7 x# P
4 t7 Q2 W6 v( k4 J+ U  至於卸載,三種方法:
+ u% }& W- F* C: \* k' m& C0 v5 j$ `0 w' {  B
  設備上按住圖示直到開始晃動,點擊圖示左上角的X即可卸載; + v! n8 J  a  c' @7 b

( ^% E' y0 p- @0 M  於iTunes中取消選中,然後同步 + V% ~8 j1 K0 F9 l$ |" f  }5 K
9 `* r7 l" c( h7 I% ]
  找到/var/mobile/Applications下的相應目錄,強行刪除整個檔夾。這個在前面兩種方法無法使用是可以採用(有時候卸載體積太大的軟體,比如超過1G,因為刪除過程太長導致失去回應並刪除失敗。),但這種方法會造成系統的不穩定。除非是確實碰到了問題,否則強烈建議不要使用。 - g6 Y3 ], g3 {# k  {* Y

9 }* y9 S8 @- F; ]/ o  .pxl
) [8 z) [& o8 l1 |7 D; t5 q, B. x7 n
  嚴格來說,pxl格式的資源並不算多,但也不少。現在使用pxl格式的絕大多數都是91的用戶。
% O2 R& f% i5 Z; o8 E7 s/ z9 T, T- X- T, c- w: E9 l6 }
  從時效性上來說,很多軟體(主要是AppStore上的)一被人破解就馬上會被人轉成pxl格式,這樣來說,pxl格式的更新還是不錯的。
$ q: `: m" |" Z9 g& P& P0 ?5 r+ e5 e* B! Z& }
  由於91手機助手沒有iTunes同步會抹掉軟體的問題,加上其他一些比較方便的功能,使得很多新手都是從91開始瞭解並熟悉iPhone/iPodTouch的使用。其結果是,pxl格式依賴于91而生存。
  ?- U% ?: a( t! ~
- V8 D) H* z  H7 ^; V9 `/ h  pxl格式的流行也不是歷史的遺物,而是符合市場規律的需求。91助手的便捷的軟體管理方式(尤其是支援WiFi管理),加上免費的旗號,使得pxl格式在新手中很受歡迎。
/ I6 B  C& ]3 x% R$ R; M. u6 n, T) f1 i1 _6 A
  實際上,pxl格式和deb格式具有的功能完全一樣。雖然pxl不能記錄檔的許可權等資料,但完全可以用腳本來彌補。即是說,pxl格式和deb格式其實是不相伯仲的。而且因為pxl格式的製作並不需要比較少見的Unix環境,尤其是Debian環境,其本身是優於deb格式的。
- T8 X  `2 i2 S6 Z; D
7 e5 H/ C8 _& E8 p  但為什麼現在很多人都經常在說不要使用pxl呢?我個人認為,原因主要有以下幾個: + n/ h$ x/ C. }$ f5 O9 X0 [
8 }# {$ a. L, [8 G+ l# c7 u. S' y/ W
  資源的局限性:除了91公司自己開發的幾個軟體之外,其餘所有軟體都是從deb和ipa轉換而來。如果原版軟體沒破解,pxl無能為力(比如Microsoft官方出的LiveMessenger和Cydia上一眾沒被破解的軟體); 8 C* W& z! }. `1 k& k

+ I$ |: P: O1 p( b4 e/ Y  資源時效性:跟上面一點相似,pxl格式大部分是從其他格式轉換而來,跟原版相比總是會慢一些,尤其是當無法破解時,pxl根本就出不來;
1 Q7 B% ~+ m9 e8 k! ?$ x" W# L3 N% Q# A: ^
  打包人水準有限:現在很多人都是直接用91助手來打包pxl。對大部分只有一個XXX.app目錄的程式來說一般不會有問題,但若遇見那些對檔許可權等資料有嚴格要求的軟體(比如可執行檔沒有可執行許可權,或是mobile用戶不能改寫root所有的檔等等),或是需要比較複雜的腳本才能運行的軟體,往往pxl製作者並沒有能力去製作一個完善的pxl出來,這樣也導致了許多安裝使用上的問題;
- k4 @' h" F7 H. c
/ x8 L: x" [1 }; Z$ N' t- m( M/ u  安全性:絕大部分人在製作pxl的時候都習慣用chmod-R命令來將整個XXX.app目錄及其中的全部檔和子目錄設為755/775/777許可權,而這種行為會造成一定的安全隱患。關於這些數位的意思請自行搜索相關資料。這裏簡單說明一下。644屬性表示僅有該檔的所有人才可以進行改寫操作,其餘任何人都只能讀取,任何人都不能執行這個檔。755和775是在644的基礎上加入了可執行許可權,755是該檔所在的用戶組的所有人都可以改寫。而777許可權則標識任何人都可以改寫並執行。由於mobile本身是受限帳戶,如果使用777許可權的話,有機會通過這個漏洞來獲取整個系統的控制權。只不過因為iPhone系統相對封閉,也不太有機會造成損失。但採用775和777許可權是不應該的;
7 {7 Q# `; d) _5 n
3 l) Q+ |! t. E% P. b  ipa轉pxl的存檔問題:不少人都有這樣的經歷,在遊戲A存檔之後再進遊戲B,存檔B之後再進A,發現A的存檔已經不在了。原因在於,ipa轉換成的pxl軟體,存檔全部是放在/var/mobile/Documents目錄下,而正好有兩個軟體的存檔檔案名相同(最常見的就是data.sav或save.data),互相改寫之後導致不能讀取。這種問題也發生在ipa轉deb上,而且無法解決;
+ u9 X3 v. F: |4 V& i' K# W( m! T. y2 m
  無法完整刪除:卸載pxl格式時,不會刪除存檔檔、配置檔、暫存檔案等資料,長期使用會導致可用空間減少;
& \8 t9 B; u) E1 ^
" t. l* [7 p2 p; Q8 b% s3 _. Q, ^5 n  在部分機型上存在相容問題:有些機器越獄後並沒有將系統分區中的/Applications目錄轉移到/var/stash的用戶分區中。由於系統分區的可用空間很少(默認500MB,通常可用空間不超過50MB),強行往/Applications裏安裝會導致剩餘空間消耗殆盡或安裝失敗。
1 a1 ]2 `& j; {) |# I. ^& A0 b
, F" w1 g! L- D* B! F1 I  由此可以看出,pxl格式的問題更多不是pxl本身的問題,而是打包者的問題以及安裝方式的缺陷所致。
6 S0 c6 [( n8 P6 s1 c7 T# w, A. y/ p5 F6 F9 B  I5 J8 W
  另外要指出的是,pxl最大的提供者,91,經常是轉載他人發佈的軟體(包括網友自己購買破解的,或Cydia上直接下載的)然後當作自己發佈的軟體,對版權問題完全不在意,這樣也引起了很多人,尤其是原發佈者的反感。這種赤裸裸的剽竊行為實在是令人不恥。正因為這樣,很多人是因為不爽91而不爽pxl,這實在是冤枉pxl格式本身了。
/ W" v3 n% z5 S: A$ }: Z" A' L9 K/ ^; f6 A# j
  總結: / D9 [6 L' g8 b' C% C

3 q9 B0 ?" j5 r# f% k, K: j5 n  一般的軟體還是儘量用ipa格式,不要使用ipa轉換成的deb或pxl格式,這樣可以確保相容性和安全性。而在系統級的程式(如SBSettings和輸入法),ipa是絕無能力的,那麼最好的選擇還是deb。pxl作為快被淘汰的格式,還是果斷的放棄比較好。
* h5 s' F' P7 v. _6 W7 w, }4 l& k1 N8 U3 l
  至於ipa和deb的安裝方式,ipa的安裝首選iTunes同步和AppStore線上安裝,次選Installous,以保證最佳相容性。deb的安裝首選Cydia線上安裝,次選除91外的其他任何安裝方式。
3 A; G+ ~, v7 O- n# _' P4 Q  b* T
  任何情況下都不推薦用91來安裝ipa和deb,因為91的安裝機制並不完善,很容易出問題。 " `3 M) k# y9 z

6 k! O0 e' p( O1 A6 |3 q3 M+ e/ w) r+ q2 l6 ?( a
本文是原樣轉過來的,甚至字體以及顏色都沒有更改。主要是為了方便機友查閱,也好進行更進一步的操作。感謝威鋒網,感謝作者autopear。
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 16-6-2026 18:26 , Processed in 0.236411 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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