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

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

[複製鏈接]
發表於 12-9-2010 21:46:02 | 顯示全部樓層 |閱讀模式
作者autopear。
$ N7 @  S' u/ ?* P1 D9 k" H; @; J
5 b5 t! X9 I7 F1 _  J  C前言: - R* n  r; K* W) m% Q
+ a' J" {' L: ^, Y* i
  目前iOS平臺上常見的安裝包有三種,deb、ipa和pxl。 " t- O, x+ U5 w1 Z. d
1 I8 x' A2 _6 R5 i2 I$ _$ u% W* _
  其中deb格式是Debian系統(包含Debian和Ubuntu)專屬安裝包格式,配合APT軟體管理系統,成為了當前在Linux下非常流行的一種安裝包。進入2.x時代之後有Cydia作者JayFreeman(saurik)移植到iPhone平臺上,一起的還有APT軟體管理系統。 6 r" z' s+ Y) p  H4 S% r
6 S3 K) n/ n6 e5 y9 x
  而ipa格式則是蘋果在iOS平臺上推出的專屬軟體安裝包,在2.0固件開始才正式使用,是目前iPhone/iPodTouch/iPad平臺上唯一的官方安裝包。
: h" e5 I5 Y  w- e$ }8 C6 q! X6 V: N/ u8 k3 ^5 K: Y& D
  而pxl格式則起源於Mac系統上的pkg安裝包,被廣泛應用於1.x固件時代,曾經是iPhone平臺上唯一的軟體安裝包,現在仍在被91等軟體所使用。
  g5 h1 J8 L; b9 @' N/ h4 J; G$ T% h! ^
  安裝包格式: * E0 H2 ^, V4 Q6 [) D& @# D
& R8 ?/ Y5 P/ H0 U) H
  .deb * Q, w/ i0 p! F
5 y2 r1 P! B: \, s+ V. K
  deb是Unix系統(其實主要是Linux)下的安裝包,基於tar包,因此本身會記錄檔的許可權(讀/寫/可執行)以及所有者/用戶組。
9 Q& P6 O% u3 \/ H0 ?# r1 z& @' w1 n* S
  由於Unix類系統對許可權、所有者、組的嚴格要求,而deb格式安裝包又經常會涉及到系統比較底層的操作,所以許可權等的設置尤其重要。
! m+ \2 f6 e2 D$ D/ j' I6 W6 }
3 h/ b' S3 F% [: Q1 ]& X3 n  deb包本身有三部分組成:
* s  V; b  y( ^7 I
0 \1 h( m5 F3 M# {% i  資料包,包含實際安裝的程式資料,檔案名為data.tar.XXX;
' P4 ~- r7 l4 Z& s1 U! R$ u% D9 ?- m! g0 b* z  c
  安裝資訊及控制腳本包,包含deb的安裝說明,標識,腳本等,檔案名為control.tar.gz; 4 v9 U9 S7 f" `+ ?- S2 P
" y. L5 R" i5 o& k% ~" f6 R) a- J# M
  最後一個是deb檔的一些二進位資料,包括檔頭等資訊,一般看不到,在某些軟體中打開可以看到。 6 R% u9 c# W/ l4 _' z! i* k( R
0 x$ H" w- N: z/ |8 J; r: y
  deb本身可以使用不同的壓縮方式。tar格式並不是一種壓縮格式,而是直接把分散的檔和目錄集合在一起,並記錄其許可權等資料資訊。之前提到過的data.tar.XXX,這裏XXX就是經過壓縮後的尾碼名。deb默認使用的壓縮格式為gzip格式,所以最常見的就是data.tar.gz。常有的壓縮格式還有bzip2和lzma,其中lzma壓縮率最高,但壓縮需要的CPU資源和時間都比較長。 # d& X* G0 x* x0 P! U2 ]3 M) [
" H/ J$ u& G" P, {9 K; }/ P
  data.tar.gz包含的是實際安裝的程式資料,而在安裝過程中,該包裏的資料會被直接解壓到根目錄(即/),因此在打包之前需要根據檔所在位置設置好相應的檔/目錄樹。 % Y  z$ |- M+ |
( h7 N% `7 G* S! u& p8 [
  而control.tar.gz則包含了一個deb安裝的時候所需要的控制資訊。一般有5個檔: 5 u, S: e  \! {' Z% K* ]
) H1 }4 p& \1 m: O; @$ n
  control,用了記錄軟體標識,版本號,平臺,依賴資訊等資料;
6 H' Z. ?3 s( y$ K  A  a/ u6 q
/ m0 l4 P! R2 Y4 q* V! h8 T! Y  preinst,在解包data.tar.gz前運行的腳本;
! a* U* q4 C6 ~' ~- J& Q$ i7 e
$ r, m6 F$ K& H2 \: F$ O  postinst,在解包資料後運行的腳本; % s+ S" o* b3 e! {# ^
: ^* m- G* V8 K, Y
  prerm,卸載時,在刪除檔之前運行的腳本;
- \8 W. w3 o% k, M- }  O# j" @6 v/ o4 V
  postrm,在刪除檔之後運行的腳本;
5 D% L. s6 [3 V" x- W  u5 g
' r5 F0 H  x9 A$ k  在Cydia系統中,Cydia的作者Saurik另外添加了一個腳本,extrainst_,作用與postinst類似。
/ B9 x# A4 L) E! x: D# v3 N( I  ~2 s1 Y, w: p1 o* c
  .ipa
' A5 `3 m5 X+ f9 E: v; t# o) [9 e6 Y, t
  使用過MacOS的人可能都知道,Mac下的軟體大部分都只有一個.app目錄,裏面包含了程式全部資源和可執行檔。簡單來說,Mac下的軟體就像是Windows下的綠色軟體一樣,解壓後即可使用,不需要安裝,卸載的話也只用刪除程式檔即可(這裏不涉及pkg格式安裝包)。而ipa格式可以視為這種.app軟體的衍生物。 / X. C1 c2 w  u6 j0 A& M
/ ]! Q- m: Q. |4 X9 q
  ipa檔實質是一個zip壓縮包(不是rar或7z包),包含3個元件: ; {% F0 J3 }( o1 q  l# X: W9 W+ O
/ M- v; `( L0 U% ^# B! X& o
  payload目錄下的.app目錄,這個是軟體的主程序;
: r& k+ c& c5 ]; n. _' A' }4 s# W0 @! ^% N* x' v( ?
  iTunesArtwork,實質是一個無尾碼名的png圖片,用來在iTunes中顯示圖示; ( Z) w9 k$ s$ Q# {5 ]- z

/ j* [+ Q; ]/ }0 s" h  iTunesMetadata.plist,記錄購買者資訊、售價等資料。
( V! W  O: X4 @$ k! J( `) G2 M
) w$ {1 d/ [; V- A( h  C+ A3 X0 |  由於zip包不能記錄許可權和所有者等資訊,所以蘋果規定了ipa的安裝方式,即全部ipa都會解包安裝在/var/mobile/Applications目錄下,全部檔和目錄的所有者及用戶組均設為mobile(ID為501),主程序(可執行檔)的許可權設為0755(所有人都可以執行,但只有所有者可以修改),可執行檔在plist中定義。全部目錄許可權設為0755,而其他所有檔都設為0644(僅所有者可以修改,其餘人只允許讀取,全部人都不允許執行)。
0 N; D$ x" \4 E' b( x, b3 T  o$ N5 c  k3 B. D( ]0 i
  ipa解包後並非直接放置於Applications目錄下,而是放在一串由隨機碼構成的目錄下,其作用在於,只允許這個軟體運行在一個特定的沙盒(Sandbox)中,不能干擾其他軟體。因此那串隨機碼目錄下,除了ipa本身的三個組件之外,還有三個目錄:
1 ], H2 ?0 Q0 ?3 S  A- d) i
) V2 I% X  @5 n4 p4 A" x  Library,一般是用了儲存設置檔等資料;
8 d/ H1 D3 _# c4 _* T
7 y7 L/ x1 n8 E* @  Documents,存儲資料,多用了保存存檔;
7 ]* X1 X5 Q7 U7 `3 T: D# t9 K% m! o, [" w# i9 W- j
  tmp,暫存檔案夾。
  j2 t& J7 K' d
6 X1 C% I) m5 I/ ?! h) i! ]  m1 p  由於這個軟體只能在這個特定的目錄下運行(當然了,部分程式會調用系統的通訊錄、相機等元件,但仍然是受限制的),從而保證了整個系統的安全性和穩定性。
- k' r5 h! D: w1 T3 o. m5 @( G& w4 U; n/ k! e4 u
  由於Unix系統下對許可權的規定相當嚴格,所以“越權”的行為是絕對不允許的。舉個例子,mobile用戶無權刪除root所有的檔,因為root的許可權高於mobile。所以有些人在修改ipa安裝後的檔時,比如進行漢化或者修改存檔,發現不能刪除乾淨軟體,或不能保存,這是因為刪除時不能刪除root所有的檔,程式本身也無法對root所有的存檔檔進行寫入操作。
0 v9 `1 L6 x% d) e& |: V4 Z+ n: Y& F
0 q- K+ j5 b# r6 _2 O  .pxl
' i3 {+ D8 V1 J. U- `* d" v! k, k
! z- E) [7 F0 b$ g# u  pxl格式在1.x時代是iPhone平臺上唯一的安裝格式,原因是那時候還沒有Cydia這樣的APT管理軟體,蘋果官方也沒有推出AppStore。由於在1.x時代積累了大量人氣,在接下來的AppStore時代中,pxl格式以其相對簡易的打包和安裝方式,仍然佔據了很大一部分市場。但隨著Installer的停止開發,iBrickr等軟體停止更新,目前唯一還在堅持使用pxl格式的就只剩下91一家了。 & O6 H  u% d( X) d
$ F% U" w1 \2 L# d1 Y
  pxl安裝包通常包含3個組件:
3 K' F0 z  m6 U; ?5 {: |. V" N. Q% g+ f
  PxlPkg.plist記錄程式檔的存放位置、所有者、許可權以及軟體標識等資訊;
& d) w  n$ `& R: y' c# k' l
* v4 p4 l: D- T4 B( q& `" w  PkgScript文件夾,存放安裝和卸載腳本;
3 Z" p4 Z4 t. i4 Z! s6 J
. [2 i" z+ P8 A8 M  M  程式檔。 % j2 W, k6 L" G7 E, ^

% l& }. ~. J0 `, u1 z4 e  PxlPkg.plist檔的開頭通常是CFBundleIdentifier,記錄著軟體的唯一標識,以和其他軟體進行區分。RDPxlPackageVersion則記錄軟體版本。RDPxlPackageFireware被用來記錄可以運行的固件版本。其餘還有一些鍵值是用來記錄軟體介紹、網址、作者資訊等資料。
( J3 Y3 S# u, M' J" y- l
* N- B  S( R# Y8 c  除了軟體標識、軟體版本和可用固件版本以外,PxlPkg.plist的核心部分就是RDPxlPackageFiles和RDPxlPackagePostflight兩項。RDPxlPackageFiles記錄了程式檔應該被複製到的路徑,並提供了是否覆蓋的參數:overwrite。而RDPxlPackagePostflight則記錄程式檔應該被賦予的所有者和許可權,分別以chown和chmod命令來實現。另外,對於含有安裝/卸載腳本的pxl來說,還會以sh命令執行相應的腳本Postflight和Preremove。
" Q9 b. ]( B6 I% Y4 q. }3 l0 B" j
  PkgScript通常包含兩個檔,安裝後執行的腳本Postflight和卸載前執行的腳本Preremove,這兩個腳本就是標準的LinuxShellScript,以sh命令執行。
! x& L: a3 j  W- M, S6 T" j
# m2 m  N2 o7 d5 l  安裝包的特點: 2 E) O7 ~/ e9 S. m( i
7 E* v4 j$ \; t; g
  .deb ) a- @7 Z3 d9 R, i& \3 C

7 D% W8 H9 ^9 F0 V# K2 O' w  豐富的資源:Cydia上本身就不少,更何況任何格式的安裝包都可以轉換為deb。 0 `# l, I+ S+ x$ [1 t
, a* y" p1 n! H" P4 b) j2 i
  相對方便的線上購買模式:CydiaStore,不過儘管沒有AppStore的5台設備的限制,但對國內用戶來說,付款方式比較困難。
( u0 X1 |: }4 V5 E% O) E) E5 R, }5 L
  破解難度較大,沒有使用AppStore的驗證方式,所以必須將驗證和防破解措施加入程式裏面,這樣就比較難破解,對軟體發展者來說是個好事。 ) v7 D3 f" l& i# |# Z" Z
1 p) J0 x, {: s- O( n1 S
  完善的Unix檔系統支援:無需以命令設置檔的許可權、所有者和用戶組(當然也可以以腳本來設置) ( X" }2 ^6 l; r4 h, |5 e

( S, D  K0 Y' \6 a! |  完善的腳本支援:5個腳本依照安裝和卸載的先後順序執行,可以提供更多選擇。比如備份還原操作,可以在preinst中備份檔案,而在postrm中還原檔 ; c* `, i6 M$ W" O5 r

  ?/ z. N+ D+ H  嚴格的依賴關係:deb遵循嚴格的依賴關係(於Depends和Pre-Depends指定),可以確保軟體運行所必需的元件。線上安裝的時候會自動安裝所依賴的套裝軟體。卸載時也很重要,比如套裝軟體A依賴於B,當卸載B的時候會提示A依賴於B,卸載掉B的話會導致A不能用,這樣可以確保系統的完整性和穩定性。 2 l9 c+ e7 X. Q1 h# w( c! [! J
* O; G, J$ K& i" u6 p6 L
  Conflicts、Replaces、Provides等鍵值的存在可以實現衝突提示或替換其他套裝軟體。
  |1 x& k+ T* x' C& N& s( Z
8 d4 X6 I$ I1 y: o3 a  完全許可權:由於deb必須以最高許可權root的身份運行,deb可以對系統任何位置進行操作,換句話說,deb擁有對整個系統的完全控制,因此deb安裝包軟體可以實現很多ipa不能實現的功能。 0 C5 B- d* Q" I3 W. d
, a; i6 o# |" ~" f! ~+ L* x
  相對簡單的獲取方式(線上或離線)和安裝方式,也不用擔心在不同機器上同步會刪掉程式的問題。 % @7 n: @) m4 n

( L9 d; D; p: l) Y+ l. x. d  {  安裝相對簡單:其實無論是哪種安裝包,安裝方法都不算很複雜,只不過deb稍微複雜一些。
/ c% b# }% g7 g6 a1 h) [4 b
2 Z- `% G+ l1 o3 S* u3 X  deb的安裝方法大體有5種:
8 k- |" e1 m7 R, i# K) j4 k2 B
% K0 b: v# j8 t6 G7 h2 T  Cydia或同類APT管理軟體線上安裝,這個是最佳的安裝方式,因為通常無需考慮依賴關係,但缺點是對網路的要求比較高;
0 q; Z3 ~9 Q4 U- G7 J, g  f. m
  S, ]( l8 C6 W1 ^2 v) Q, J/ y  @  命令行中以dpkg-iXXX.deb的形式安裝,好處是可以以通配符一次性安裝多個deb,而且也可以直接看到腳本的運行狀況和安裝成功/失敗的提示資訊,缺點是需要命令行軟體的支援,如Putty/WinSCP的控制臺/iSSH/MobileTerminal,很多人也不熟悉命令行下的操作。另外,安裝完後會不顯示圖示; : b+ x7 k- T" J" y" t

  K+ z/ C8 X  F  O2 [  放置於AutoInstall目錄重啟安裝。該方法實際是Cydia提供的一個啟動腳本,在每次系統啟動時以dpkg命令安裝AutoInstall目錄下的deb,好處是不需要命令行操作,缺點是必須要重啟,有些甚至要重啟兩次,也會出現不顯示圖示的情況;
- J" Y  Y9 z# u; V4 @1 }
$ f* c; X  M, |/ z9 ]  利用iFile安裝,好處是圖形化操作,桌面會顯示圖示,缺點是不能一次安裝多個deb;
1 m3 l) R9 B7 N: T2 ~# }  p
' p0 _7 D6 E0 D1 x/ h3 {  用CyderII等軟體來安裝,其原理是類比一個APT軟體管理器來下載相應的deb檔並傳到設備,然後以前面幾種方式來安裝。
# {" A  B* n' `+ K# R+ A  x% V0 t6 ^" j1 s! F, E
  總體來說,deb的安裝都是依賴於dpkg-i命令來安裝,只不過有些是在命令行下輸入命令,有些是提供了圖形介面。但除了Cydia安裝一種方式之外,其餘幾種安裝方式都存在一些共有的問題:
! [* s; s; L' E# V
4 g1 C& E8 y+ O  不會自行搜索依賴關係,必須手動提供所依賴的deb;
7 G( P: L" P6 ]3 g
# i! I, K2 y* o  Cydia會讀取安裝腳本裏的一些特殊語句,比如僅在全新安裝時執行而不在升級時執行,安裝完成後重啟SpringBoard或設備等等。 - X9 v# W. |$ y! s
; ]2 G7 P( x6 F: I* n
  當然了,deb軟體的卸載也比較簡單,有兩種方式: % r- G0 m# [4 j3 v1 `9 R
2 {, M/ U" f7 f- G
  Cydia裏卸載,優點是卸載過程和提示資訊很詳細,全圖形介面操作,同時也提供了重新安裝的選項;
$ p) x# W5 ~( r' S. V
; U8 y+ M) D" r2 O+ a  以dpkg-rPackage_ID命令或dpkg-PPackage_ID命令來卸載(詳情後面會說);
6 ]( H7 O' Z5 f- S6 w7 V7 U0 M
$ ?6 R. ?2 n3 X/ U( p  Cydelete來卸載,優點是可以直接在桌面上卸載有圖示的軟體,但對那些沒有圖示的無能為力。
# Q* _% W6 @" A/ l
+ d* i9 ^. `% J- t% D- [- |' _, Y  其實,不管是安裝還是刪除,都可以才要全手動的方法。即,解包deb之後,自己將檔放到相應位置,然後設置許可權等並執行腳本。但這樣有必要麼? 4 _; O5 n; Z  r+ i0 S6 X

+ U! ?) h% F. @0 D/ x7 C+ ?  deb的安裝過程如下: / k9 b& Z; u; s

' h" h3 k0 I; U0 `5 J  讀取資料庫並鎖定,避免同時有兩個安裝程式在運行
& a& i; c; \/ e5 T3 g- q1 }0 D' i: Y3 k0 ^5 h
  讀取control中的Package(套裝軟體標識)和版本資訊,並搜索資料庫,若已存在,則卸載之後再安裝; % h5 i+ p1 I# M1 |' h4 s

  f' v* x5 C, Y  檢查Depends,Pre-Depends,Conflicts和Replaces,如果檢測到已存在Conflicts中存在的軟體,則報錯並終止安裝。如未找到Pre-Depends指定的軟體,則報錯並終止安裝。如找到Replaces中指定的軟體,則卸載之; ) B: v% W) @5 I5 m. m
) p4 u9 Y( z& S3 p3 I
  將資料寫入/var/lib/dpkg/status檔中; : X! n; D0 C8 |0 i* E$ }

+ X$ G' e' |' d. K% x& B: t8 e  Y  執行preinst腳本(如果有);
9 A/ \- {5 i) G+ i
& x6 P/ r9 X. @4 m- J" K  解包data.tar.gz,將檔放置於相應位置,並將檔列表寫入/var/lib/dpkg/info/XXX.list; ! A. ?; V: x7 ]2 L' Z, Z
3 ~9 N. o1 r! f0 G% W& o% f8 }
  運行postinst和extrainst_腳本(如果有);
9 u2 O4 @" \  }, u8 F8 b# J  K9 p3 |  {1 z9 D; |: {
  如果之前的安裝都沒有出錯,即安裝成功,那麼會在status檔中寫入Status:installokinstalled資訊,否則會寫入其他狀態資料,比如Unpacked(未解包資料)、Failed-config(腳本未能成功執行)、Half-installed(安裝失敗等);
# Y6 B4 q5 a) Y- T- ?- d" q, W- S" n8 F6 f4 V' S  W, |" B. u
  重新載入資料庫並解除鎖定。
: Q8 F3 v  K1 L; A! ?
( \2 ]  e; H% N( U' N! @2 _) d# p: j  deb的卸載過程如下: + I5 B- u& Z$ T7 T
( [$ z, c7 e- o% c
  讀取資料庫並鎖定; ; Q' m5 I4 K% W8 _

# t2 _6 {' Q/ I. G  G  根據軟體標識搜尋資料庫;   D8 s# C; i( X5 {9 l

3 J: e$ l  ?) j# P9 v0 u  檢查是否有軟體依賴於待卸載的軟體,如果有則提示,並中斷卸載;   F7 t- ]8 |$ Q6 o

' ]4 C! \& t) b, B7 z9 y/ s) i$ M! w  執行prerm腳本(如果有);
2 y3 b8 H: U. x) S  ^; i# e4 [2 ~0 ?* G4 B" t* h
  讀取/var/lib/dpkg/info/XXX.list檔,並刪除list檔中記錄的全部檔和非空檔夾;
4 n! I/ k, Y/ ?. l4 @) Z8 ^
' u$ [4 F" s7 |  運行postrm腳本;
7 x  R: I4 p0 j  {9 D
# G0 O- O/ B/ g  Z6 v  如果卸載命令是dpkg-r,則保留status中的記錄並改為Status:Notinstalled;如果卸載命令是dpkg-P,則刪除全部資料;
5 Z: ]; e# I: i7 ^8 }, Z2 U- L# l6 S1 w, X* ~' \
  如果卸載過程沒有錯誤的話,重新讀取資料庫並解除鎖定。 ; k  F. a( \6 b9 i

: h; W1 [! r/ z, T9 A  X  由於deb安裝的軟體可能會在運行時在/var/mobile/Documents下放置存檔檔,或在/var/mobile/Library/Preferences下放置設置檔,而這些檔並沒有記錄在list檔裏,所以卸載的時候不會被刪除。 ) h+ d% \! c" u3 k4 N- l5 f- R

0 d  k0 e. r4 A  K- H/ c$ o  .ipa
+ y( d  O$ T. M+ }. {1 M% p' ?$ ^6 Q7 V0 h7 d: K
  豐富的資源:AppStore上那麼多資源,apptrackr等網站也提供了很多破解版。
4 u7 G, ~& ~! q0 _* K4 o2 _$ O
9 Q2 }+ h9 T7 y2 B+ z, y  完善的更新、後期服務。
% [: a7 o* V, O3 q# ]; a; [- w; ?
  只能使用最小許可權,保障安全性。 * @' w* @! l, |

1 v% @" v8 E4 C: {* h1 E/ ]  不涉及系統級的操作,所以一般不容易造成死機或白蘋果(有些是因為資源消耗太大所以卡死)。
  P! A" F/ l' r+ i0 b9 s; X
# d  e  m* S1 ^9 O- d  便捷的安裝方式,無論是直接在設備上用AppStore安裝,還是用iTunes來同步,抑或是用Installous和91這類第三方軟體來安裝,都是很方便快速的安裝方式。 7 _! r. J+ }7 O
9 H1 c7 Z2 l1 Z$ a: k' }
  超級簡單的卸載方式:還有什麼比只需要點一個X就能卸載更簡單呢?
4 y+ j, m% e( D/ k
, _  i8 W' A7 Y- \0 t! A" F7 f9 Y  完全刪除,不會留下任何垃圾檔(如存檔、設置檔等)
2 @% k" P% O) U6 k' r7 E8 ]1 F6 h/ e, I( W# K
  總體來說破解還是比較容易的,但現在越來越多軟體加入了防破解措施。 & l$ g, k7 u# H

. v( s6 w. |' r  之前提到過,ipa軟體是被安裝在一個類似于沙盒的環境中,除了能對/var/mobile/Media/DCIM目錄(拍照、截圖存放目錄)進行操作,或是調用壁紙、鈴聲、相機等元件,不能對系統進行任何干涉,這樣在最大程度上保證了系統的穩定運行,也不會干擾其他軟體的正常使用。但問題是,由於ipa軟體的許可權很低,想要對系統進行修改,尤其是應用補丁時,ipa就無能為力了。
; E8 p/ x. Y6 E' D$ |: d; g% V6 x' ^
1 D6 h  U0 ?8 u  ipa軟體官方的安裝方式有兩種,一是在AppStore這個軟體中下載安裝,二是用iTunes同步。
, e- I1 M9 y, p  p% Q+ _9 G) U
, l$ [3 C$ t2 E% ?  前者的問題主要是網路問題,網速不好很容易安裝失敗;GPRS之類的上網安裝又很耗流量。後者的問題主要是不能在不同系統下使用(包含不同電腦和同一部電腦上的不同系統),在其他系統上同步會抹掉原有的軟體。當然了,iTunes每次同步時間比較長也是經常被人詬病的。尤其是當安裝軟體比較多的時候,每次同步之前的備份需要很長很長時間,這個很噁心(不過可以直接X掉備份操作)。
/ A9 v0 A# N; J/ x
$ z. b1 O1 z& K' j0 ^" C  由於以上兩種方式存在一些問題,所以很多人會選擇使用Installous或91來安裝ipa,這也確實是個不錯的選擇。 " C2 \% k7 g# P$ z
5 P' v' O2 v+ e# Z+ n' S7 o3 r
  Installous一般沒什麼問題,但對部分驗證比較嚴格的ipa處理不是很好。雖然Installous基本能代替iTunes,但畢竟不完全等同。最典型的就是Installous安裝Microsoft官方出的LiveMessenger(正版,非破解版)時不能運行。實際上Installous對很多未破解的正版軟體支援不是很好。
, K0 G2 z! Z  j9 f( @
: a5 `6 j( [+ k/ }  至於91,經常被人批評。91雖然可以安裝ipa,但除了Installous都有的正版軟體的支援問題外,由於91的安裝機制有缺陷,軟體不能實現多語言,只會使用英文介面,而忽略掉zh_CN.lproj,zh_TW.lproj這些語言包。這對那些用希望使用漢化版的人來說實在是一個悲劇。所以通常是要避免使用91來安裝ipa的。 ( Q6 R# u0 e# r# H1 G( o4 N& k

- U* f  J$ Y: }. `: t7 Y0 y  至於卸載,三種方法:
6 \$ A1 K& \6 h" {* G- Q
0 O' V; ?$ v0 ~" O# d7 `) E  設備上按住圖示直到開始晃動,點擊圖示左上角的X即可卸載; ' t/ [# L2 B! H

9 t( S: v7 ^1 H8 R/ l  於iTunes中取消選中,然後同步 ' n5 @- V. a3 R" O

" j! H! F* z* f  h, w  找到/var/mobile/Applications下的相應目錄,強行刪除整個檔夾。這個在前面兩種方法無法使用是可以採用(有時候卸載體積太大的軟體,比如超過1G,因為刪除過程太長導致失去回應並刪除失敗。),但這種方法會造成系統的不穩定。除非是確實碰到了問題,否則強烈建議不要使用。 2 h+ S6 u2 F: O- ]8 a

  ~' @" z" w, C# @4 l  .pxl
: I6 h2 ]+ d; O7 p. v4 @1 @- @3 o
0 C6 U2 ~: t( o3 f- \( p  嚴格來說,pxl格式的資源並不算多,但也不少。現在使用pxl格式的絕大多數都是91的用戶。
* `! g, f+ V0 a! f0 b0 x4 r7 G; ^; q. Z) D3 X. G- B
  從時效性上來說,很多軟體(主要是AppStore上的)一被人破解就馬上會被人轉成pxl格式,這樣來說,pxl格式的更新還是不錯的。 ( J+ U* s, W7 _( k
+ h! S0 K# \7 b5 F, }( M: S
  由於91手機助手沒有iTunes同步會抹掉軟體的問題,加上其他一些比較方便的功能,使得很多新手都是從91開始瞭解並熟悉iPhone/iPodTouch的使用。其結果是,pxl格式依賴于91而生存。
3 I0 y4 ?- P! v# `( H: z
& M* D3 ^$ g  p" }  pxl格式的流行也不是歷史的遺物,而是符合市場規律的需求。91助手的便捷的軟體管理方式(尤其是支援WiFi管理),加上免費的旗號,使得pxl格式在新手中很受歡迎。 " M# q. o2 ]$ x. C" X" C

0 ~, Y7 Z# ?/ v$ \- m! S  實際上,pxl格式和deb格式具有的功能完全一樣。雖然pxl不能記錄檔的許可權等資料,但完全可以用腳本來彌補。即是說,pxl格式和deb格式其實是不相伯仲的。而且因為pxl格式的製作並不需要比較少見的Unix環境,尤其是Debian環境,其本身是優於deb格式的。 9 j* B9 y+ }$ X0 ]! G5 k- w

0 u6 J  q/ C, O$ h" g. e* Z) _0 ]  但為什麼現在很多人都經常在說不要使用pxl呢?我個人認為,原因主要有以下幾個: % W9 K# l+ X) J$ ]

/ O) _. q: b+ m; {& r3 X' P; w  資源的局限性:除了91公司自己開發的幾個軟體之外,其餘所有軟體都是從deb和ipa轉換而來。如果原版軟體沒破解,pxl無能為力(比如Microsoft官方出的LiveMessenger和Cydia上一眾沒被破解的軟體); , p' _5 p0 t, a+ B8 X# f& V

, {; s1 D' R" Q0 ~. J  資源時效性:跟上面一點相似,pxl格式大部分是從其他格式轉換而來,跟原版相比總是會慢一些,尤其是當無法破解時,pxl根本就出不來; ) }! e, n6 t3 j
1 p" N$ s, ?& W, y1 I
  打包人水準有限:現在很多人都是直接用91助手來打包pxl。對大部分只有一個XXX.app目錄的程式來說一般不會有問題,但若遇見那些對檔許可權等資料有嚴格要求的軟體(比如可執行檔沒有可執行許可權,或是mobile用戶不能改寫root所有的檔等等),或是需要比較複雜的腳本才能運行的軟體,往往pxl製作者並沒有能力去製作一個完善的pxl出來,這樣也導致了許多安裝使用上的問題; 4 `; \- @3 E) H, N

# J/ R& ?; ~, H  安全性:絕大部分人在製作pxl的時候都習慣用chmod-R命令來將整個XXX.app目錄及其中的全部檔和子目錄設為755/775/777許可權,而這種行為會造成一定的安全隱患。關於這些數位的意思請自行搜索相關資料。這裏簡單說明一下。644屬性表示僅有該檔的所有人才可以進行改寫操作,其餘任何人都只能讀取,任何人都不能執行這個檔。755和775是在644的基礎上加入了可執行許可權,755是該檔所在的用戶組的所有人都可以改寫。而777許可權則標識任何人都可以改寫並執行。由於mobile本身是受限帳戶,如果使用777許可權的話,有機會通過這個漏洞來獲取整個系統的控制權。只不過因為iPhone系統相對封閉,也不太有機會造成損失。但採用775和777許可權是不應該的;
5 h2 R- Z* X3 n3 \$ k
5 P# C/ B" P6 k( b. E) k1 w  ipa轉pxl的存檔問題:不少人都有這樣的經歷,在遊戲A存檔之後再進遊戲B,存檔B之後再進A,發現A的存檔已經不在了。原因在於,ipa轉換成的pxl軟體,存檔全部是放在/var/mobile/Documents目錄下,而正好有兩個軟體的存檔檔案名相同(最常見的就是data.sav或save.data),互相改寫之後導致不能讀取。這種問題也發生在ipa轉deb上,而且無法解決;
2 ]8 f  }; y4 i1 T0 \" H) z+ @0 C8 w1 N
  無法完整刪除:卸載pxl格式時,不會刪除存檔檔、配置檔、暫存檔案等資料,長期使用會導致可用空間減少; 4 `' `: e1 a* y% J$ M
! b. C2 V5 S! _  S
  在部分機型上存在相容問題:有些機器越獄後並沒有將系統分區中的/Applications目錄轉移到/var/stash的用戶分區中。由於系統分區的可用空間很少(默認500MB,通常可用空間不超過50MB),強行往/Applications裏安裝會導致剩餘空間消耗殆盡或安裝失敗。 # k  n( g$ t; R" s# X! l$ n) U! Z$ v
/ T2 @; _; W  I% {+ J
  由此可以看出,pxl格式的問題更多不是pxl本身的問題,而是打包者的問題以及安裝方式的缺陷所致。 - s# Z, x, y* [/ ^

, P6 W6 Y6 v; w$ R3 a& W$ b  另外要指出的是,pxl最大的提供者,91,經常是轉載他人發佈的軟體(包括網友自己購買破解的,或Cydia上直接下載的)然後當作自己發佈的軟體,對版權問題完全不在意,這樣也引起了很多人,尤其是原發佈者的反感。這種赤裸裸的剽竊行為實在是令人不恥。正因為這樣,很多人是因為不爽91而不爽pxl,這實在是冤枉pxl格式本身了。
8 ^  t; E& ~+ C( }7 i# q* B, ~0 R4 S1 G/ {+ ~, {6 c
  總結:
% \% z/ e1 E( a# Z
- ]2 J' S, f# `$ f: I% p( i2 r  一般的軟體還是儘量用ipa格式,不要使用ipa轉換成的deb或pxl格式,這樣可以確保相容性和安全性。而在系統級的程式(如SBSettings和輸入法),ipa是絕無能力的,那麼最好的選擇還是deb。pxl作為快被淘汰的格式,還是果斷的放棄比較好。 $ m0 k: Y9 O. y; A. e9 ~% X. i

5 s* P) q% @  Z8 Y& ^  至於ipa和deb的安裝方式,ipa的安裝首選iTunes同步和AppStore線上安裝,次選Installous,以保證最佳相容性。deb的安裝首選Cydia線上安裝,次選除91外的其他任何安裝方式。 . b: U& h4 X9 G; H  c

8 C( a, c, z$ M& J5 r+ {  任何情況下都不推薦用91來安裝ipa和deb,因為91的安裝機制並不完善,很容易出問題。
# q5 q( |2 s& o! I( d
+ B0 u. h! r3 C/ ~) U7 ~3 w8 B/ Q& h  g
本文是原樣轉過來的,甚至字體以及顏色都沒有更改。主要是為了方便機友查閱,也好進行更進一步的操作。感謝威鋒網,感謝作者autopear。
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 14-9-2026 20:29 , Processed in 0.175023 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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