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

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

[複製鏈接]
發表於 12-9-2010 21:46:02 | 顯示全部樓層 |閱讀模式
作者autopear。
& ~5 F- ~+ X9 g  N" o" Z" k1 o1 z* ~3 J9 A
前言: 5 W' R. ~4 o, m( t, N

1 }3 e/ e% }7 X: J  s& M  目前iOS平臺上常見的安裝包有三種,deb、ipa和pxl。 / J& Y6 @7 D& k$ x7 V

- R2 ?( {& a/ n0 ~  E7 |3 _  其中deb格式是Debian系統(包含Debian和Ubuntu)專屬安裝包格式,配合APT軟體管理系統,成為了當前在Linux下非常流行的一種安裝包。進入2.x時代之後有Cydia作者JayFreeman(saurik)移植到iPhone平臺上,一起的還有APT軟體管理系統。 9 e8 z2 n5 u, k  R8 ]

9 ]9 U  i6 J0 T3 F0 h* t1 e2 D: v  而ipa格式則是蘋果在iOS平臺上推出的專屬軟體安裝包,在2.0固件開始才正式使用,是目前iPhone/iPodTouch/iPad平臺上唯一的官方安裝包。
, @  c5 ]1 m1 U7 @) q8 ]; m! f, F3 Y0 g6 T6 t4 k
  而pxl格式則起源於Mac系統上的pkg安裝包,被廣泛應用於1.x固件時代,曾經是iPhone平臺上唯一的軟體安裝包,現在仍在被91等軟體所使用。 8 W) v1 I9 l8 V8 ?6 n* ^" @

4 d1 [" D) u% G+ L- W  安裝包格式: - B9 M7 j6 v8 _5 I
# p6 A) R/ T! N. b1 i" E: p  M
  .deb 9 X6 H. Y. Q# p5 h% J2 f

3 W5 Z4 r& r9 D5 k; }  deb是Unix系統(其實主要是Linux)下的安裝包,基於tar包,因此本身會記錄檔的許可權(讀/寫/可執行)以及所有者/用戶組。 8 K- a$ T0 T, o7 r6 F
" q' x9 E6 V9 t, e
  由於Unix類系統對許可權、所有者、組的嚴格要求,而deb格式安裝包又經常會涉及到系統比較底層的操作,所以許可權等的設置尤其重要。 ! H( C$ W: L9 f
+ Y8 N. M( W2 d+ X
  deb包本身有三部分組成:
3 Z0 M) b) ]3 m
8 J& @4 I0 l0 O1 b6 ?9 A  資料包,包含實際安裝的程式資料,檔案名為data.tar.XXX;   A: I' A/ F4 a# r# k5 `3 ~" R3 o
0 N8 y3 g# {9 [# U
  安裝資訊及控制腳本包,包含deb的安裝說明,標識,腳本等,檔案名為control.tar.gz; 5 M2 ~* Y7 w* Z
3 v+ f; y* }& z: R+ B9 _8 ?
  最後一個是deb檔的一些二進位資料,包括檔頭等資訊,一般看不到,在某些軟體中打開可以看到。
& w* y& r* E  f/ _  Z; X) k: ~9 g- C! O# F" o
  deb本身可以使用不同的壓縮方式。tar格式並不是一種壓縮格式,而是直接把分散的檔和目錄集合在一起,並記錄其許可權等資料資訊。之前提到過的data.tar.XXX,這裏XXX就是經過壓縮後的尾碼名。deb默認使用的壓縮格式為gzip格式,所以最常見的就是data.tar.gz。常有的壓縮格式還有bzip2和lzma,其中lzma壓縮率最高,但壓縮需要的CPU資源和時間都比較長。
; _4 t( c+ ?+ e" `1 i! h' t: t+ L2 @- h
1 a8 `+ A! K  }$ h) s  data.tar.gz包含的是實際安裝的程式資料,而在安裝過程中,該包裏的資料會被直接解壓到根目錄(即/),因此在打包之前需要根據檔所在位置設置好相應的檔/目錄樹。
# M/ n2 Q0 m# P" L- ^- j% m1 ]% @9 b! [3 ?0 G+ a) y0 [
  而control.tar.gz則包含了一個deb安裝的時候所需要的控制資訊。一般有5個檔: 8 F3 o: J6 J6 o8 l

$ ~0 o5 m- k) k  m$ l8 a  control,用了記錄軟體標識,版本號,平臺,依賴資訊等資料; 8 o& w5 _5 e. g  S0 C  w* ?

6 ~( G7 t& Y6 C  {* m* T  preinst,在解包data.tar.gz前運行的腳本; + X# B$ [3 x3 [) m! B

- z6 i/ F* X8 A  postinst,在解包資料後運行的腳本; 3 _1 A1 o: i& S7 o- W0 n

7 H" j/ _& O* D  prerm,卸載時,在刪除檔之前運行的腳本;
8 w0 [; o" B' P
  R+ Y( t% j" W  postrm,在刪除檔之後運行的腳本; 3 N) P+ r. G' g* l+ Y4 I
( p0 o4 j- H9 N, n/ E6 m
  在Cydia系統中,Cydia的作者Saurik另外添加了一個腳本,extrainst_,作用與postinst類似。 & d  X& O# I9 t1 z: q4 _

- g) I! x- O: n6 N  .ipa 5 `! @2 O6 T( d8 Z9 S
: v- A- t1 ?+ w# b
  使用過MacOS的人可能都知道,Mac下的軟體大部分都只有一個.app目錄,裏面包含了程式全部資源和可執行檔。簡單來說,Mac下的軟體就像是Windows下的綠色軟體一樣,解壓後即可使用,不需要安裝,卸載的話也只用刪除程式檔即可(這裏不涉及pkg格式安裝包)。而ipa格式可以視為這種.app軟體的衍生物。 6 W9 S0 j* j0 `# R

; R  v; m, _* v3 p  ipa檔實質是一個zip壓縮包(不是rar或7z包),包含3個元件:
9 C- X" y3 Q" ^  ^, A* a/ X9 C9 K4 u5 h) G0 ~* Z
  payload目錄下的.app目錄,這個是軟體的主程序; ! m% W& Y* m) ~7 `4 U
9 c/ Q* v' r/ p( b9 s0 W" [6 x
  iTunesArtwork,實質是一個無尾碼名的png圖片,用來在iTunes中顯示圖示; 5 \% S4 J) e. T! V
; X/ a- F2 p! \$ `& r5 N$ @
  iTunesMetadata.plist,記錄購買者資訊、售價等資料。
/ S5 F, c$ r& E/ }& ~7 G1 j
% C6 l: |0 A: V) K& m  由於zip包不能記錄許可權和所有者等資訊,所以蘋果規定了ipa的安裝方式,即全部ipa都會解包安裝在/var/mobile/Applications目錄下,全部檔和目錄的所有者及用戶組均設為mobile(ID為501),主程序(可執行檔)的許可權設為0755(所有人都可以執行,但只有所有者可以修改),可執行檔在plist中定義。全部目錄許可權設為0755,而其他所有檔都設為0644(僅所有者可以修改,其餘人只允許讀取,全部人都不允許執行)。 8 u) R( r5 F( v/ L" ~: u/ u* Q( }/ Z

9 y. W9 L: I% m; y4 x  ipa解包後並非直接放置於Applications目錄下,而是放在一串由隨機碼構成的目錄下,其作用在於,只允許這個軟體運行在一個特定的沙盒(Sandbox)中,不能干擾其他軟體。因此那串隨機碼目錄下,除了ipa本身的三個組件之外,還有三個目錄:
1 h- x1 l4 m8 {* m. J/ ^/ N; {" d( ]0 V* g
  Library,一般是用了儲存設置檔等資料;
" V6 L, Q- j* E+ I+ }! h7 M' j: j0 r1 U
  Documents,存儲資料,多用了保存存檔; ) n- [2 e* G3 p$ u; s# ]

1 E7 F5 j& r: V9 n9 d' Z- B  tmp,暫存檔案夾。 & O- p  f2 n5 c; L7 a" f
8 n5 \( P/ U8 u8 L: n# b2 r
  由於這個軟體只能在這個特定的目錄下運行(當然了,部分程式會調用系統的通訊錄、相機等元件,但仍然是受限制的),從而保證了整個系統的安全性和穩定性。
! s* u5 p1 A, q# k% o' X& M# h+ W
! h4 ?" g" k! L9 H  由於Unix系統下對許可權的規定相當嚴格,所以“越權”的行為是絕對不允許的。舉個例子,mobile用戶無權刪除root所有的檔,因為root的許可權高於mobile。所以有些人在修改ipa安裝後的檔時,比如進行漢化或者修改存檔,發現不能刪除乾淨軟體,或不能保存,這是因為刪除時不能刪除root所有的檔,程式本身也無法對root所有的存檔檔進行寫入操作。
7 J7 o' f- I" t: {0 T( n0 [9 O3 o/ o' Q6 {
  .pxl
4 {9 i; q0 b8 l" V: c) g6 C' V1 \4 ?
  H4 k9 l4 O6 S2 i3 ~9 S5 U  pxl格式在1.x時代是iPhone平臺上唯一的安裝格式,原因是那時候還沒有Cydia這樣的APT管理軟體,蘋果官方也沒有推出AppStore。由於在1.x時代積累了大量人氣,在接下來的AppStore時代中,pxl格式以其相對簡易的打包和安裝方式,仍然佔據了很大一部分市場。但隨著Installer的停止開發,iBrickr等軟體停止更新,目前唯一還在堅持使用pxl格式的就只剩下91一家了。
2 z& q8 X& I5 \3 ^+ V8 N2 q3 F$ j6 C; U5 `( z3 ~
  pxl安裝包通常包含3個組件:
, {1 q) Z. Q" T) B0 N
3 I$ l: m7 L1 g' H  PxlPkg.plist記錄程式檔的存放位置、所有者、許可權以及軟體標識等資訊;   s% z3 }8 t, ?% H6 e% G$ x! o
/ V% h. E: y  F& h- Z, U9 `
  PkgScript文件夾,存放安裝和卸載腳本; 5 @  i5 w' Z; D

6 l. K/ A$ [# Z. J  程式檔。
# X7 g' A  m; R* k1 u* K
0 f- H+ ^- j" Z  PxlPkg.plist檔的開頭通常是CFBundleIdentifier,記錄著軟體的唯一標識,以和其他軟體進行區分。RDPxlPackageVersion則記錄軟體版本。RDPxlPackageFireware被用來記錄可以運行的固件版本。其餘還有一些鍵值是用來記錄軟體介紹、網址、作者資訊等資料。
: K( ~5 K' J& H% v0 Z) @( a: F5 W* B, O: F# O4 i# I7 }
  除了軟體標識、軟體版本和可用固件版本以外,PxlPkg.plist的核心部分就是RDPxlPackageFiles和RDPxlPackagePostflight兩項。RDPxlPackageFiles記錄了程式檔應該被複製到的路徑,並提供了是否覆蓋的參數:overwrite。而RDPxlPackagePostflight則記錄程式檔應該被賦予的所有者和許可權,分別以chown和chmod命令來實現。另外,對於含有安裝/卸載腳本的pxl來說,還會以sh命令執行相應的腳本Postflight和Preremove。
* x9 G9 p2 |* n" d  x
% L$ r' X- P' ]  PkgScript通常包含兩個檔,安裝後執行的腳本Postflight和卸載前執行的腳本Preremove,這兩個腳本就是標準的LinuxShellScript,以sh命令執行。
: W5 _+ F. Z+ q9 h* T8 y! c
4 l2 G7 E# u/ b+ v0 {4 _/ B, X  安裝包的特點:
' n+ W5 C8 h8 n/ H- O* L" V. O
: z1 P1 T7 B0 Q5 G" S  .deb
: D9 S$ H2 Y  r; ]+ M( y3 @" l. O' X8 K
  豐富的資源:Cydia上本身就不少,更何況任何格式的安裝包都可以轉換為deb。
+ J6 o5 {* c+ `# C+ k. K' c& `' p2 V! J- S
  相對方便的線上購買模式:CydiaStore,不過儘管沒有AppStore的5台設備的限制,但對國內用戶來說,付款方式比較困難。
' `8 d6 ^+ ]: ^, |; k) o# X* W* m9 @, d, d% U7 o! K$ h
  破解難度較大,沒有使用AppStore的驗證方式,所以必須將驗證和防破解措施加入程式裏面,這樣就比較難破解,對軟體發展者來說是個好事。 9 L, }0 {0 n+ y; c% F

: }5 j1 @3 o$ z9 {0 |  b& ]% |( n  完善的Unix檔系統支援:無需以命令設置檔的許可權、所有者和用戶組(當然也可以以腳本來設置)
+ J' [9 ^" j+ }4 O1 A8 ?2 \6 h7 m$ {1 _) `. A
  完善的腳本支援:5個腳本依照安裝和卸載的先後順序執行,可以提供更多選擇。比如備份還原操作,可以在preinst中備份檔案,而在postrm中還原檔 0 Y& r3 Q3 C; u/ ^8 C8 I3 o
" s/ n5 I( `3 ^* v4 \3 d, n  _% v8 Q
  嚴格的依賴關係:deb遵循嚴格的依賴關係(於Depends和Pre-Depends指定),可以確保軟體運行所必需的元件。線上安裝的時候會自動安裝所依賴的套裝軟體。卸載時也很重要,比如套裝軟體A依賴於B,當卸載B的時候會提示A依賴於B,卸載掉B的話會導致A不能用,這樣可以確保系統的完整性和穩定性。
* `. _* [5 r2 Y0 K  F7 k$ ]: s9 [9 M, j, A* l* A* e( g0 J: O5 o" m' A, u
  Conflicts、Replaces、Provides等鍵值的存在可以實現衝突提示或替換其他套裝軟體。
8 }- J1 |7 T% n! p( O' z) b
0 Z6 D( s2 w9 u9 P  完全許可權:由於deb必須以最高許可權root的身份運行,deb可以對系統任何位置進行操作,換句話說,deb擁有對整個系統的完全控制,因此deb安裝包軟體可以實現很多ipa不能實現的功能。
3 ?- }  ~4 e/ F0 F' f" L! C' G) ?  p  [- r: u0 L$ C
  相對簡單的獲取方式(線上或離線)和安裝方式,也不用擔心在不同機器上同步會刪掉程式的問題。
# l4 @9 m2 H' d3 V  C1 x* x1 d7 `3 E8 l. Z2 s
  安裝相對簡單:其實無論是哪種安裝包,安裝方法都不算很複雜,只不過deb稍微複雜一些。
- }/ C8 P  F. [, P4 u( b! o. t, s2 m
  deb的安裝方法大體有5種: ( z5 i$ ^8 {, C3 H: U' u8 w
& m: I0 b: O3 A) S+ B
  Cydia或同類APT管理軟體線上安裝,這個是最佳的安裝方式,因為通常無需考慮依賴關係,但缺點是對網路的要求比較高;
" ^& `1 M  V" r0 L/ O: \7 c& x6 B% l0 C9 X: C9 z2 M; E. ^9 ]2 Q$ n
  命令行中以dpkg-iXXX.deb的形式安裝,好處是可以以通配符一次性安裝多個deb,而且也可以直接看到腳本的運行狀況和安裝成功/失敗的提示資訊,缺點是需要命令行軟體的支援,如Putty/WinSCP的控制臺/iSSH/MobileTerminal,很多人也不熟悉命令行下的操作。另外,安裝完後會不顯示圖示;
! p; L; ~3 @1 U  g% k9 Q; [/ M/ O" K( t6 H
9 ~# k) v+ R) F5 ]) C8 d  放置於AutoInstall目錄重啟安裝。該方法實際是Cydia提供的一個啟動腳本,在每次系統啟動時以dpkg命令安裝AutoInstall目錄下的deb,好處是不需要命令行操作,缺點是必須要重啟,有些甚至要重啟兩次,也會出現不顯示圖示的情況; * J- v- q6 a1 e- H
( }" i# O. ^: g: f2 z: t/ W; [( x/ S
  利用iFile安裝,好處是圖形化操作,桌面會顯示圖示,缺點是不能一次安裝多個deb;
6 C& [7 f$ W* x1 W3 S3 s5 a- B  Y; e/ h$ @2 F
  用CyderII等軟體來安裝,其原理是類比一個APT軟體管理器來下載相應的deb檔並傳到設備,然後以前面幾種方式來安裝。 ( l# j/ U8 {$ T& n! a% x
9 E: S: N2 O2 k/ B  z6 a& V' _0 e
  總體來說,deb的安裝都是依賴於dpkg-i命令來安裝,只不過有些是在命令行下輸入命令,有些是提供了圖形介面。但除了Cydia安裝一種方式之外,其餘幾種安裝方式都存在一些共有的問題:
! i! l7 S1 }) ~# t5 h5 F* u& i% R" R) m1 P$ \" t# w% h1 T
  不會自行搜索依賴關係,必須手動提供所依賴的deb; 9 ]( _5 |2 F8 S. g5 [& ?
- x) d6 U0 Y8 m5 n8 p
  Cydia會讀取安裝腳本裏的一些特殊語句,比如僅在全新安裝時執行而不在升級時執行,安裝完成後重啟SpringBoard或設備等等。 $ I' Z0 `) y3 y% n$ r
( i0 w8 V# E* W: c5 E
  當然了,deb軟體的卸載也比較簡單,有兩種方式: % R4 `& X+ D3 ?9 a
& |$ O  H  _( h, o: \% q- G8 ?
  Cydia裏卸載,優點是卸載過程和提示資訊很詳細,全圖形介面操作,同時也提供了重新安裝的選項;
9 W4 U# l9 ]. b7 c4 _+ W' i8 s
+ o; {8 Q% L3 P  以dpkg-rPackage_ID命令或dpkg-PPackage_ID命令來卸載(詳情後面會說);
8 @& X9 i  ^) C- [$ t) b& I9 B# @: ^3 V' e
  Cydelete來卸載,優點是可以直接在桌面上卸載有圖示的軟體,但對那些沒有圖示的無能為力。 - w/ r2 {* X- c. Q4 D
# X; l; f1 K$ G0 }. K$ i8 U
  其實,不管是安裝還是刪除,都可以才要全手動的方法。即,解包deb之後,自己將檔放到相應位置,然後設置許可權等並執行腳本。但這樣有必要麼?
" {2 F/ p4 m0 [- e9 H8 s! [
$ f2 ]. I. R; N6 g" T+ B. ?8 M( }* p  deb的安裝過程如下: & I& ~; {) M1 S6 O2 f) o
2 w; v) C! `) m
  讀取資料庫並鎖定,避免同時有兩個安裝程式在運行
$ a& E) |$ j5 F' R9 U- k. w! _: i% g+ [5 w& s9 b2 ~
  讀取control中的Package(套裝軟體標識)和版本資訊,並搜索資料庫,若已存在,則卸載之後再安裝; + ~" e' p$ C+ ?9 u% l/ U$ u9 D& c
4 f2 g, F1 |4 P# x% t8 \! G  d) n
  檢查Depends,Pre-Depends,Conflicts和Replaces,如果檢測到已存在Conflicts中存在的軟體,則報錯並終止安裝。如未找到Pre-Depends指定的軟體,則報錯並終止安裝。如找到Replaces中指定的軟體,則卸載之;
: B0 N' I* d  l: l3 i/ K6 A
% h. ]9 o" b0 ~  將資料寫入/var/lib/dpkg/status檔中;
$ z7 ?* O8 ^) P
$ r/ P+ w( ^" q  執行preinst腳本(如果有);
% S0 ~4 z' {7 q! j3 r3 }
8 C2 Y! s+ r5 X; b, n  解包data.tar.gz,將檔放置於相應位置,並將檔列表寫入/var/lib/dpkg/info/XXX.list; , M' R2 m+ a3 D8 z, F

1 G. K" c' P6 L# r/ d) b) P8 A4 l8 ?3 Q8 ?  運行postinst和extrainst_腳本(如果有); / C* c, G6 y( h: o+ J# \0 `

/ P; q. g; h- v  如果之前的安裝都沒有出錯,即安裝成功,那麼會在status檔中寫入Status:installokinstalled資訊,否則會寫入其他狀態資料,比如Unpacked(未解包資料)、Failed-config(腳本未能成功執行)、Half-installed(安裝失敗等);
  }# M1 e. L2 _9 O5 d  L  _7 d) `" @4 S
  重新載入資料庫並解除鎖定。
, ?* x- Z) U9 ?0 m' Z
$ u; B( C$ k; ^% M$ p  deb的卸載過程如下:
* a2 }- w3 p6 ^3 r8 g$ i
0 U. P! V0 w$ W/ M6 H2 t% w  讀取資料庫並鎖定; , c- u5 U& W: i& c0 @- B3 M# s

# z, M# o0 e/ [& X  h  根據軟體標識搜尋資料庫;
; K$ s  A* s2 _& {5 E2 J" z: N, `( h
  檢查是否有軟體依賴於待卸載的軟體,如果有則提示,並中斷卸載;
% e$ V+ w) j" {2 {( H' g4 p# C; T* B; L
  執行prerm腳本(如果有); * M8 \, a" A/ t$ ~  j1 i# e( H

$ T% J, |2 x! ^' h3 m  讀取/var/lib/dpkg/info/XXX.list檔,並刪除list檔中記錄的全部檔和非空檔夾;
; E& e; ]6 r( V' u6 L& |3 x, m5 h
' c! |! Q% W4 L9 g( n4 i& ~: E  運行postrm腳本; , P+ O: L% s5 Y  `
* m# U" _/ e6 Q+ O, ]- M
  如果卸載命令是dpkg-r,則保留status中的記錄並改為Status:Notinstalled;如果卸載命令是dpkg-P,則刪除全部資料;
! q' n, e4 G3 V! G" t
* U. a5 a5 g* m& H) D  如果卸載過程沒有錯誤的話,重新讀取資料庫並解除鎖定。
! q8 i0 }. e9 L3 X6 [( _2 w! a1 ~! q) z* M3 H0 k7 y# z
  由於deb安裝的軟體可能會在運行時在/var/mobile/Documents下放置存檔檔,或在/var/mobile/Library/Preferences下放置設置檔,而這些檔並沒有記錄在list檔裏,所以卸載的時候不會被刪除。   ]9 x, [- K* k! c9 s. _+ h; j2 @
# U' \/ m# D0 P! n1 L4 ]1 z3 @
  .ipa 1 [" V% y, t1 ?

( R1 R) g/ Z3 R3 h1 D! J6 ^  豐富的資源:AppStore上那麼多資源,apptrackr等網站也提供了很多破解版。
3 r, u! F; z/ ~; @5 H1 K& @6 n6 n' d4 p: s4 c
  完善的更新、後期服務。 0 N, {# i- \$ I, r% c9 C

8 t8 D7 G$ y- R$ G) Z  只能使用最小許可權,保障安全性。
" f/ e2 u: R% W, G
1 n8 H# X  t6 [# T  不涉及系統級的操作,所以一般不容易造成死機或白蘋果(有些是因為資源消耗太大所以卡死)。 9 y1 F1 X  q. v" {1 ^

, r; N0 E( l6 K% j1 p% X  便捷的安裝方式,無論是直接在設備上用AppStore安裝,還是用iTunes來同步,抑或是用Installous和91這類第三方軟體來安裝,都是很方便快速的安裝方式。 / K5 E; D# j/ ~4 |

. E* E& A( A8 \- q+ s3 ~$ k  超級簡單的卸載方式:還有什麼比只需要點一個X就能卸載更簡單呢? ) Q  R* f" w; |( _. y8 t( I

& K3 L- K, _3 i1 p" v5 Y9 _  完全刪除,不會留下任何垃圾檔(如存檔、設置檔等)
8 h0 M% l! M' X+ V" D+ ]6 i( X9 r7 z/ t$ E
  總體來說破解還是比較容易的,但現在越來越多軟體加入了防破解措施。
8 ^  R0 N9 T% H8 L+ y, Q! \  K
$ D* k7 }8 a/ ~  之前提到過,ipa軟體是被安裝在一個類似于沙盒的環境中,除了能對/var/mobile/Media/DCIM目錄(拍照、截圖存放目錄)進行操作,或是調用壁紙、鈴聲、相機等元件,不能對系統進行任何干涉,這樣在最大程度上保證了系統的穩定運行,也不會干擾其他軟體的正常使用。但問題是,由於ipa軟體的許可權很低,想要對系統進行修改,尤其是應用補丁時,ipa就無能為力了。
" r7 R* m$ q$ O: r; _6 ?+ r. m- L6 K
, R  n4 q! T. z2 o  ipa軟體官方的安裝方式有兩種,一是在AppStore這個軟體中下載安裝,二是用iTunes同步。
0 O# v+ n7 `, b
0 |  Q) d. v. `, h" A. X$ k3 k: i  前者的問題主要是網路問題,網速不好很容易安裝失敗;GPRS之類的上網安裝又很耗流量。後者的問題主要是不能在不同系統下使用(包含不同電腦和同一部電腦上的不同系統),在其他系統上同步會抹掉原有的軟體。當然了,iTunes每次同步時間比較長也是經常被人詬病的。尤其是當安裝軟體比較多的時候,每次同步之前的備份需要很長很長時間,這個很噁心(不過可以直接X掉備份操作)。 8 N6 J2 K! s* Q; G+ Q  l
3 N, ]/ H* a. O2 k( B
  由於以上兩種方式存在一些問題,所以很多人會選擇使用Installous或91來安裝ipa,這也確實是個不錯的選擇。
, X. _8 E" M7 l/ \9 ?8 {
& a8 `$ v$ F2 ?  Installous一般沒什麼問題,但對部分驗證比較嚴格的ipa處理不是很好。雖然Installous基本能代替iTunes,但畢竟不完全等同。最典型的就是Installous安裝Microsoft官方出的LiveMessenger(正版,非破解版)時不能運行。實際上Installous對很多未破解的正版軟體支援不是很好。 , Y; X& f3 E7 N9 Q- V

, y5 I5 Q% d5 N0 ]6 k4 O+ @  至於91,經常被人批評。91雖然可以安裝ipa,但除了Installous都有的正版軟體的支援問題外,由於91的安裝機制有缺陷,軟體不能實現多語言,只會使用英文介面,而忽略掉zh_CN.lproj,zh_TW.lproj這些語言包。這對那些用希望使用漢化版的人來說實在是一個悲劇。所以通常是要避免使用91來安裝ipa的。
6 X: c. G8 n  @8 @6 k" H# n, F$ S7 t4 Y% F3 u
  至於卸載,三種方法: 2 T7 |- [1 s& q# F' s4 f' F! N
6 T, c9 Q6 o" z  `
  設備上按住圖示直到開始晃動,點擊圖示左上角的X即可卸載; " L/ A0 o) ?; V5 T. }3 c
* p2 N( C6 E% F: k5 W: B& \
  於iTunes中取消選中,然後同步
! l! d7 O" {* h- e: S6 M3 P
% G* k6 B6 l! r+ O  找到/var/mobile/Applications下的相應目錄,強行刪除整個檔夾。這個在前面兩種方法無法使用是可以採用(有時候卸載體積太大的軟體,比如超過1G,因為刪除過程太長導致失去回應並刪除失敗。),但這種方法會造成系統的不穩定。除非是確實碰到了問題,否則強烈建議不要使用。
& e9 y$ S) b6 m0 {5 S& Z) E* Y  C1 c2 M
  .pxl
4 G) A! C% |9 l5 c* m+ h
4 k: j5 L( @& s3 m2 T1 D  嚴格來說,pxl格式的資源並不算多,但也不少。現在使用pxl格式的絕大多數都是91的用戶。
- v, X: t! t0 c# B! Y$ N
+ |1 f) r/ }6 @7 \1 k% s) y" ]- t  從時效性上來說,很多軟體(主要是AppStore上的)一被人破解就馬上會被人轉成pxl格式,這樣來說,pxl格式的更新還是不錯的。 7 B9 Y2 r& T; h0 ]: o7 p
( K4 Q5 M0 t# C
  由於91手機助手沒有iTunes同步會抹掉軟體的問題,加上其他一些比較方便的功能,使得很多新手都是從91開始瞭解並熟悉iPhone/iPodTouch的使用。其結果是,pxl格式依賴于91而生存。
. }5 t% @( ]( |; v( p) g5 m! K( N( G  r3 q$ k, ^
  pxl格式的流行也不是歷史的遺物,而是符合市場規律的需求。91助手的便捷的軟體管理方式(尤其是支援WiFi管理),加上免費的旗號,使得pxl格式在新手中很受歡迎。
8 ~$ d0 Y; t" v, l6 _7 D4 Z* r, V
7 n0 S% y7 ]2 F8 X: d; p' E  實際上,pxl格式和deb格式具有的功能完全一樣。雖然pxl不能記錄檔的許可權等資料,但完全可以用腳本來彌補。即是說,pxl格式和deb格式其實是不相伯仲的。而且因為pxl格式的製作並不需要比較少見的Unix環境,尤其是Debian環境,其本身是優於deb格式的。 - p$ ~" K  V- R1 F" v' y- |& G
: c" F# u" T( g, J' p% ^6 j
  但為什麼現在很多人都經常在說不要使用pxl呢?我個人認為,原因主要有以下幾個: 5 c! x' ]/ _# P1 X0 X6 Z
9 w( y5 N+ f- Y
  資源的局限性:除了91公司自己開發的幾個軟體之外,其餘所有軟體都是從deb和ipa轉換而來。如果原版軟體沒破解,pxl無能為力(比如Microsoft官方出的LiveMessenger和Cydia上一眾沒被破解的軟體);
3 O( ?- S+ H- n
3 q8 n+ r) {; y( P% v! {  資源時效性:跟上面一點相似,pxl格式大部分是從其他格式轉換而來,跟原版相比總是會慢一些,尤其是當無法破解時,pxl根本就出不來;
0 C7 d! Q% c/ T# s1 ~  ~+ ?) H1 f2 }8 B
  打包人水準有限:現在很多人都是直接用91助手來打包pxl。對大部分只有一個XXX.app目錄的程式來說一般不會有問題,但若遇見那些對檔許可權等資料有嚴格要求的軟體(比如可執行檔沒有可執行許可權,或是mobile用戶不能改寫root所有的檔等等),或是需要比較複雜的腳本才能運行的軟體,往往pxl製作者並沒有能力去製作一個完善的pxl出來,這樣也導致了許多安裝使用上的問題; 9 ^* z  X! c5 z0 A
  A1 O" Q5 w9 v% s- J3 c! O
  安全性:絕大部分人在製作pxl的時候都習慣用chmod-R命令來將整個XXX.app目錄及其中的全部檔和子目錄設為755/775/777許可權,而這種行為會造成一定的安全隱患。關於這些數位的意思請自行搜索相關資料。這裏簡單說明一下。644屬性表示僅有該檔的所有人才可以進行改寫操作,其餘任何人都只能讀取,任何人都不能執行這個檔。755和775是在644的基礎上加入了可執行許可權,755是該檔所在的用戶組的所有人都可以改寫。而777許可權則標識任何人都可以改寫並執行。由於mobile本身是受限帳戶,如果使用777許可權的話,有機會通過這個漏洞來獲取整個系統的控制權。只不過因為iPhone系統相對封閉,也不太有機會造成損失。但採用775和777許可權是不應該的;
3 j  Q0 J1 X" k1 R: M1 O0 l' V
6 k' F% a/ I9 O, q6 F$ v/ j  ipa轉pxl的存檔問題:不少人都有這樣的經歷,在遊戲A存檔之後再進遊戲B,存檔B之後再進A,發現A的存檔已經不在了。原因在於,ipa轉換成的pxl軟體,存檔全部是放在/var/mobile/Documents目錄下,而正好有兩個軟體的存檔檔案名相同(最常見的就是data.sav或save.data),互相改寫之後導致不能讀取。這種問題也發生在ipa轉deb上,而且無法解決; # F, v% p8 y! {  S; ]% s5 T
' V0 G0 n! P0 o5 d0 |
  無法完整刪除:卸載pxl格式時,不會刪除存檔檔、配置檔、暫存檔案等資料,長期使用會導致可用空間減少; ; Y! ~: W+ ]8 X$ b! I
  [3 c* \+ s2 e6 s3 n  R% b
  在部分機型上存在相容問題:有些機器越獄後並沒有將系統分區中的/Applications目錄轉移到/var/stash的用戶分區中。由於系統分區的可用空間很少(默認500MB,通常可用空間不超過50MB),強行往/Applications裏安裝會導致剩餘空間消耗殆盡或安裝失敗。 . z6 R6 X# h) i* Y) P; `# {
  j+ ~: b: \/ ^" A& B. n4 w& ]
  由此可以看出,pxl格式的問題更多不是pxl本身的問題,而是打包者的問題以及安裝方式的缺陷所致。 ; M# |6 x& \) y, @! {
1 g, q& u* F' c" Y
  另外要指出的是,pxl最大的提供者,91,經常是轉載他人發佈的軟體(包括網友自己購買破解的,或Cydia上直接下載的)然後當作自己發佈的軟體,對版權問題完全不在意,這樣也引起了很多人,尤其是原發佈者的反感。這種赤裸裸的剽竊行為實在是令人不恥。正因為這樣,很多人是因為不爽91而不爽pxl,這實在是冤枉pxl格式本身了。 . U0 J0 n; {8 f
1 N) t2 z* m/ G+ z% v+ y' a5 W
  總結:
% p9 I% @. T) F5 w4 b/ W) e+ ~
' Z* _7 @( w% e% `6 ~6 P  一般的軟體還是儘量用ipa格式,不要使用ipa轉換成的deb或pxl格式,這樣可以確保相容性和安全性。而在系統級的程式(如SBSettings和輸入法),ipa是絕無能力的,那麼最好的選擇還是deb。pxl作為快被淘汰的格式,還是果斷的放棄比較好。 , y1 s# X. C' D, I" S

& t- G4 l6 m0 F& k8 A5 U! _  至於ipa和deb的安裝方式,ipa的安裝首選iTunes同步和AppStore線上安裝,次選Installous,以保證最佳相容性。deb的安裝首選Cydia線上安裝,次選除91外的其他任何安裝方式。 & C' y4 v- m$ @0 A
8 g3 o. O) L* p+ |5 w3 T
  任何情況下都不推薦用91來安裝ipa和deb,因為91的安裝機制並不完善,很容易出問題。 * N# Q- W# D. _
/ y% _. p/ c. t& o0 i) u& _( f

8 v: d& E2 R' ]& a9 n1 `3 p本文是原樣轉過來的,甚至字體以及顏色都沒有更改。主要是為了方便機友查閱,也好進行更進一步的操作。感謝威鋒網,感謝作者autopear。
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 3-11-2025 03:28 , Processed in 0.379653 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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