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

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

[複製鏈接]
發表於 12-9-2010 21:46:02 | 顯示全部樓層 |閱讀模式
作者autopear。
8 t! f- l: T; v: Y* _- I/ I9 q; d: i* z5 A/ r" F( X
前言: 5 W7 @1 _: h0 M& M; f1 S% D- J
' e9 h$ M, G4 }
  目前iOS平臺上常見的安裝包有三種,deb、ipa和pxl。 3 t) p. @( t: p# @
3 l* t' V4 v5 ^9 o; U
  其中deb格式是Debian系統(包含Debian和Ubuntu)專屬安裝包格式,配合APT軟體管理系統,成為了當前在Linux下非常流行的一種安裝包。進入2.x時代之後有Cydia作者JayFreeman(saurik)移植到iPhone平臺上,一起的還有APT軟體管理系統。
8 L' \! Z8 W, l. R" |/ C& ~# q$ v1 |: s+ ?1 \
  而ipa格式則是蘋果在iOS平臺上推出的專屬軟體安裝包,在2.0固件開始才正式使用,是目前iPhone/iPodTouch/iPad平臺上唯一的官方安裝包。
/ L& B! H9 Q' m7 L4 ]1 A- w/ i% G# z/ f( k
  而pxl格式則起源於Mac系統上的pkg安裝包,被廣泛應用於1.x固件時代,曾經是iPhone平臺上唯一的軟體安裝包,現在仍在被91等軟體所使用。 4 u0 X" j$ s! z; L

! e4 p" V: b9 m3 a2 \' N  安裝包格式: 8 y8 g4 R9 a0 ~

6 H( f, U& I1 j  .deb - a, h$ w7 m9 Y/ I- A6 }- G

( }" Y2 X' B9 ?5 m) y; n) e  deb是Unix系統(其實主要是Linux)下的安裝包,基於tar包,因此本身會記錄檔的許可權(讀/寫/可執行)以及所有者/用戶組。
' F5 h& H, B( V/ l3 n1 K! g/ `
7 I$ T: ]& N8 _3 I4 X& \' a  由於Unix類系統對許可權、所有者、組的嚴格要求,而deb格式安裝包又經常會涉及到系統比較底層的操作,所以許可權等的設置尤其重要。
& D4 I# d7 g/ r: J9 c0 I( d9 m5 s7 S: |0 U$ @! ^
  deb包本身有三部分組成:   s2 Y* P4 R0 \" B5 O. J! Y
. p9 {1 E$ B0 Q5 D1 U1 I! v9 A
  資料包,包含實際安裝的程式資料,檔案名為data.tar.XXX;
) s0 c2 L/ M" y  _5 R
) Q6 R  A- m. Y- A, w  安裝資訊及控制腳本包,包含deb的安裝說明,標識,腳本等,檔案名為control.tar.gz;
6 l7 l* }$ L9 u" H) g
2 ]3 Z& ]9 W6 N! w" W5 K- k' Q7 G: C  最後一個是deb檔的一些二進位資料,包括檔頭等資訊,一般看不到,在某些軟體中打開可以看到。
+ h- N8 D% g" M: f4 P# x0 q$ A
& C" w* f% e9 z# f9 m$ h% P8 A  deb本身可以使用不同的壓縮方式。tar格式並不是一種壓縮格式,而是直接把分散的檔和目錄集合在一起,並記錄其許可權等資料資訊。之前提到過的data.tar.XXX,這裏XXX就是經過壓縮後的尾碼名。deb默認使用的壓縮格式為gzip格式,所以最常見的就是data.tar.gz。常有的壓縮格式還有bzip2和lzma,其中lzma壓縮率最高,但壓縮需要的CPU資源和時間都比較長。
0 F6 z" x4 w# \' h  P8 U
+ E# W* K" }: e) i/ j  data.tar.gz包含的是實際安裝的程式資料,而在安裝過程中,該包裏的資料會被直接解壓到根目錄(即/),因此在打包之前需要根據檔所在位置設置好相應的檔/目錄樹。
' }4 r9 x% G0 F# _( c7 `" c* h6 Q9 ^: C. ]
  而control.tar.gz則包含了一個deb安裝的時候所需要的控制資訊。一般有5個檔:
; k6 I2 e: ?9 Q5 d
. B4 ]. E4 W" h: q* V, x4 {4 a7 W" m  control,用了記錄軟體標識,版本號,平臺,依賴資訊等資料; ; `! w7 ~' I. V- T3 e
" u' f4 L  A; q' B& G
  preinst,在解包data.tar.gz前運行的腳本;
7 f( p% n2 a1 }' A) F6 a, X# w+ l# f8 ?; C3 M( X
  postinst,在解包資料後運行的腳本; - f/ S: b; V4 ?+ F9 M

8 E- \) N% W6 G8 i  prerm,卸載時,在刪除檔之前運行的腳本;
- f. ?2 z8 u# Y" v' o+ I" a! b- k% j  a4 q( @9 J
  postrm,在刪除檔之後運行的腳本;
; f$ W$ {# l7 l6 f4 n
+ A- C" ~0 u3 e  ~1 m6 A  在Cydia系統中,Cydia的作者Saurik另外添加了一個腳本,extrainst_,作用與postinst類似。 " l# h! ]  F/ @. e/ {" N1 @9 b
- z. E' @8 |$ W: ~$ r9 Z% {5 `9 Q
  .ipa ) q2 w/ B1 J9 g' k6 Y3 P/ n# L; C! g1 p& X
" e9 @3 `: ]( H2 V  [( M0 K5 U: |
  使用過MacOS的人可能都知道,Mac下的軟體大部分都只有一個.app目錄,裏面包含了程式全部資源和可執行檔。簡單來說,Mac下的軟體就像是Windows下的綠色軟體一樣,解壓後即可使用,不需要安裝,卸載的話也只用刪除程式檔即可(這裏不涉及pkg格式安裝包)。而ipa格式可以視為這種.app軟體的衍生物。
  f( x2 _$ ?6 t* k: K; u" R2 j7 e, Y
  ipa檔實質是一個zip壓縮包(不是rar或7z包),包含3個元件: % J" t1 b/ a, F% _  L
7 f; k( n* W7 G" E. J
  payload目錄下的.app目錄,這個是軟體的主程序; 5 c" Z8 ^0 ~4 d5 W7 m$ `

( ~( i7 A  Q% q% ?  iTunesArtwork,實質是一個無尾碼名的png圖片,用來在iTunes中顯示圖示;
  d. ~" U6 h! b- i) w& O: c  `) W1 h2 C3 a; g2 [
  iTunesMetadata.plist,記錄購買者資訊、售價等資料。
( @* }0 k5 F" A+ u- f9 z# j: k* n& a: P  j
  由於zip包不能記錄許可權和所有者等資訊,所以蘋果規定了ipa的安裝方式,即全部ipa都會解包安裝在/var/mobile/Applications目錄下,全部檔和目錄的所有者及用戶組均設為mobile(ID為501),主程序(可執行檔)的許可權設為0755(所有人都可以執行,但只有所有者可以修改),可執行檔在plist中定義。全部目錄許可權設為0755,而其他所有檔都設為0644(僅所有者可以修改,其餘人只允許讀取,全部人都不允許執行)。 ( B" @: R" a1 y/ S5 {( d

4 {& ~* L1 I, W) ~4 ]5 c1 k  ipa解包後並非直接放置於Applications目錄下,而是放在一串由隨機碼構成的目錄下,其作用在於,只允許這個軟體運行在一個特定的沙盒(Sandbox)中,不能干擾其他軟體。因此那串隨機碼目錄下,除了ipa本身的三個組件之外,還有三個目錄:
0 j& V! [/ L; s- Q# d8 L. s4 Z
) b+ [+ K. T0 }2 e* K7 o  Library,一般是用了儲存設置檔等資料; 3 R& M  _" H, u( [/ P- }( [

" {4 j' z$ b  z  Documents,存儲資料,多用了保存存檔; & p+ e" E  }1 _: Y
4 @4 k* T, N  H
  tmp,暫存檔案夾。
4 s6 A: I& z: M$ a, v+ y, M/ G# f8 V2 M/ S
: s' @; O  [! `0 r! f. {  由於這個軟體只能在這個特定的目錄下運行(當然了,部分程式會調用系統的通訊錄、相機等元件,但仍然是受限制的),從而保證了整個系統的安全性和穩定性。 . d8 ^. R+ g6 T+ O5 j; o$ e
4 K: N  o7 V4 S2 I5 U
  由於Unix系統下對許可權的規定相當嚴格,所以“越權”的行為是絕對不允許的。舉個例子,mobile用戶無權刪除root所有的檔,因為root的許可權高於mobile。所以有些人在修改ipa安裝後的檔時,比如進行漢化或者修改存檔,發現不能刪除乾淨軟體,或不能保存,這是因為刪除時不能刪除root所有的檔,程式本身也無法對root所有的存檔檔進行寫入操作。 0 O: z' J( e% w8 p

$ E1 z0 T# o9 O9 K' `) Y  .pxl # |& E+ V! i; y3 j# u

$ {, ]+ J& T6 x5 D# u$ p$ m& L+ E6 ^  pxl格式在1.x時代是iPhone平臺上唯一的安裝格式,原因是那時候還沒有Cydia這樣的APT管理軟體,蘋果官方也沒有推出AppStore。由於在1.x時代積累了大量人氣,在接下來的AppStore時代中,pxl格式以其相對簡易的打包和安裝方式,仍然佔據了很大一部分市場。但隨著Installer的停止開發,iBrickr等軟體停止更新,目前唯一還在堅持使用pxl格式的就只剩下91一家了。
* y1 T' E' A/ E: E2 U& O* G2 I8 t6 }8 F8 J7 I# @; y4 S
  pxl安裝包通常包含3個組件: 0 O. H4 N. E+ u# y+ b

  W. F- i4 i4 x  PxlPkg.plist記錄程式檔的存放位置、所有者、許可權以及軟體標識等資訊;
9 B9 w3 O3 M: Z( E
* R1 y: V4 U; E! M% g- C  PkgScript文件夾,存放安裝和卸載腳本;
6 D9 v) f) \/ U( z7 C9 S4 q6 D. m9 p; H# m9 V$ q+ [6 i
  程式檔。
4 J: Y4 H/ x* ~7 ^; Y7 O  ~' N8 t: ?1 J- S. w
  PxlPkg.plist檔的開頭通常是CFBundleIdentifier,記錄著軟體的唯一標識,以和其他軟體進行區分。RDPxlPackageVersion則記錄軟體版本。RDPxlPackageFireware被用來記錄可以運行的固件版本。其餘還有一些鍵值是用來記錄軟體介紹、網址、作者資訊等資料。
+ S' C1 m- Y( B1 ]( d' O3 f" d/ ]8 E" e5 @1 @% k% L+ Q9 e+ F
  除了軟體標識、軟體版本和可用固件版本以外,PxlPkg.plist的核心部分就是RDPxlPackageFiles和RDPxlPackagePostflight兩項。RDPxlPackageFiles記錄了程式檔應該被複製到的路徑,並提供了是否覆蓋的參數:overwrite。而RDPxlPackagePostflight則記錄程式檔應該被賦予的所有者和許可權,分別以chown和chmod命令來實現。另外,對於含有安裝/卸載腳本的pxl來說,還會以sh命令執行相應的腳本Postflight和Preremove。
. ~% j+ A7 n' o7 {5 _. f2 Q  I6 W5 k, d& {( o& J
  PkgScript通常包含兩個檔,安裝後執行的腳本Postflight和卸載前執行的腳本Preremove,這兩個腳本就是標準的LinuxShellScript,以sh命令執行。 3 }2 b! w( J+ k  y

4 X' n1 L: J) t0 L0 C+ P* R  安裝包的特點:
% t; Y1 V' G1 f, a5 F7 |' r
. n6 D) c# r: w! H  F  .deb
3 P4 A/ F7 i) y$ C0 h7 x$ Z- w; ^- l+ `% Z
  豐富的資源:Cydia上本身就不少,更何況任何格式的安裝包都可以轉換為deb。
8 |2 J4 b6 {9 E+ f- g0 N
! C  ?$ ]/ [# U0 X+ z  {  相對方便的線上購買模式:CydiaStore,不過儘管沒有AppStore的5台設備的限制,但對國內用戶來說,付款方式比較困難。
( C! t6 Z5 T, @, m/ G" L: i/ L% a: s+ F0 l# M( s
  破解難度較大,沒有使用AppStore的驗證方式,所以必須將驗證和防破解措施加入程式裏面,這樣就比較難破解,對軟體發展者來說是個好事。
3 B, ]" c: j) @& A" [7 ?
+ o/ }: p2 B7 Z. ~  完善的Unix檔系統支援:無需以命令設置檔的許可權、所有者和用戶組(當然也可以以腳本來設置)
3 H/ A! `, q; q  w  g5 j
3 k! ?, {4 @1 e4 j( G) ~6 }  完善的腳本支援:5個腳本依照安裝和卸載的先後順序執行,可以提供更多選擇。比如備份還原操作,可以在preinst中備份檔案,而在postrm中還原檔
3 q% B! E* L% h# @( M
; n/ X3 g8 ?' {' H  嚴格的依賴關係:deb遵循嚴格的依賴關係(於Depends和Pre-Depends指定),可以確保軟體運行所必需的元件。線上安裝的時候會自動安裝所依賴的套裝軟體。卸載時也很重要,比如套裝軟體A依賴於B,當卸載B的時候會提示A依賴於B,卸載掉B的話會導致A不能用,這樣可以確保系統的完整性和穩定性。 * L; Y4 O: N8 S+ s3 e

" q  o) w! t( ?" L9 D; Q  Conflicts、Replaces、Provides等鍵值的存在可以實現衝突提示或替換其他套裝軟體。 ( F0 V* B; D+ \2 h7 H6 g3 x- }
; D6 v6 q3 d& }3 U9 c1 p
  完全許可權:由於deb必須以最高許可權root的身份運行,deb可以對系統任何位置進行操作,換句話說,deb擁有對整個系統的完全控制,因此deb安裝包軟體可以實現很多ipa不能實現的功能。 ) @. s! P2 k% C2 Q8 V
' G+ z( X4 I6 J9 L- N
  相對簡單的獲取方式(線上或離線)和安裝方式,也不用擔心在不同機器上同步會刪掉程式的問題。 0 z0 r  Y  F- p. z

9 G- c- [+ o: o) M& g/ u  安裝相對簡單:其實無論是哪種安裝包,安裝方法都不算很複雜,只不過deb稍微複雜一些。
# O; j' K& h* N. h& R/ M. H8 O  O/ w) E4 [" R3 H, `
  deb的安裝方法大體有5種: 9 F* w, A  H$ y
8 t0 w6 B- h1 k1 d
  Cydia或同類APT管理軟體線上安裝,這個是最佳的安裝方式,因為通常無需考慮依賴關係,但缺點是對網路的要求比較高;
' I3 J# Y9 Y- L& I  j0 `+ \. |& q. P) y7 Z
  命令行中以dpkg-iXXX.deb的形式安裝,好處是可以以通配符一次性安裝多個deb,而且也可以直接看到腳本的運行狀況和安裝成功/失敗的提示資訊,缺點是需要命令行軟體的支援,如Putty/WinSCP的控制臺/iSSH/MobileTerminal,很多人也不熟悉命令行下的操作。另外,安裝完後會不顯示圖示; ) ~1 E6 x2 Z8 k

# R. y4 ?; y& h1 u( T' o$ U, o  放置於AutoInstall目錄重啟安裝。該方法實際是Cydia提供的一個啟動腳本,在每次系統啟動時以dpkg命令安裝AutoInstall目錄下的deb,好處是不需要命令行操作,缺點是必須要重啟,有些甚至要重啟兩次,也會出現不顯示圖示的情況; 1 O( E) E" c- C4 B" [4 }/ k) F
: y2 P& t" R  _7 Y  ?
  利用iFile安裝,好處是圖形化操作,桌面會顯示圖示,缺點是不能一次安裝多個deb;
/ e( }: Z; Q( ^4 f' o) ^) L! K: }% H  W+ O
  用CyderII等軟體來安裝,其原理是類比一個APT軟體管理器來下載相應的deb檔並傳到設備,然後以前面幾種方式來安裝。 / O% X3 J% r4 E5 Q* q. M" p
6 t! A& \( D  X' J" t2 X# G
  總體來說,deb的安裝都是依賴於dpkg-i命令來安裝,只不過有些是在命令行下輸入命令,有些是提供了圖形介面。但除了Cydia安裝一種方式之外,其餘幾種安裝方式都存在一些共有的問題:
+ O' _- F* V$ j. l' x2 C5 d: T1 c5 j5 M) ^; p5 [  k4 f9 D
  不會自行搜索依賴關係,必須手動提供所依賴的deb;
, f) t) H% q- }' ?- Q% I. f3 }2 G  L
  Cydia會讀取安裝腳本裏的一些特殊語句,比如僅在全新安裝時執行而不在升級時執行,安裝完成後重啟SpringBoard或設備等等。 / O9 @: V4 H7 A7 q+ k* f9 E

2 X. V! K( \; g3 z1 N6 E  m) ^  當然了,deb軟體的卸載也比較簡單,有兩種方式:
1 Z) v1 s! @( P# _; S1 M" Y. O3 G% p6 h5 V2 Q4 o1 k9 s8 x
  Cydia裏卸載,優點是卸載過程和提示資訊很詳細,全圖形介面操作,同時也提供了重新安裝的選項;
. L2 M8 \/ M/ a6 D2 ?% ^1 r- U$ y2 F! b2 P& L' e8 E  b0 N
  以dpkg-rPackage_ID命令或dpkg-PPackage_ID命令來卸載(詳情後面會說);
8 R3 W/ `2 `- q4 g" f: C+ o$ Y/ P/ A* A' p4 {' {( ^( J4 J% z
  Cydelete來卸載,優點是可以直接在桌面上卸載有圖示的軟體,但對那些沒有圖示的無能為力。 : i) N! H$ R% Q* O. U. t( h

9 [, F! D& y3 }1 t/ e! o7 x  其實,不管是安裝還是刪除,都可以才要全手動的方法。即,解包deb之後,自己將檔放到相應位置,然後設置許可權等並執行腳本。但這樣有必要麼?
/ y1 g+ ^5 S/ n& Z0 I2 {
! ~3 x' ^* I% H  deb的安裝過程如下:
& G& O2 H/ r$ b
, a  G8 N9 g9 |9 q& {" d, v: w  讀取資料庫並鎖定,避免同時有兩個安裝程式在運行   G* i1 w! l6 L% `# Z

5 a, j2 R% |% @1 k8 U9 c  讀取control中的Package(套裝軟體標識)和版本資訊,並搜索資料庫,若已存在,則卸載之後再安裝;
  r4 c, g# e( r5 j2 ?6 I% O/ D: x5 H/ J3 I
  檢查Depends,Pre-Depends,Conflicts和Replaces,如果檢測到已存在Conflicts中存在的軟體,則報錯並終止安裝。如未找到Pre-Depends指定的軟體,則報錯並終止安裝。如找到Replaces中指定的軟體,則卸載之; ) J2 J8 j7 J3 C$ U/ c3 w/ J
4 \& S+ e5 i# k+ i6 R$ W
  將資料寫入/var/lib/dpkg/status檔中; 4 b7 L& [9 F8 x, j! |

) H$ Q$ K' o! k, o: K# ~  執行preinst腳本(如果有);
4 ?  R3 ?, v" o1 C! P3 }  h/ _9 O6 D3 ]0 v3 y" B' G0 @+ i
  解包data.tar.gz,將檔放置於相應位置,並將檔列表寫入/var/lib/dpkg/info/XXX.list; % C/ m0 s5 P8 i

/ n, L0 y% O  U: c  運行postinst和extrainst_腳本(如果有);
! L! F) v$ c5 e( K7 @. Y% w8 {9 p( `8 |" w3 z; C+ j
  如果之前的安裝都沒有出錯,即安裝成功,那麼會在status檔中寫入Status:installokinstalled資訊,否則會寫入其他狀態資料,比如Unpacked(未解包資料)、Failed-config(腳本未能成功執行)、Half-installed(安裝失敗等); 8 L/ B3 `7 d8 V- R
, L; A$ c2 {% M" N$ s4 _
  重新載入資料庫並解除鎖定。
; x- a4 |# {1 j  h. G+ L; P% k  t" w6 m2 _
  deb的卸載過程如下:
& T# s- q# ]# a* g; c* |# x" ~1 o
  讀取資料庫並鎖定; . F) N% n3 j% ]4 x

8 }! P- x5 W  }& V4 {  根據軟體標識搜尋資料庫;
9 W( s5 z/ K# b6 N# Q
9 S6 i7 Q3 P  `2 E- M) C6 {  檢查是否有軟體依賴於待卸載的軟體,如果有則提示,並中斷卸載;
; Q* P6 w, n8 `; h/ x& L
- X% A5 a& ~! I/ o' y# C  執行prerm腳本(如果有); 0 t9 ~& t4 V7 c% y2 O+ }6 U/ l
& y( A) @, E- d% I- G, u
  讀取/var/lib/dpkg/info/XXX.list檔,並刪除list檔中記錄的全部檔和非空檔夾;
, \' |' s, P0 l5 f6 Q: h3 X- O9 {' C5 \& q  M7 l) b" ?1 |# ^  X
  運行postrm腳本;
! P4 a3 R8 K9 ^1 |& C8 k- C. q# P( w( `$ s2 Q: E. u
  如果卸載命令是dpkg-r,則保留status中的記錄並改為Status:Notinstalled;如果卸載命令是dpkg-P,則刪除全部資料; 1 l3 F' Q# \9 c0 V4 x5 o% n

: ^) O4 V; z, b/ g; a- J( W+ |  如果卸載過程沒有錯誤的話,重新讀取資料庫並解除鎖定。
& x7 T! ~/ f: t3 R) B: e, r: r( F
& L! }$ E2 ^$ p% m2 r; a  由於deb安裝的軟體可能會在運行時在/var/mobile/Documents下放置存檔檔,或在/var/mobile/Library/Preferences下放置設置檔,而這些檔並沒有記錄在list檔裏,所以卸載的時候不會被刪除。 " |( D: m" ]- G. S8 p1 ^
$ O- f9 i: {, V' U' E6 a6 B
  .ipa $ Z. i, e& n7 A& c1 w% a: R
4 j& ~; L; o8 `8 f
  豐富的資源:AppStore上那麼多資源,apptrackr等網站也提供了很多破解版。 1 ^) h; L  `0 C& K; D
0 V: f/ K4 @* T9 ?$ ^8 ^2 d& Q: s
  完善的更新、後期服務。
" H: x; Z4 P+ d5 |1 A' l( G0 I8 j6 n/ V6 Y) h. V
  只能使用最小許可權,保障安全性。
7 a7 f# D) L1 {: ^; E
  Y8 y1 W" k. U' Z  不涉及系統級的操作,所以一般不容易造成死機或白蘋果(有些是因為資源消耗太大所以卡死)。 $ z" I( v: \' Y3 g3 z, y( ?

/ o" y6 v% [  K3 e0 R$ |8 p  便捷的安裝方式,無論是直接在設備上用AppStore安裝,還是用iTunes來同步,抑或是用Installous和91這類第三方軟體來安裝,都是很方便快速的安裝方式。 8 m" p3 r5 b. e% p2 H- e. N
. G& T# m& g3 [) ^/ P
  超級簡單的卸載方式:還有什麼比只需要點一個X就能卸載更簡單呢? 2 y% |0 X$ O. |# B- u

+ a9 V4 e. g9 F  m! T) d  完全刪除,不會留下任何垃圾檔(如存檔、設置檔等)
! g& P9 u/ C6 T1 k  u# s% p
4 P7 Z, l& m$ _, W; `' {" Y  總體來說破解還是比較容易的,但現在越來越多軟體加入了防破解措施。
5 R5 t. t3 _3 o: \' M4 O+ `% L
( l: q9 }; E/ W  之前提到過,ipa軟體是被安裝在一個類似于沙盒的環境中,除了能對/var/mobile/Media/DCIM目錄(拍照、截圖存放目錄)進行操作,或是調用壁紙、鈴聲、相機等元件,不能對系統進行任何干涉,這樣在最大程度上保證了系統的穩定運行,也不會干擾其他軟體的正常使用。但問題是,由於ipa軟體的許可權很低,想要對系統進行修改,尤其是應用補丁時,ipa就無能為力了。
, b! R  J. t( c9 k
8 n% Z. Y1 ]) O1 u- R; d1 t8 Q) B  h  ipa軟體官方的安裝方式有兩種,一是在AppStore這個軟體中下載安裝,二是用iTunes同步。 + B" ^4 A4 I3 g' n. m2 Q7 B

* A* `* _8 f& X' a  前者的問題主要是網路問題,網速不好很容易安裝失敗;GPRS之類的上網安裝又很耗流量。後者的問題主要是不能在不同系統下使用(包含不同電腦和同一部電腦上的不同系統),在其他系統上同步會抹掉原有的軟體。當然了,iTunes每次同步時間比較長也是經常被人詬病的。尤其是當安裝軟體比較多的時候,每次同步之前的備份需要很長很長時間,這個很噁心(不過可以直接X掉備份操作)。 6 J; o/ k6 m; X  F8 o0 a
" K+ F/ H5 c  E+ H4 P: [/ _  e6 O
  由於以上兩種方式存在一些問題,所以很多人會選擇使用Installous或91來安裝ipa,這也確實是個不錯的選擇。
1 R7 A' K2 f6 F4 }& Q& ~6 y& h* d! ]9 y: ?; A! q( r+ S  R2 M" I
  Installous一般沒什麼問題,但對部分驗證比較嚴格的ipa處理不是很好。雖然Installous基本能代替iTunes,但畢竟不完全等同。最典型的就是Installous安裝Microsoft官方出的LiveMessenger(正版,非破解版)時不能運行。實際上Installous對很多未破解的正版軟體支援不是很好。
3 D) y& l$ H$ _4 _5 w+ L" g. H
  至於91,經常被人批評。91雖然可以安裝ipa,但除了Installous都有的正版軟體的支援問題外,由於91的安裝機制有缺陷,軟體不能實現多語言,只會使用英文介面,而忽略掉zh_CN.lproj,zh_TW.lproj這些語言包。這對那些用希望使用漢化版的人來說實在是一個悲劇。所以通常是要避免使用91來安裝ipa的。
5 ^) ~2 E% [- j4 o3 u- X) H1 D4 {4 K) y- @3 A
  至於卸載,三種方法:
  p( x, y5 K+ w, e& j$ v7 D  u4 l3 E4 E* w
  設備上按住圖示直到開始晃動,點擊圖示左上角的X即可卸載;
' q9 J3 G4 H" d. i( ~! ^0 v& U- k+ J* E
  於iTunes中取消選中,然後同步 2 x2 v* F. o, l( @) V

. p( l8 m% M3 i+ o; J6 a3 U" V  找到/var/mobile/Applications下的相應目錄,強行刪除整個檔夾。這個在前面兩種方法無法使用是可以採用(有時候卸載體積太大的軟體,比如超過1G,因為刪除過程太長導致失去回應並刪除失敗。),但這種方法會造成系統的不穩定。除非是確實碰到了問題,否則強烈建議不要使用。 # n& ?6 K3 p& `. g( i$ L% u
* t, Z  Q# c2 ]/ q" N
  .pxl
! P* H( u6 F- {
* y8 j4 }! O  X0 `: I0 _  嚴格來說,pxl格式的資源並不算多,但也不少。現在使用pxl格式的絕大多數都是91的用戶。
+ l* q6 G8 P9 A) K: [/ j% i3 n: R( |: Q4 L! O
  從時效性上來說,很多軟體(主要是AppStore上的)一被人破解就馬上會被人轉成pxl格式,這樣來說,pxl格式的更新還是不錯的。 - h* `( T$ ~: z# N+ f2 n$ b7 Q! q
) @3 @3 {* V' F: _7 O) x, S" d
  由於91手機助手沒有iTunes同步會抹掉軟體的問題,加上其他一些比較方便的功能,使得很多新手都是從91開始瞭解並熟悉iPhone/iPodTouch的使用。其結果是,pxl格式依賴于91而生存。
) M4 x# {: w5 t1 V6 g5 E
0 X8 A6 }& T9 J$ s  pxl格式的流行也不是歷史的遺物,而是符合市場規律的需求。91助手的便捷的軟體管理方式(尤其是支援WiFi管理),加上免費的旗號,使得pxl格式在新手中很受歡迎。 ( Q0 I! ^" ~0 }
/ {  L: {# o! z: [. R; D6 a
  實際上,pxl格式和deb格式具有的功能完全一樣。雖然pxl不能記錄檔的許可權等資料,但完全可以用腳本來彌補。即是說,pxl格式和deb格式其實是不相伯仲的。而且因為pxl格式的製作並不需要比較少見的Unix環境,尤其是Debian環境,其本身是優於deb格式的。
9 R6 l9 j. N$ R- G" J
9 T6 c, q8 Z( N, s  但為什麼現在很多人都經常在說不要使用pxl呢?我個人認為,原因主要有以下幾個: * P, w5 g" @0 X7 c  Y, T
2 d. i1 |5 n0 |9 O
  資源的局限性:除了91公司自己開發的幾個軟體之外,其餘所有軟體都是從deb和ipa轉換而來。如果原版軟體沒破解,pxl無能為力(比如Microsoft官方出的LiveMessenger和Cydia上一眾沒被破解的軟體); : `; {. P6 S( b7 B
' v! i' ~+ q' b* m+ i% X* t# e
  資源時效性:跟上面一點相似,pxl格式大部分是從其他格式轉換而來,跟原版相比總是會慢一些,尤其是當無法破解時,pxl根本就出不來; 4 {; o# \9 f# ?3 ?" f$ D, v

/ ?/ g' G0 [$ r5 w" S7 h  打包人水準有限:現在很多人都是直接用91助手來打包pxl。對大部分只有一個XXX.app目錄的程式來說一般不會有問題,但若遇見那些對檔許可權等資料有嚴格要求的軟體(比如可執行檔沒有可執行許可權,或是mobile用戶不能改寫root所有的檔等等),或是需要比較複雜的腳本才能運行的軟體,往往pxl製作者並沒有能力去製作一個完善的pxl出來,這樣也導致了許多安裝使用上的問題;
6 H5 \& V9 p% p
7 Y9 S5 V, E1 Y) y: @% r- C8 g2 a  安全性:絕大部分人在製作pxl的時候都習慣用chmod-R命令來將整個XXX.app目錄及其中的全部檔和子目錄設為755/775/777許可權,而這種行為會造成一定的安全隱患。關於這些數位的意思請自行搜索相關資料。這裏簡單說明一下。644屬性表示僅有該檔的所有人才可以進行改寫操作,其餘任何人都只能讀取,任何人都不能執行這個檔。755和775是在644的基礎上加入了可執行許可權,755是該檔所在的用戶組的所有人都可以改寫。而777許可權則標識任何人都可以改寫並執行。由於mobile本身是受限帳戶,如果使用777許可權的話,有機會通過這個漏洞來獲取整個系統的控制權。只不過因為iPhone系統相對封閉,也不太有機會造成損失。但採用775和777許可權是不應該的;
' m# U2 [5 \! z/ \$ B8 r, p9 Z5 _: _* p
  ipa轉pxl的存檔問題:不少人都有這樣的經歷,在遊戲A存檔之後再進遊戲B,存檔B之後再進A,發現A的存檔已經不在了。原因在於,ipa轉換成的pxl軟體,存檔全部是放在/var/mobile/Documents目錄下,而正好有兩個軟體的存檔檔案名相同(最常見的就是data.sav或save.data),互相改寫之後導致不能讀取。這種問題也發生在ipa轉deb上,而且無法解決;
) n% h8 M# d  o' f/ z: A
# v9 c8 ?+ \$ q4 S$ C# X  無法完整刪除:卸載pxl格式時,不會刪除存檔檔、配置檔、暫存檔案等資料,長期使用會導致可用空間減少; ; Z' w  N% T+ I" ?

! R- t6 {  c) m! X9 T% B7 |8 N  在部分機型上存在相容問題:有些機器越獄後並沒有將系統分區中的/Applications目錄轉移到/var/stash的用戶分區中。由於系統分區的可用空間很少(默認500MB,通常可用空間不超過50MB),強行往/Applications裏安裝會導致剩餘空間消耗殆盡或安裝失敗。
! I( Y* i0 ]. f3 Y3 G4 |& m2 V8 [, U9 k
  由此可以看出,pxl格式的問題更多不是pxl本身的問題,而是打包者的問題以及安裝方式的缺陷所致。 % K9 H" J! b% w' K
- }1 Q! j$ \" Y
  另外要指出的是,pxl最大的提供者,91,經常是轉載他人發佈的軟體(包括網友自己購買破解的,或Cydia上直接下載的)然後當作自己發佈的軟體,對版權問題完全不在意,這樣也引起了很多人,尤其是原發佈者的反感。這種赤裸裸的剽竊行為實在是令人不恥。正因為這樣,很多人是因為不爽91而不爽pxl,這實在是冤枉pxl格式本身了。
( ]/ Z9 T; c# \" B2 N; e" p7 C0 s1 Y: H  A5 {- `6 T
  總結:
1 g( i. e6 O  m9 i4 t
% C8 s# O1 ?; s% O  一般的軟體還是儘量用ipa格式,不要使用ipa轉換成的deb或pxl格式,這樣可以確保相容性和安全性。而在系統級的程式(如SBSettings和輸入法),ipa是絕無能力的,那麼最好的選擇還是deb。pxl作為快被淘汰的格式,還是果斷的放棄比較好。 0 ~! Z: i/ `" N5 V  D" c0 ^
. ^  G5 W; A0 q) T+ t
  至於ipa和deb的安裝方式,ipa的安裝首選iTunes同步和AppStore線上安裝,次選Installous,以保證最佳相容性。deb的安裝首選Cydia線上安裝,次選除91外的其他任何安裝方式。 " o- N6 {- T8 l) T# ^

& B9 J8 \& G4 D3 A. Q* D  任何情況下都不推薦用91來安裝ipa和deb,因為91的安裝機制並不完善,很容易出問題。
( P! e) a- _. Z5 L+ l3 A: i6 n' h4 S( C
7 h' s3 k( B4 W$ ^6 z8 i. b
本文是原樣轉過來的,甚至字體以及顏色都沒有更改。主要是為了方便機友查閱,也好進行更進一步的操作。感謝威鋒網,感謝作者autopear。
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 2-5-2026 15:44 , Processed in 0.165412 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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