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

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

[複製鏈接]
發表於 12-9-2010 21:46:02 | 顯示全部樓層 |閱讀模式
作者autopear。) d, U2 b  W$ I" j
/ {% p& ~& I! l% {# s3 k
前言: , B& a) \/ |- {- m# _
7 ~( u* p/ x, P
  目前iOS平臺上常見的安裝包有三種,deb、ipa和pxl。
- p! U% s, k, A+ V8 ^, t2 t6 U2 n7 ?
/ y4 e! @3 v' c9 d  其中deb格式是Debian系統(包含Debian和Ubuntu)專屬安裝包格式,配合APT軟體管理系統,成為了當前在Linux下非常流行的一種安裝包。進入2.x時代之後有Cydia作者JayFreeman(saurik)移植到iPhone平臺上,一起的還有APT軟體管理系統。
  w# @) u* z& Y) X! \, k4 K1 T7 W; S  l! u) a; b, c6 B: ?
  而ipa格式則是蘋果在iOS平臺上推出的專屬軟體安裝包,在2.0固件開始才正式使用,是目前iPhone/iPodTouch/iPad平臺上唯一的官方安裝包。   c0 F5 t- h$ J9 k/ {
, }  y7 S3 y2 l2 E/ i
  而pxl格式則起源於Mac系統上的pkg安裝包,被廣泛應用於1.x固件時代,曾經是iPhone平臺上唯一的軟體安裝包,現在仍在被91等軟體所使用。 & u4 {) B- g1 v' a. H) Y. j, d
, t. j% w9 \0 R  y; S( A1 v( [
  安裝包格式:
1 A& I8 `/ P7 W- _+ L: u( f( k
' E1 n  V9 X7 D6 `- K  .deb
  b/ g+ W# [6 n2 l, z
1 S( ]6 |3 S( d2 \4 x  deb是Unix系統(其實主要是Linux)下的安裝包,基於tar包,因此本身會記錄檔的許可權(讀/寫/可執行)以及所有者/用戶組。
2 G; O0 u9 W" `/ R5 r' O/ s; z2 w1 r/ r
  由於Unix類系統對許可權、所有者、組的嚴格要求,而deb格式安裝包又經常會涉及到系統比較底層的操作,所以許可權等的設置尤其重要。
5 U1 T! A, x" p) K0 C$ D3 L2 Q, N0 G, I: N( T
  deb包本身有三部分組成: 8 n2 ?. _, {8 T$ R0 F, i

2 f3 Y1 M4 f8 [7 F3 K. i  資料包,包含實際安裝的程式資料,檔案名為data.tar.XXX; : K9 `, t3 `  ^6 Y  W/ w

. g- s- J  s  V2 f" s  安裝資訊及控制腳本包,包含deb的安裝說明,標識,腳本等,檔案名為control.tar.gz; 9 x  c& ^& M0 Y2 D0 T

& K) _: E; j6 S9 n; d. b  最後一個是deb檔的一些二進位資料,包括檔頭等資訊,一般看不到,在某些軟體中打開可以看到。
+ J4 `& L9 r5 v, ?
0 D' W. n  M* }, f1 r  deb本身可以使用不同的壓縮方式。tar格式並不是一種壓縮格式,而是直接把分散的檔和目錄集合在一起,並記錄其許可權等資料資訊。之前提到過的data.tar.XXX,這裏XXX就是經過壓縮後的尾碼名。deb默認使用的壓縮格式為gzip格式,所以最常見的就是data.tar.gz。常有的壓縮格式還有bzip2和lzma,其中lzma壓縮率最高,但壓縮需要的CPU資源和時間都比較長。 5 ?  R  E5 b: T4 C& X1 T% W6 b

  X7 J" G- V. U- Z  data.tar.gz包含的是實際安裝的程式資料,而在安裝過程中,該包裏的資料會被直接解壓到根目錄(即/),因此在打包之前需要根據檔所在位置設置好相應的檔/目錄樹。 8 W/ m- s' y" y$ i2 V

5 M, ^) m* O" |% p  而control.tar.gz則包含了一個deb安裝的時候所需要的控制資訊。一般有5個檔: # I  B$ I& f+ b7 Z  T0 ~
7 d: y: \( T0 m( F# K
  control,用了記錄軟體標識,版本號,平臺,依賴資訊等資料; ! t- W) b0 i' M/ e/ F

5 y2 r& v, f/ V/ k  preinst,在解包data.tar.gz前運行的腳本;
9 t3 Q& A. P( ^0 a8 x8 e# u
% \5 m" S" S' b" j* {1 I$ B  postinst,在解包資料後運行的腳本;
& r, z! l) [4 A" X4 ~! d: @' Y  ?* ~# _7 c4 w% ?; N
  prerm,卸載時,在刪除檔之前運行的腳本; & Q3 a0 ]/ i0 O1 n

2 b2 Z0 U- N! t  V7 _) H  postrm,在刪除檔之後運行的腳本; 8 Z/ I+ o% p! ~5 K6 O0 f7 q

: q5 Z8 M' o- t# t$ {  L' }  在Cydia系統中,Cydia的作者Saurik另外添加了一個腳本,extrainst_,作用與postinst類似。
- y$ z. @* k0 j0 x" V* |+ m0 J# T. ]  O& I) _
  .ipa
( ~* N4 C6 S, V' s7 }# t5 q  k5 j3 i
  R4 Q' J( J% ^4 `# F  使用過MacOS的人可能都知道,Mac下的軟體大部分都只有一個.app目錄,裏面包含了程式全部資源和可執行檔。簡單來說,Mac下的軟體就像是Windows下的綠色軟體一樣,解壓後即可使用,不需要安裝,卸載的話也只用刪除程式檔即可(這裏不涉及pkg格式安裝包)。而ipa格式可以視為這種.app軟體的衍生物。
' `# V- [2 ?* B
# C9 E* ]6 S7 c# p1 ~" r7 i9 `  ipa檔實質是一個zip壓縮包(不是rar或7z包),包含3個元件:
0 n2 {, j9 \4 l5 p
% c' {! ~3 Z# d+ ?/ ?* ?8 Y  payload目錄下的.app目錄,這個是軟體的主程序;
+ z/ q9 ?* Y: H; t2 d0 {% Q- A
3 M, E2 C! Y( q- j7 h  iTunesArtwork,實質是一個無尾碼名的png圖片,用來在iTunes中顯示圖示; ; C2 T; b7 Q9 F  l& t

& \% @0 J" b: e, ?5 l, b$ A( G6 q  iTunesMetadata.plist,記錄購買者資訊、售價等資料。
7 m9 S8 q+ c/ |& {: Q3 i. ^- {+ ~! n9 X1 S) n$ l
  由於zip包不能記錄許可權和所有者等資訊,所以蘋果規定了ipa的安裝方式,即全部ipa都會解包安裝在/var/mobile/Applications目錄下,全部檔和目錄的所有者及用戶組均設為mobile(ID為501),主程序(可執行檔)的許可權設為0755(所有人都可以執行,但只有所有者可以修改),可執行檔在plist中定義。全部目錄許可權設為0755,而其他所有檔都設為0644(僅所有者可以修改,其餘人只允許讀取,全部人都不允許執行)。
! X9 _; e0 v; \* V
4 N: b9 Y7 p3 m1 n! [% U# g  ipa解包後並非直接放置於Applications目錄下,而是放在一串由隨機碼構成的目錄下,其作用在於,只允許這個軟體運行在一個特定的沙盒(Sandbox)中,不能干擾其他軟體。因此那串隨機碼目錄下,除了ipa本身的三個組件之外,還有三個目錄:
) ~/ V. c  ]9 e  }) m& o  ]
1 M* A" h( l  e, K0 O- X  Library,一般是用了儲存設置檔等資料; 6 R! A# \# ~2 o8 |* Y: ^- C
, p. l3 `% i) O
  Documents,存儲資料,多用了保存存檔; 8 z1 ?: x; m1 s2 }8 M

$ j& [# u( [; t% e5 Z" m  tmp,暫存檔案夾。 # T+ m  [. a( U( t& x1 }) a
1 f* ]2 d- t2 m
  由於這個軟體只能在這個特定的目錄下運行(當然了,部分程式會調用系統的通訊錄、相機等元件,但仍然是受限制的),從而保證了整個系統的安全性和穩定性。 5 U/ Q/ K: h9 H; w' D
  W1 `; S/ M9 r  @$ L$ ^
  由於Unix系統下對許可權的規定相當嚴格,所以“越權”的行為是絕對不允許的。舉個例子,mobile用戶無權刪除root所有的檔,因為root的許可權高於mobile。所以有些人在修改ipa安裝後的檔時,比如進行漢化或者修改存檔,發現不能刪除乾淨軟體,或不能保存,這是因為刪除時不能刪除root所有的檔,程式本身也無法對root所有的存檔檔進行寫入操作。 0 }% k/ d4 y! S  w
: v1 G. B- K# r3 A5 @3 u- Y
  .pxl
: X4 I* N  {. d# W# _/ j1 ]9 o
" U. h& z0 O, d2 }  pxl格式在1.x時代是iPhone平臺上唯一的安裝格式,原因是那時候還沒有Cydia這樣的APT管理軟體,蘋果官方也沒有推出AppStore。由於在1.x時代積累了大量人氣,在接下來的AppStore時代中,pxl格式以其相對簡易的打包和安裝方式,仍然佔據了很大一部分市場。但隨著Installer的停止開發,iBrickr等軟體停止更新,目前唯一還在堅持使用pxl格式的就只剩下91一家了。
( R5 _1 F9 {1 a2 ]  O# B$ Q' |  q1 n0 |/ S. A1 G
  pxl安裝包通常包含3個組件:
9 Y) z0 D  g) ~, O! A; c3 [/ y' T9 Y9 h6 A; ~2 p; S1 E! E* ]. j
  PxlPkg.plist記錄程式檔的存放位置、所有者、許可權以及軟體標識等資訊; 4 r/ Y% r( u' j; b$ T
6 V4 A0 {. n* w( P; D) P7 P9 R2 k! ]
  PkgScript文件夾,存放安裝和卸載腳本; 2 p6 G1 F; E0 j' ?* Q" T

# x; K5 x. ~0 V  程式檔。 % {+ `" s! C" k( k& M4 A

2 {( `9 P6 O, c% c- I2 g8 {. ^  PxlPkg.plist檔的開頭通常是CFBundleIdentifier,記錄著軟體的唯一標識,以和其他軟體進行區分。RDPxlPackageVersion則記錄軟體版本。RDPxlPackageFireware被用來記錄可以運行的固件版本。其餘還有一些鍵值是用來記錄軟體介紹、網址、作者資訊等資料。
" \* K: L2 X; n' w' x
8 T; a% W8 m& j$ C/ r, l) Q  除了軟體標識、軟體版本和可用固件版本以外,PxlPkg.plist的核心部分就是RDPxlPackageFiles和RDPxlPackagePostflight兩項。RDPxlPackageFiles記錄了程式檔應該被複製到的路徑,並提供了是否覆蓋的參數:overwrite。而RDPxlPackagePostflight則記錄程式檔應該被賦予的所有者和許可權,分別以chown和chmod命令來實現。另外,對於含有安裝/卸載腳本的pxl來說,還會以sh命令執行相應的腳本Postflight和Preremove。 % X7 Q0 p- q; [' U! A

+ n7 H; R7 F( F: B' y! s1 L  PkgScript通常包含兩個檔,安裝後執行的腳本Postflight和卸載前執行的腳本Preremove,這兩個腳本就是標準的LinuxShellScript,以sh命令執行。
0 [1 O: {4 m9 s
' ^2 H9 A8 ~) q  安裝包的特點:
7 o; z; d8 q! E) J* k3 t0 [1 W6 P, g/ j; Q
  .deb
3 A  _) b; P# q; a: Q: z6 g$ G; b
  豐富的資源:Cydia上本身就不少,更何況任何格式的安裝包都可以轉換為deb。 6 I+ T! w% i" m/ A4 r8 ?2 j

, l# C9 t2 d/ {' |4 j  相對方便的線上購買模式:CydiaStore,不過儘管沒有AppStore的5台設備的限制,但對國內用戶來說,付款方式比較困難。 1 ~7 B' O& J4 @' [2 ^

: G+ [# y) ~4 s; y- R3 ~  破解難度較大,沒有使用AppStore的驗證方式,所以必須將驗證和防破解措施加入程式裏面,這樣就比較難破解,對軟體發展者來說是個好事。
! n9 v" K* C7 K9 g
  r* R$ v# ?) S5 Y  e' j+ r' N1 L  完善的Unix檔系統支援:無需以命令設置檔的許可權、所有者和用戶組(當然也可以以腳本來設置) + o( D) X2 z( x6 u1 |' b. S' v
$ t3 w5 v3 h6 h" ~! `
  完善的腳本支援:5個腳本依照安裝和卸載的先後順序執行,可以提供更多選擇。比如備份還原操作,可以在preinst中備份檔案,而在postrm中還原檔   u2 `: Y* q( {1 C, v* u

7 I3 {  V8 J  S, A4 V  ]  嚴格的依賴關係:deb遵循嚴格的依賴關係(於Depends和Pre-Depends指定),可以確保軟體運行所必需的元件。線上安裝的時候會自動安裝所依賴的套裝軟體。卸載時也很重要,比如套裝軟體A依賴於B,當卸載B的時候會提示A依賴於B,卸載掉B的話會導致A不能用,這樣可以確保系統的完整性和穩定性。
- x% S: Q: X: m. ]. n
2 \  s0 G8 [; @1 s( r* G  Conflicts、Replaces、Provides等鍵值的存在可以實現衝突提示或替換其他套裝軟體。 9 h$ n+ z: H0 w! T
: K! c" E: T+ j' a  y5 o$ q' z
  完全許可權:由於deb必須以最高許可權root的身份運行,deb可以對系統任何位置進行操作,換句話說,deb擁有對整個系統的完全控制,因此deb安裝包軟體可以實現很多ipa不能實現的功能。 8 n7 l5 S! M+ E# B/ F" D7 h5 ]
9 ?0 N% S0 w! ?2 ^! b
  相對簡單的獲取方式(線上或離線)和安裝方式,也不用擔心在不同機器上同步會刪掉程式的問題。
6 I% @2 a6 W- b8 l  `; J8 F. p: C9 m8 ]
9 Z& C2 K9 q4 Y) W7 E  安裝相對簡單:其實無論是哪種安裝包,安裝方法都不算很複雜,只不過deb稍微複雜一些。 " f) Y6 w) A0 T  l5 {

! Y$ `0 e- @$ I- L+ B  deb的安裝方法大體有5種:
; r, Q& f5 B" h& g0 Z# {$ F9 n% G: W' \- X- e
  Cydia或同類APT管理軟體線上安裝,這個是最佳的安裝方式,因為通常無需考慮依賴關係,但缺點是對網路的要求比較高; ( S/ l" @# Y. Y0 ^. ^

( b' `. H! T6 H- g# J  命令行中以dpkg-iXXX.deb的形式安裝,好處是可以以通配符一次性安裝多個deb,而且也可以直接看到腳本的運行狀況和安裝成功/失敗的提示資訊,缺點是需要命令行軟體的支援,如Putty/WinSCP的控制臺/iSSH/MobileTerminal,很多人也不熟悉命令行下的操作。另外,安裝完後會不顯示圖示; ; N1 B- p# t( C

. q% M. G# X0 A/ i! p4 U  放置於AutoInstall目錄重啟安裝。該方法實際是Cydia提供的一個啟動腳本,在每次系統啟動時以dpkg命令安裝AutoInstall目錄下的deb,好處是不需要命令行操作,缺點是必須要重啟,有些甚至要重啟兩次,也會出現不顯示圖示的情況;
: _5 O9 W/ z0 Q+ ^8 _1 @% d8 Q* n' ^7 o& ^: K
  利用iFile安裝,好處是圖形化操作,桌面會顯示圖示,缺點是不能一次安裝多個deb;
/ d4 N$ y3 G$ j: [0 }; Z- E
  d3 r2 ~! K) w6 M6 j  用CyderII等軟體來安裝,其原理是類比一個APT軟體管理器來下載相應的deb檔並傳到設備,然後以前面幾種方式來安裝。 3 g& O2 p' Q! P. A
% L; Q2 \/ R1 H5 y9 Q' q
  總體來說,deb的安裝都是依賴於dpkg-i命令來安裝,只不過有些是在命令行下輸入命令,有些是提供了圖形介面。但除了Cydia安裝一種方式之外,其餘幾種安裝方式都存在一些共有的問題:
  F+ Z/ Y8 ]* x) C0 Q$ [+ I
+ R* r+ ^5 E* y: t9 K0 `  不會自行搜索依賴關係,必須手動提供所依賴的deb;
! v8 m" b! `) O  A2 _$ A$ b6 _5 R. b% b+ h
  Cydia會讀取安裝腳本裏的一些特殊語句,比如僅在全新安裝時執行而不在升級時執行,安裝完成後重啟SpringBoard或設備等等。
: i: t$ K" L" j1 {& `9 Z( G" l$ @. r0 W, R! A4 J
  當然了,deb軟體的卸載也比較簡單,有兩種方式:
  Z$ F  c% F; v' S& L2 k3 m, z$ O2 r; Y  L7 t) X) y
  Cydia裏卸載,優點是卸載過程和提示資訊很詳細,全圖形介面操作,同時也提供了重新安裝的選項;
  N7 k$ {9 K* ]+ {. a% H5 P  N, Q  r6 b$ ^* O2 j, I! N/ p' I9 M
  以dpkg-rPackage_ID命令或dpkg-PPackage_ID命令來卸載(詳情後面會說);
7 e( J9 B, N. ^- t, |* R; _* W& T% U8 ?8 z3 |4 o
  Cydelete來卸載,優點是可以直接在桌面上卸載有圖示的軟體,但對那些沒有圖示的無能為力。
! W) D3 N/ e0 {1 k+ D
. l2 i3 P0 y/ w, q- ~  其實,不管是安裝還是刪除,都可以才要全手動的方法。即,解包deb之後,自己將檔放到相應位置,然後設置許可權等並執行腳本。但這樣有必要麼? / r+ i5 ~3 ?  {
0 x- p8 x( w4 R4 @2 {, x$ }
  deb的安裝過程如下: 3 w5 E- |0 l% h/ Q* H7 u, x
# ?' c# ?5 ]6 U
  讀取資料庫並鎖定,避免同時有兩個安裝程式在運行 6 L& z! s* ?: Y( g7 r  h

4 v. h# M5 ~' y" a' t, I  讀取control中的Package(套裝軟體標識)和版本資訊,並搜索資料庫,若已存在,則卸載之後再安裝; % _- R& K0 f9 v) w" a1 k& m

: o; V( T5 F6 }  檢查Depends,Pre-Depends,Conflicts和Replaces,如果檢測到已存在Conflicts中存在的軟體,則報錯並終止安裝。如未找到Pre-Depends指定的軟體,則報錯並終止安裝。如找到Replaces中指定的軟體,則卸載之;
# X/ U% |: `4 X6 J" ~5 P" m- Q* X" `  |- Y9 t0 M" E. L. i
  將資料寫入/var/lib/dpkg/status檔中;
8 {# h+ `: W4 b7 y4 k8 @* k3 K3 X" J9 _
  執行preinst腳本(如果有); ! o  F0 Y, `6 b9 t. u9 c
& M# f# F3 f' `, C" n7 s; v& M
  解包data.tar.gz,將檔放置於相應位置,並將檔列表寫入/var/lib/dpkg/info/XXX.list; 7 G) ?, K1 F2 ~5 f% j9 C8 o
9 u) j% I! M0 G; n8 Q# W/ F
  運行postinst和extrainst_腳本(如果有); & @( U0 J0 p2 z' g+ C

4 O% X; W9 K. B  如果之前的安裝都沒有出錯,即安裝成功,那麼會在status檔中寫入Status:installokinstalled資訊,否則會寫入其他狀態資料,比如Unpacked(未解包資料)、Failed-config(腳本未能成功執行)、Half-installed(安裝失敗等);
# F, F- }- @- Y! H4 T( ]0 y  h
  重新載入資料庫並解除鎖定。
6 s) r$ m4 h6 H) _, |4 o* W
4 ]2 y9 J/ z+ F- N! p  e  deb的卸載過程如下:
& j6 @# o/ h9 {+ S! `# G4 I% Y6 x( o8 t) n2 m7 ~, h8 h3 d
  讀取資料庫並鎖定; * r9 K: W1 [6 j/ a& S! f" ]
6 B, V' b& t3 X/ }& F4 [; A; u! S
  根據軟體標識搜尋資料庫;
+ h* E+ j3 n, a2 r0 H. C
) H: r& w3 Q& S  檢查是否有軟體依賴於待卸載的軟體,如果有則提示,並中斷卸載;
+ C1 A8 x. C6 {9 s6 \3 q' K6 {  R
1 w2 Z9 f6 v; ^( {% |) }, j" D3 o2 g) V  執行prerm腳本(如果有);
  D0 d: u! k4 W8 r9 m3 n$ K" T% _0 [) |
  讀取/var/lib/dpkg/info/XXX.list檔,並刪除list檔中記錄的全部檔和非空檔夾;
$ R6 q1 y. l+ b8 k' n& Z! s; D
6 ^3 ]2 L" z* k  X( P! n- n  運行postrm腳本;
, ~6 A2 {7 m0 ^9 R" a0 t
( z( F# b4 `, X: y; T% |  如果卸載命令是dpkg-r,則保留status中的記錄並改為Status:Notinstalled;如果卸載命令是dpkg-P,則刪除全部資料;
; Q, @: X/ `. G) }
! P) |& {/ n& N4 S! y+ R* F  如果卸載過程沒有錯誤的話,重新讀取資料庫並解除鎖定。 5 A' n- S7 I7 n
8 N+ m2 f1 R. Z5 }, h* t7 N$ n
  由於deb安裝的軟體可能會在運行時在/var/mobile/Documents下放置存檔檔,或在/var/mobile/Library/Preferences下放置設置檔,而這些檔並沒有記錄在list檔裏,所以卸載的時候不會被刪除。 % j: g2 G7 V- I- ~
" x  V, b3 g, c
  .ipa
, k+ L* q: _8 `2 t' c0 _' I
  v0 {& X" t$ Z3 Q- x) s( U& d  豐富的資源:AppStore上那麼多資源,apptrackr等網站也提供了很多破解版。 ! j$ G9 i2 q0 D9 S) O

# U" x  L# ^4 @$ c" g  完善的更新、後期服務。
0 z- N# e" j5 K: M) f
0 J4 ?# c& I1 O0 T  只能使用最小許可權,保障安全性。 4 M1 b( f+ S8 x" W

/ ~/ f* m6 p2 T% i  不涉及系統級的操作,所以一般不容易造成死機或白蘋果(有些是因為資源消耗太大所以卡死)。 % u; L1 P; X" ^1 C2 s' y- j+ l

( o) j+ o. Y& |0 m' N" }" \  便捷的安裝方式,無論是直接在設備上用AppStore安裝,還是用iTunes來同步,抑或是用Installous和91這類第三方軟體來安裝,都是很方便快速的安裝方式。 3 L8 h* }. n" i* B2 A6 o' b- S- _) G5 x

& ?$ Z. T6 I" b0 ^# R( S! R5 R  超級簡單的卸載方式:還有什麼比只需要點一個X就能卸載更簡單呢? * T2 \9 g  b( v8 r1 i

3 X0 G9 C% K- b  完全刪除,不會留下任何垃圾檔(如存檔、設置檔等) + {$ ]  L  D* h9 }7 @/ y

9 ~* C/ l" P0 J# E) f# H6 T9 y3 d+ l$ g  總體來說破解還是比較容易的,但現在越來越多軟體加入了防破解措施。
- r' Q6 G3 ]# I3 o1 t6 e8 k8 h) c9 O9 }: E6 B
  之前提到過,ipa軟體是被安裝在一個類似于沙盒的環境中,除了能對/var/mobile/Media/DCIM目錄(拍照、截圖存放目錄)進行操作,或是調用壁紙、鈴聲、相機等元件,不能對系統進行任何干涉,這樣在最大程度上保證了系統的穩定運行,也不會干擾其他軟體的正常使用。但問題是,由於ipa軟體的許可權很低,想要對系統進行修改,尤其是應用補丁時,ipa就無能為力了。 7 C' O+ g# Z: F4 c% `3 M% ?
- Z4 y  ~+ F" b; c4 U, Y
  ipa軟體官方的安裝方式有兩種,一是在AppStore這個軟體中下載安裝,二是用iTunes同步。 8 G' r9 n& o- c9 X
$ C& A4 o$ t' h/ E  `0 Z1 X" I5 j
  前者的問題主要是網路問題,網速不好很容易安裝失敗;GPRS之類的上網安裝又很耗流量。後者的問題主要是不能在不同系統下使用(包含不同電腦和同一部電腦上的不同系統),在其他系統上同步會抹掉原有的軟體。當然了,iTunes每次同步時間比較長也是經常被人詬病的。尤其是當安裝軟體比較多的時候,每次同步之前的備份需要很長很長時間,這個很噁心(不過可以直接X掉備份操作)。 + s3 v! z! d4 X3 J  u

/ H5 r& C* y8 ]- ?7 Z  由於以上兩種方式存在一些問題,所以很多人會選擇使用Installous或91來安裝ipa,這也確實是個不錯的選擇。 1 @' h. I1 C, i2 F' j$ g7 T9 W

0 c/ s* c3 B" Z  Installous一般沒什麼問題,但對部分驗證比較嚴格的ipa處理不是很好。雖然Installous基本能代替iTunes,但畢竟不完全等同。最典型的就是Installous安裝Microsoft官方出的LiveMessenger(正版,非破解版)時不能運行。實際上Installous對很多未破解的正版軟體支援不是很好。 - ~" ~8 m; o6 ^3 l6 d3 t9 Y/ @

" l+ b( _* j( C3 E! x  至於91,經常被人批評。91雖然可以安裝ipa,但除了Installous都有的正版軟體的支援問題外,由於91的安裝機制有缺陷,軟體不能實現多語言,只會使用英文介面,而忽略掉zh_CN.lproj,zh_TW.lproj這些語言包。這對那些用希望使用漢化版的人來說實在是一個悲劇。所以通常是要避免使用91來安裝ipa的。 # T4 q( J" `4 d" v' Z" u

0 [8 p$ l( l! A% Y  至於卸載,三種方法: . ]; M! X+ B: n
+ P. B- `+ A# e& K  e& p
  設備上按住圖示直到開始晃動,點擊圖示左上角的X即可卸載;
2 x! r- F/ g/ H5 r2 G' T5 h& K5 b0 d
  於iTunes中取消選中,然後同步 7 L" ]/ {! u. v3 t5 _! `0 E

. M3 b- S& [7 k" G1 }9 x" O' [  找到/var/mobile/Applications下的相應目錄,強行刪除整個檔夾。這個在前面兩種方法無法使用是可以採用(有時候卸載體積太大的軟體,比如超過1G,因為刪除過程太長導致失去回應並刪除失敗。),但這種方法會造成系統的不穩定。除非是確實碰到了問題,否則強烈建議不要使用。 % U; m9 C! F& a6 o* @- N& w6 T) t* A
' r* X  M; r# [( T9 i5 b# y
  .pxl : u# X( L) j, f  z0 ~
7 @& F- Z" o) C' n( [; V
  嚴格來說,pxl格式的資源並不算多,但也不少。現在使用pxl格式的絕大多數都是91的用戶。 * `0 L( X+ v4 v8 R8 a

2 |6 l+ R% B8 e' O; d  從時效性上來說,很多軟體(主要是AppStore上的)一被人破解就馬上會被人轉成pxl格式,這樣來說,pxl格式的更新還是不錯的。 - s2 I1 o* {7 D  {2 d9 ?: I

- h8 j# C* N4 A  W1 ~$ ?  由於91手機助手沒有iTunes同步會抹掉軟體的問題,加上其他一些比較方便的功能,使得很多新手都是從91開始瞭解並熟悉iPhone/iPodTouch的使用。其結果是,pxl格式依賴于91而生存。
4 k( s% \$ M% T( H; \+ ^% S0 \4 y, ]4 {. f
6 E- l" L* Y3 v. ^7 D" u  pxl格式的流行也不是歷史的遺物,而是符合市場規律的需求。91助手的便捷的軟體管理方式(尤其是支援WiFi管理),加上免費的旗號,使得pxl格式在新手中很受歡迎。 & `3 d+ ?1 _# N1 [5 w9 R
. i: q2 k+ X! W( ^6 X8 s- H
  實際上,pxl格式和deb格式具有的功能完全一樣。雖然pxl不能記錄檔的許可權等資料,但完全可以用腳本來彌補。即是說,pxl格式和deb格式其實是不相伯仲的。而且因為pxl格式的製作並不需要比較少見的Unix環境,尤其是Debian環境,其本身是優於deb格式的。 % g4 ?0 ?" T4 Y) I/ R) {
: J7 e' R! a/ K3 _( F. B
  但為什麼現在很多人都經常在說不要使用pxl呢?我個人認為,原因主要有以下幾個:
* V3 ^' ~2 d5 d" I/ T
5 I; T/ c. e- {' |9 s7 m( {# \  資源的局限性:除了91公司自己開發的幾個軟體之外,其餘所有軟體都是從deb和ipa轉換而來。如果原版軟體沒破解,pxl無能為力(比如Microsoft官方出的LiveMessenger和Cydia上一眾沒被破解的軟體);
- O& e9 [- K$ n' X  `: V7 t$ T- d5 X2 ?" _
  資源時效性:跟上面一點相似,pxl格式大部分是從其他格式轉換而來,跟原版相比總是會慢一些,尤其是當無法破解時,pxl根本就出不來;
0 i2 b6 K$ `- ^' m: q* W2 W( v2 i" {2 L* R3 [
  打包人水準有限:現在很多人都是直接用91助手來打包pxl。對大部分只有一個XXX.app目錄的程式來說一般不會有問題,但若遇見那些對檔許可權等資料有嚴格要求的軟體(比如可執行檔沒有可執行許可權,或是mobile用戶不能改寫root所有的檔等等),或是需要比較複雜的腳本才能運行的軟體,往往pxl製作者並沒有能力去製作一個完善的pxl出來,這樣也導致了許多安裝使用上的問題;
2 N5 U0 t: P0 O4 H2 ], k# L: m: Z, v+ [  k- ^- j: T
  安全性:絕大部分人在製作pxl的時候都習慣用chmod-R命令來將整個XXX.app目錄及其中的全部檔和子目錄設為755/775/777許可權,而這種行為會造成一定的安全隱患。關於這些數位的意思請自行搜索相關資料。這裏簡單說明一下。644屬性表示僅有該檔的所有人才可以進行改寫操作,其餘任何人都只能讀取,任何人都不能執行這個檔。755和775是在644的基礎上加入了可執行許可權,755是該檔所在的用戶組的所有人都可以改寫。而777許可權則標識任何人都可以改寫並執行。由於mobile本身是受限帳戶,如果使用777許可權的話,有機會通過這個漏洞來獲取整個系統的控制權。只不過因為iPhone系統相對封閉,也不太有機會造成損失。但採用775和777許可權是不應該的; ! n- s5 ~% X% z: D" V

6 ?  e- n9 S% n, a- P+ t& }  ipa轉pxl的存檔問題:不少人都有這樣的經歷,在遊戲A存檔之後再進遊戲B,存檔B之後再進A,發現A的存檔已經不在了。原因在於,ipa轉換成的pxl軟體,存檔全部是放在/var/mobile/Documents目錄下,而正好有兩個軟體的存檔檔案名相同(最常見的就是data.sav或save.data),互相改寫之後導致不能讀取。這種問題也發生在ipa轉deb上,而且無法解決; , Y! {2 A1 h' E( c+ V

6 h5 {- e- W8 ~! r  f  無法完整刪除:卸載pxl格式時,不會刪除存檔檔、配置檔、暫存檔案等資料,長期使用會導致可用空間減少;
8 G' a9 p& J( _- c$ t$ W* b9 o& m$ B
  在部分機型上存在相容問題:有些機器越獄後並沒有將系統分區中的/Applications目錄轉移到/var/stash的用戶分區中。由於系統分區的可用空間很少(默認500MB,通常可用空間不超過50MB),強行往/Applications裏安裝會導致剩餘空間消耗殆盡或安裝失敗。
* z7 M5 U" X- G2 S  f
+ {3 I' v1 {" Y: `  E3 b  由此可以看出,pxl格式的問題更多不是pxl本身的問題,而是打包者的問題以及安裝方式的缺陷所致。
; Y2 O- Y. ~# i5 D$ O% @, q4 C
6 M1 |7 n5 S9 J" V  另外要指出的是,pxl最大的提供者,91,經常是轉載他人發佈的軟體(包括網友自己購買破解的,或Cydia上直接下載的)然後當作自己發佈的軟體,對版權問題完全不在意,這樣也引起了很多人,尤其是原發佈者的反感。這種赤裸裸的剽竊行為實在是令人不恥。正因為這樣,很多人是因為不爽91而不爽pxl,這實在是冤枉pxl格式本身了。 / s* j$ j  ]  T8 p& ~
/ |' O" z0 L; F- C& v5 r
  總結:
! g  A% _% X( I( B: r4 E: n2 S& Y  M. e( Y
  一般的軟體還是儘量用ipa格式,不要使用ipa轉換成的deb或pxl格式,這樣可以確保相容性和安全性。而在系統級的程式(如SBSettings和輸入法),ipa是絕無能力的,那麼最好的選擇還是deb。pxl作為快被淘汰的格式,還是果斷的放棄比較好。 4 E1 C' I# ^! u: s
( r: a: X9 r+ [1 _6 z9 v+ C
  至於ipa和deb的安裝方式,ipa的安裝首選iTunes同步和AppStore線上安裝,次選Installous,以保證最佳相容性。deb的安裝首選Cydia線上安裝,次選除91外的其他任何安裝方式。
; _4 J- W  H) J! N3 J- E
4 R/ h4 V( p9 J7 a  任何情況下都不推薦用91來安裝ipa和deb,因為91的安裝機制並不完善,很容易出問題。
9 H8 V- y* w9 ~
, [3 P7 x! [  e* T) F5 A( A- n. Z  [" ~) E
本文是原樣轉過來的,甚至字體以及顏色都沒有更改。主要是為了方便機友查閱,也好進行更進一步的操作。感謝威鋒網,感謝作者autopear。
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 16-9-2025 21:20 , Processed in 0.333262 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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