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

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

[複製鏈接]
發表於 12-9-2010 21:46:02 | 顯示全部樓層 |閱讀模式
作者autopear。
0 L- W/ `& g7 q2 n0 Q9 Z+ W8 y+ ~. c+ h# ~6 a8 O
前言: % I( O1 o7 d) y- |

  v7 M5 z+ R7 Z! ~  目前iOS平臺上常見的安裝包有三種,deb、ipa和pxl。 : {  p! D0 D3 v& W* W
0 W& d8 e- m9 G6 v# ^) L1 G
  其中deb格式是Debian系統(包含Debian和Ubuntu)專屬安裝包格式,配合APT軟體管理系統,成為了當前在Linux下非常流行的一種安裝包。進入2.x時代之後有Cydia作者JayFreeman(saurik)移植到iPhone平臺上,一起的還有APT軟體管理系統。 ) Y9 Z, X! w  G, e( c

$ k2 F  L4 ^9 w5 ~+ b  而ipa格式則是蘋果在iOS平臺上推出的專屬軟體安裝包,在2.0固件開始才正式使用,是目前iPhone/iPodTouch/iPad平臺上唯一的官方安裝包。
# [! w: Q4 |; a$ E. @, `6 T) |8 e) h0 P9 H
  而pxl格式則起源於Mac系統上的pkg安裝包,被廣泛應用於1.x固件時代,曾經是iPhone平臺上唯一的軟體安裝包,現在仍在被91等軟體所使用。 7 n" ^$ l# r# J0 ?

, t& Z* P7 p$ R  安裝包格式: . R/ I2 r" h7 g  s' P) E& l8 W
% z+ [( y1 Q6 i& F( ]6 u
  .deb
) H& d1 G5 \. e5 Y( m& ~4 ]9 t' i! F
1 j: z# b- ]& E* {  P  deb是Unix系統(其實主要是Linux)下的安裝包,基於tar包,因此本身會記錄檔的許可權(讀/寫/可執行)以及所有者/用戶組。 5 o/ t+ B" i3 _# C7 [- |0 o

0 Y5 V+ [0 V/ q  由於Unix類系統對許可權、所有者、組的嚴格要求,而deb格式安裝包又經常會涉及到系統比較底層的操作,所以許可權等的設置尤其重要。 + F+ ^8 t( e6 r9 I: e, l

* Y  a5 h0 `& e( T  deb包本身有三部分組成: ! g, U' E; {: b& h/ M! V

9 J: Y9 w% `6 E+ b# ]  資料包,包含實際安裝的程式資料,檔案名為data.tar.XXX; 9 O. @) `0 H0 o/ q5 l
! l; a5 |1 G% E; B; y' A
  安裝資訊及控制腳本包,包含deb的安裝說明,標識,腳本等,檔案名為control.tar.gz;
) S' _: J; _/ w* F* i
5 I9 C  g2 J; p3 u  最後一個是deb檔的一些二進位資料,包括檔頭等資訊,一般看不到,在某些軟體中打開可以看到。
) h* f. C6 @( h: u2 C  z5 v5 S! G+ g8 t; V2 x
  deb本身可以使用不同的壓縮方式。tar格式並不是一種壓縮格式,而是直接把分散的檔和目錄集合在一起,並記錄其許可權等資料資訊。之前提到過的data.tar.XXX,這裏XXX就是經過壓縮後的尾碼名。deb默認使用的壓縮格式為gzip格式,所以最常見的就是data.tar.gz。常有的壓縮格式還有bzip2和lzma,其中lzma壓縮率最高,但壓縮需要的CPU資源和時間都比較長。
' C# w. A4 G" _7 G* l8 n* s: {; E; p4 V% ]0 U3 s
  data.tar.gz包含的是實際安裝的程式資料,而在安裝過程中,該包裏的資料會被直接解壓到根目錄(即/),因此在打包之前需要根據檔所在位置設置好相應的檔/目錄樹。
! J' L' ?* t) g) y+ d3 Q) A
% @. }+ e/ [$ _! `' z. ]  而control.tar.gz則包含了一個deb安裝的時候所需要的控制資訊。一般有5個檔: / Q- q8 Q$ @$ Z0 u  ~

8 l7 j6 [0 Q" O' O$ V! p0 H  control,用了記錄軟體標識,版本號,平臺,依賴資訊等資料;
& F/ C$ Q+ Q6 \; g% \! \7 `/ x. C3 N
  preinst,在解包data.tar.gz前運行的腳本; $ I9 Z6 q2 x/ ]% `
$ Z  k! i- ]9 R1 O' Q3 j. H4 v
  postinst,在解包資料後運行的腳本; $ p6 g3 _/ F7 }# w* a! g
1 }8 ?* P6 m( b$ |% m$ s, d
  prerm,卸載時,在刪除檔之前運行的腳本;
; X1 c, ?. N- O  T3 f: V- O# ?( o( p+ Y
  postrm,在刪除檔之後運行的腳本;
# U1 j' x! b: e) g! b; q3 B5 c6 H- R6 t) i; D' z+ D+ u" [
  在Cydia系統中,Cydia的作者Saurik另外添加了一個腳本,extrainst_,作用與postinst類似。 . k" g& k8 N4 x) b5 z

4 W+ @; ]/ w( P! @  .ipa 1 b3 n" H- R4 |( p5 |) r( c. I
8 D. G/ P; l5 @6 b
  使用過MacOS的人可能都知道,Mac下的軟體大部分都只有一個.app目錄,裏面包含了程式全部資源和可執行檔。簡單來說,Mac下的軟體就像是Windows下的綠色軟體一樣,解壓後即可使用,不需要安裝,卸載的話也只用刪除程式檔即可(這裏不涉及pkg格式安裝包)。而ipa格式可以視為這種.app軟體的衍生物。 6 {0 Y: K/ |& _7 U( t

; i5 v* {9 h7 E! `3 c' O$ N0 E  ipa檔實質是一個zip壓縮包(不是rar或7z包),包含3個元件:
5 L/ q/ H; c& i3 a( p: Y2 T( e& I  m- o0 y/ p
  payload目錄下的.app目錄,這個是軟體的主程序;
3 ~/ I8 {- k9 r& {' s( f8 F$ M) Y, ]) B, q2 M" I
  iTunesArtwork,實質是一個無尾碼名的png圖片,用來在iTunes中顯示圖示;
) p% N- d: w+ C8 Z2 ~5 ]
  u/ ]# Y# ~( S- F* V0 c  iTunesMetadata.plist,記錄購買者資訊、售價等資料。 + f: P9 c2 D0 L2 c

3 V8 m: S" i0 |5 F) ^5 s  由於zip包不能記錄許可權和所有者等資訊,所以蘋果規定了ipa的安裝方式,即全部ipa都會解包安裝在/var/mobile/Applications目錄下,全部檔和目錄的所有者及用戶組均設為mobile(ID為501),主程序(可執行檔)的許可權設為0755(所有人都可以執行,但只有所有者可以修改),可執行檔在plist中定義。全部目錄許可權設為0755,而其他所有檔都設為0644(僅所有者可以修改,其餘人只允許讀取,全部人都不允許執行)。
# F2 X- c* q5 }" B5 X6 o- g* b: _7 u! y1 z8 r# k. l6 o
  ipa解包後並非直接放置於Applications目錄下,而是放在一串由隨機碼構成的目錄下,其作用在於,只允許這個軟體運行在一個特定的沙盒(Sandbox)中,不能干擾其他軟體。因此那串隨機碼目錄下,除了ipa本身的三個組件之外,還有三個目錄: ; z8 Z9 c- {+ {3 Q

  {! x$ T# O& L' g: j: m$ c, ~  Library,一般是用了儲存設置檔等資料; ) E  ^! f! w* K
8 S4 {2 r  Z% \, Y; P, `
  Documents,存儲資料,多用了保存存檔; . O$ E- R. t7 T, ~$ j9 W

) r9 R# Q: e* I& J% K9 g* c8 V/ @  d  tmp,暫存檔案夾。
- }: g" J: Y8 s/ _& r% T' U+ P6 R
8 z/ k; j' L6 R4 z. G  由於這個軟體只能在這個特定的目錄下運行(當然了,部分程式會調用系統的通訊錄、相機等元件,但仍然是受限制的),從而保證了整個系統的安全性和穩定性。
2 R: G' K' Z* ?
% v3 c/ b) _1 i, B- c& o; i  由於Unix系統下對許可權的規定相當嚴格,所以“越權”的行為是絕對不允許的。舉個例子,mobile用戶無權刪除root所有的檔,因為root的許可權高於mobile。所以有些人在修改ipa安裝後的檔時,比如進行漢化或者修改存檔,發現不能刪除乾淨軟體,或不能保存,這是因為刪除時不能刪除root所有的檔,程式本身也無法對root所有的存檔檔進行寫入操作。   S% R" E3 J9 x% x
, b/ Z1 F; }: C) W7 a( [/ ~9 i
  .pxl
3 v5 J9 k6 b4 n6 I" `- S- n/ r# k2 z) x3 f! I: O9 p
  pxl格式在1.x時代是iPhone平臺上唯一的安裝格式,原因是那時候還沒有Cydia這樣的APT管理軟體,蘋果官方也沒有推出AppStore。由於在1.x時代積累了大量人氣,在接下來的AppStore時代中,pxl格式以其相對簡易的打包和安裝方式,仍然佔據了很大一部分市場。但隨著Installer的停止開發,iBrickr等軟體停止更新,目前唯一還在堅持使用pxl格式的就只剩下91一家了。
. }. v0 @% P8 A! J2 a! W) I  x$ u/ \- Q7 |
  pxl安裝包通常包含3個組件: 9 T, B+ }; A+ T4 h
2 l0 e' d: B' E" E0 D+ r9 C
  PxlPkg.plist記錄程式檔的存放位置、所有者、許可權以及軟體標識等資訊;
' F2 R, g3 ~4 S4 g4 E8 ?% b& E4 u4 E- U6 K8 ~% M1 @
  PkgScript文件夾,存放安裝和卸載腳本;
% M) x' X) J. @* ~% \
; _% P# X  I7 h+ U  i  程式檔。 * C& ?+ i4 B1 R( e" O
. u0 }5 X; X& n4 c
  PxlPkg.plist檔的開頭通常是CFBundleIdentifier,記錄著軟體的唯一標識,以和其他軟體進行區分。RDPxlPackageVersion則記錄軟體版本。RDPxlPackageFireware被用來記錄可以運行的固件版本。其餘還有一些鍵值是用來記錄軟體介紹、網址、作者資訊等資料。 ! ~8 [& s9 z3 B7 [1 {
0 q; k( W1 [( A- R3 y1 @
  除了軟體標識、軟體版本和可用固件版本以外,PxlPkg.plist的核心部分就是RDPxlPackageFiles和RDPxlPackagePostflight兩項。RDPxlPackageFiles記錄了程式檔應該被複製到的路徑,並提供了是否覆蓋的參數:overwrite。而RDPxlPackagePostflight則記錄程式檔應該被賦予的所有者和許可權,分別以chown和chmod命令來實現。另外,對於含有安裝/卸載腳本的pxl來說,還會以sh命令執行相應的腳本Postflight和Preremove。
! J3 ]# f9 D2 o# _1 C2 E3 L8 s  B' F& E( W" ?$ i
  PkgScript通常包含兩個檔,安裝後執行的腳本Postflight和卸載前執行的腳本Preremove,這兩個腳本就是標準的LinuxShellScript,以sh命令執行。 5 V  N2 o" p- M3 M5 i. c5 Q! h
4 t' I4 b" u% _( [* j  m
  安裝包的特點:
. A% r9 D: Z& X' `& |( |" |  l% x7 Q% _1 m
  .deb
- A. w8 E! x+ G6 W! q' C9 _' h' o2 w7 k* q
  豐富的資源:Cydia上本身就不少,更何況任何格式的安裝包都可以轉換為deb。
0 I, X7 _2 f' Q- p! h& z# _1 V% I
5 ]' i0 x3 N* Q: e& ~3 W. t1 {  相對方便的線上購買模式:CydiaStore,不過儘管沒有AppStore的5台設備的限制,但對國內用戶來說,付款方式比較困難。
' [5 X0 F; H( {' C( X5 R) H+ g; e5 y5 h' G1 x# O, M) n. `
  破解難度較大,沒有使用AppStore的驗證方式,所以必須將驗證和防破解措施加入程式裏面,這樣就比較難破解,對軟體發展者來說是個好事。
0 s0 m' d# X- H$ N* D% w
$ P: c+ ^; |  B7 L  完善的Unix檔系統支援:無需以命令設置檔的許可權、所有者和用戶組(當然也可以以腳本來設置)
6 s% y0 E2 E1 u/ u! I; w- C+ r
  m! X" y$ K# Z! A' @+ ?  完善的腳本支援:5個腳本依照安裝和卸載的先後順序執行,可以提供更多選擇。比如備份還原操作,可以在preinst中備份檔案,而在postrm中還原檔 : d- X4 k9 e7 g% h3 E3 }9 {& O
/ O+ t, o  q0 a! R2 t! k/ I
  嚴格的依賴關係:deb遵循嚴格的依賴關係(於Depends和Pre-Depends指定),可以確保軟體運行所必需的元件。線上安裝的時候會自動安裝所依賴的套裝軟體。卸載時也很重要,比如套裝軟體A依賴於B,當卸載B的時候會提示A依賴於B,卸載掉B的話會導致A不能用,這樣可以確保系統的完整性和穩定性。
3 i  B. ?* I9 k1 P
, r: V9 U- z' r" N9 ]/ {" e  Conflicts、Replaces、Provides等鍵值的存在可以實現衝突提示或替換其他套裝軟體。
6 x) M, M% l8 ^! u+ P5 x
) f- N' G( P/ n+ n+ A1 t  j$ f  完全許可權:由於deb必須以最高許可權root的身份運行,deb可以對系統任何位置進行操作,換句話說,deb擁有對整個系統的完全控制,因此deb安裝包軟體可以實現很多ipa不能實現的功能。 1 Z& J' T6 ?' Q: f; Z* R
8 v  R/ {0 k/ P3 j' |. i7 f
  相對簡單的獲取方式(線上或離線)和安裝方式,也不用擔心在不同機器上同步會刪掉程式的問題。 $ N# P! }1 }: w# p+ E+ a
, q( ^% v+ w3 ~' @$ T1 h/ F3 d( I3 u7 K
  安裝相對簡單:其實無論是哪種安裝包,安裝方法都不算很複雜,只不過deb稍微複雜一些。 6 l! D7 x  [& V& o

/ t0 g7 m/ ^! g! s2 B# B  deb的安裝方法大體有5種: * V) |8 t) T8 R: a. g2 i

9 q" Z6 Z( |) e& g# H  Cydia或同類APT管理軟體線上安裝,這個是最佳的安裝方式,因為通常無需考慮依賴關係,但缺點是對網路的要求比較高;
1 Y6 p! u' W: h9 Z6 C( R( ?
$ M. K$ I( c2 A3 H# u- b5 m. G  命令行中以dpkg-iXXX.deb的形式安裝,好處是可以以通配符一次性安裝多個deb,而且也可以直接看到腳本的運行狀況和安裝成功/失敗的提示資訊,缺點是需要命令行軟體的支援,如Putty/WinSCP的控制臺/iSSH/MobileTerminal,很多人也不熟悉命令行下的操作。另外,安裝完後會不顯示圖示; 8 Q6 m" R( R" i$ ?: S' M

3 w6 U& o# g3 p$ d  放置於AutoInstall目錄重啟安裝。該方法實際是Cydia提供的一個啟動腳本,在每次系統啟動時以dpkg命令安裝AutoInstall目錄下的deb,好處是不需要命令行操作,缺點是必須要重啟,有些甚至要重啟兩次,也會出現不顯示圖示的情況;
# W0 r5 B* ?) ~9 G$ u9 A$ Y6 o- [' p( P
  利用iFile安裝,好處是圖形化操作,桌面會顯示圖示,缺點是不能一次安裝多個deb; & D) Q! I7 Z3 z/ k/ t3 F) K1 m

4 a$ t& v5 p( e; A* G& c4 b6 F  用CyderII等軟體來安裝,其原理是類比一個APT軟體管理器來下載相應的deb檔並傳到設備,然後以前面幾種方式來安裝。 ) W& }* i  X2 r+ Q" V* S
& ~( A! w- d' n9 m
  總體來說,deb的安裝都是依賴於dpkg-i命令來安裝,只不過有些是在命令行下輸入命令,有些是提供了圖形介面。但除了Cydia安裝一種方式之外,其餘幾種安裝方式都存在一些共有的問題: 4 j8 W3 E; f; ^1 {2 K; ]0 l

& B7 k/ A4 u: y3 d" q, M& T# x  不會自行搜索依賴關係,必須手動提供所依賴的deb;
$ i2 p# }. \9 s1 p4 ~0 E8 ?9 V
+ b7 G# \2 u. |: _: h  Cydia會讀取安裝腳本裏的一些特殊語句,比如僅在全新安裝時執行而不在升級時執行,安裝完成後重啟SpringBoard或設備等等。 . @# @! U+ b2 W0 B! g9 q

0 b+ H# X# {3 F1 ^2 I6 L+ g  當然了,deb軟體的卸載也比較簡單,有兩種方式: . G4 o- W: W4 r4 ^# c* e
2 ?- ]; q8 Z, i! v3 ]3 K
  Cydia裏卸載,優點是卸載過程和提示資訊很詳細,全圖形介面操作,同時也提供了重新安裝的選項; ) `" \$ C( G2 R

8 ?1 w/ [. |$ G  Q2 C  以dpkg-rPackage_ID命令或dpkg-PPackage_ID命令來卸載(詳情後面會說);
1 V( N. d! e6 D' O- y' l
4 |. h8 G" M! [5 \4 e- ?# u  Cydelete來卸載,優點是可以直接在桌面上卸載有圖示的軟體,但對那些沒有圖示的無能為力。 ; O' k% o& q( q
( l# Q% E7 l/ N( N3 Y# _8 P
  其實,不管是安裝還是刪除,都可以才要全手動的方法。即,解包deb之後,自己將檔放到相應位置,然後設置許可權等並執行腳本。但這樣有必要麼?
. j, h0 ~- E5 r  X& Q/ O# m. Y
2 H$ ?! n/ F" v- x& g9 Y  deb的安裝過程如下:
" U: w0 I. P  R" [; F
0 |5 y7 l! p# J0 C, U) ]0 ~8 `* v  讀取資料庫並鎖定,避免同時有兩個安裝程式在運行
3 x) Y% |: f: n& ^9 P; I& g( K9 f
& r& w* v. h% K# w4 n9 p  U" |8 s5 Y  讀取control中的Package(套裝軟體標識)和版本資訊,並搜索資料庫,若已存在,則卸載之後再安裝;
$ v+ q8 `: ]/ k( a; v. N2 |5 y$ Q, G0 X5 @- R6 c0 E# }  _% s7 X
  檢查Depends,Pre-Depends,Conflicts和Replaces,如果檢測到已存在Conflicts中存在的軟體,則報錯並終止安裝。如未找到Pre-Depends指定的軟體,則報錯並終止安裝。如找到Replaces中指定的軟體,則卸載之;
  K/ x5 r7 E4 H+ y+ I- b- `" u. f7 g
  將資料寫入/var/lib/dpkg/status檔中; 2 W, U; V3 I+ l# N/ [6 g3 q! R% b' x

' L1 H, X/ |$ x7 Z  執行preinst腳本(如果有);
8 S' G& [; T3 W5 s
! y; x6 I, R* [" D  解包data.tar.gz,將檔放置於相應位置,並將檔列表寫入/var/lib/dpkg/info/XXX.list;
. M% s; @; M: b& G. f* _) x1 \$ f) l5 Z
  運行postinst和extrainst_腳本(如果有); & f5 U3 F* J5 r- ~& |

4 a4 K. Z# z7 P  如果之前的安裝都沒有出錯,即安裝成功,那麼會在status檔中寫入Status:installokinstalled資訊,否則會寫入其他狀態資料,比如Unpacked(未解包資料)、Failed-config(腳本未能成功執行)、Half-installed(安裝失敗等);
: T4 r, ~& Y2 q  U+ A. b
7 a! w' {2 q. I" e  v' Q  重新載入資料庫並解除鎖定。 ' L0 t' ^9 R$ T$ V  s
  s4 t/ h6 R8 m4 {
  deb的卸載過程如下:
4 ~8 A3 y* @# l$ b; `0 N* ~# K$ A2 Y
  讀取資料庫並鎖定;
% K: E% ?6 h+ u6 |% h/ y; l
2 {( t% n  k- z, s- R2 J5 H  根據軟體標識搜尋資料庫; 4 j2 b3 V4 S* V5 ^4 E( G5 E4 ^
* u) p( G" H9 ]
  檢查是否有軟體依賴於待卸載的軟體,如果有則提示,並中斷卸載; , `* F1 P5 d1 L# i% Q7 g

- C; {5 i8 P9 }! v# u- ]6 X- D& C  執行prerm腳本(如果有);
) P+ W# c6 [( M0 e! W3 ]) C6 y0 K2 K
/ B" N8 h8 z- H5 g1 A/ L# h: C$ {: ^  讀取/var/lib/dpkg/info/XXX.list檔,並刪除list檔中記錄的全部檔和非空檔夾; 2 ^7 H- J8 V( f9 k3 A7 w: K
! D1 Q9 a% X8 k$ e- R/ T, x
  運行postrm腳本; 5 p  l( u1 \$ p, n' f' Q4 z

4 n0 R- d% h  P  u; D# @  如果卸載命令是dpkg-r,則保留status中的記錄並改為Status:Notinstalled;如果卸載命令是dpkg-P,則刪除全部資料; ! u  L, l' \; H; {, t0 c0 W

7 b7 Z9 H, Z5 @$ v* e$ O  如果卸載過程沒有錯誤的話,重新讀取資料庫並解除鎖定。
2 I8 q  A& `$ Q! q( i3 S9 z1 j  a: C% [' l& Q4 {: T) P6 H
  由於deb安裝的軟體可能會在運行時在/var/mobile/Documents下放置存檔檔,或在/var/mobile/Library/Preferences下放置設置檔,而這些檔並沒有記錄在list檔裏,所以卸載的時候不會被刪除。
/ q# w5 n+ V) \/ s$ r3 o3 L% B7 _. B- s7 T* Z  t  u5 G  D# c# T- Z6 i
  .ipa 9 G3 o7 ^8 a; v+ S* ~
4 @0 {: ]5 x' `1 I
  豐富的資源:AppStore上那麼多資源,apptrackr等網站也提供了很多破解版。
7 K7 {. X  F. t  A6 T7 U" W, J5 B- G  I3 c+ j
  完善的更新、後期服務。
. i  I; {  Q1 s; w6 c3 f1 K$ W9 l3 V' h; V  x+ l- L& z
  只能使用最小許可權,保障安全性。
) R7 ~. a- g$ K! x; s$ v5 Y
/ n; m5 W" i' A. M; a  不涉及系統級的操作,所以一般不容易造成死機或白蘋果(有些是因為資源消耗太大所以卡死)。 - o/ ]; o, S# @) ~% R& e

4 _2 ]+ i% v. [. K- Z  便捷的安裝方式,無論是直接在設備上用AppStore安裝,還是用iTunes來同步,抑或是用Installous和91這類第三方軟體來安裝,都是很方便快速的安裝方式。 $ i* k1 d# N, B$ M, g
/ D- Z/ k6 ~. `+ A' q8 F
  超級簡單的卸載方式:還有什麼比只需要點一個X就能卸載更簡單呢?
( l* H  X8 G- P
/ U! x9 C6 C8 f: b( \  完全刪除,不會留下任何垃圾檔(如存檔、設置檔等) ' ^7 T' i& H8 K+ a9 G
2 O# q) O1 ^5 R3 }5 A
  總體來說破解還是比較容易的,但現在越來越多軟體加入了防破解措施。
% t- L$ |0 v& W3 ?
. I  u4 q. v9 b7 l1 F+ n: \  之前提到過,ipa軟體是被安裝在一個類似于沙盒的環境中,除了能對/var/mobile/Media/DCIM目錄(拍照、截圖存放目錄)進行操作,或是調用壁紙、鈴聲、相機等元件,不能對系統進行任何干涉,這樣在最大程度上保證了系統的穩定運行,也不會干擾其他軟體的正常使用。但問題是,由於ipa軟體的許可權很低,想要對系統進行修改,尤其是應用補丁時,ipa就無能為力了。
" t5 R" b  n# L
, _6 [5 @# @- v+ @  [  ipa軟體官方的安裝方式有兩種,一是在AppStore這個軟體中下載安裝,二是用iTunes同步。 0 s5 o" k, R4 F' B2 m
, k# g! l6 l: ~1 |+ R
  前者的問題主要是網路問題,網速不好很容易安裝失敗;GPRS之類的上網安裝又很耗流量。後者的問題主要是不能在不同系統下使用(包含不同電腦和同一部電腦上的不同系統),在其他系統上同步會抹掉原有的軟體。當然了,iTunes每次同步時間比較長也是經常被人詬病的。尤其是當安裝軟體比較多的時候,每次同步之前的備份需要很長很長時間,這個很噁心(不過可以直接X掉備份操作)。 ! N; ^  H/ r0 Z& ?5 C3 u# q. r, x2 ~  `

; d2 p& `- n' `, s) O  由於以上兩種方式存在一些問題,所以很多人會選擇使用Installous或91來安裝ipa,這也確實是個不錯的選擇。 - j7 ?  E0 C0 X, A! }

& _' b* E$ f* ]9 M7 p0 b8 a2 b* h9 |  Installous一般沒什麼問題,但對部分驗證比較嚴格的ipa處理不是很好。雖然Installous基本能代替iTunes,但畢竟不完全等同。最典型的就是Installous安裝Microsoft官方出的LiveMessenger(正版,非破解版)時不能運行。實際上Installous對很多未破解的正版軟體支援不是很好。 ! U" e; m" r1 Y0 b# j

; }0 u; \/ a1 `  至於91,經常被人批評。91雖然可以安裝ipa,但除了Installous都有的正版軟體的支援問題外,由於91的安裝機制有缺陷,軟體不能實現多語言,只會使用英文介面,而忽略掉zh_CN.lproj,zh_TW.lproj這些語言包。這對那些用希望使用漢化版的人來說實在是一個悲劇。所以通常是要避免使用91來安裝ipa的。
. U( p1 T1 p$ g9 h& s
& J& C/ X' m8 ?5 p5 _  至於卸載,三種方法:
6 ^6 v5 T, g( D+ q! U$ j; ~& o7 E0 R1 f9 d# J3 i5 P0 a
  設備上按住圖示直到開始晃動,點擊圖示左上角的X即可卸載;
3 R& s" k0 G4 _0 ~3 E- B/ F1 [3 `  j/ _  l( g% k
  於iTunes中取消選中,然後同步 9 c4 S5 e* `! I+ n1 x7 n0 q( `

2 u3 ?# \* w# U6 [5 `* B  x  找到/var/mobile/Applications下的相應目錄,強行刪除整個檔夾。這個在前面兩種方法無法使用是可以採用(有時候卸載體積太大的軟體,比如超過1G,因為刪除過程太長導致失去回應並刪除失敗。),但這種方法會造成系統的不穩定。除非是確實碰到了問題,否則強烈建議不要使用。 + u3 A8 t& O& `  Q! C4 ]
- K: _1 g" v$ x
  .pxl $ x8 k: w5 O2 l# C% ^; ~
( E0 i$ p9 P" @# b( }/ _
  嚴格來說,pxl格式的資源並不算多,但也不少。現在使用pxl格式的絕大多數都是91的用戶。
- {+ n/ J$ E7 p
  ]5 U# K+ A6 D3 f" i2 }  從時效性上來說,很多軟體(主要是AppStore上的)一被人破解就馬上會被人轉成pxl格式,這樣來說,pxl格式的更新還是不錯的。
5 ]; G  v: s- Y" r3 n- j. |, Q5 R- G
  由於91手機助手沒有iTunes同步會抹掉軟體的問題,加上其他一些比較方便的功能,使得很多新手都是從91開始瞭解並熟悉iPhone/iPodTouch的使用。其結果是,pxl格式依賴于91而生存。
4 Y  O& |3 Q' P- x
& X) u& a% O  y4 ~* ]  pxl格式的流行也不是歷史的遺物,而是符合市場規律的需求。91助手的便捷的軟體管理方式(尤其是支援WiFi管理),加上免費的旗號,使得pxl格式在新手中很受歡迎。 $ r3 h6 j; b" U- k" _( Q
% M( \/ A) h9 X
  實際上,pxl格式和deb格式具有的功能完全一樣。雖然pxl不能記錄檔的許可權等資料,但完全可以用腳本來彌補。即是說,pxl格式和deb格式其實是不相伯仲的。而且因為pxl格式的製作並不需要比較少見的Unix環境,尤其是Debian環境,其本身是優於deb格式的。 " O, a+ b6 F: R# k! E3 m
' P1 x  Z- r& _% X3 Q' I
  但為什麼現在很多人都經常在說不要使用pxl呢?我個人認為,原因主要有以下幾個: $ u8 e/ x. D2 I, {. R3 V; |

! v7 c- _: I9 q' C( q* x. a  資源的局限性:除了91公司自己開發的幾個軟體之外,其餘所有軟體都是從deb和ipa轉換而來。如果原版軟體沒破解,pxl無能為力(比如Microsoft官方出的LiveMessenger和Cydia上一眾沒被破解的軟體);
- T* _/ q% ~* F1 e) z) g
% l% i& }- ~8 u  資源時效性:跟上面一點相似,pxl格式大部分是從其他格式轉換而來,跟原版相比總是會慢一些,尤其是當無法破解時,pxl根本就出不來;
: |( f, |  p( ~0 B6 y! Z8 G' I" C0 H' B7 ?7 [0 A
  打包人水準有限:現在很多人都是直接用91助手來打包pxl。對大部分只有一個XXX.app目錄的程式來說一般不會有問題,但若遇見那些對檔許可權等資料有嚴格要求的軟體(比如可執行檔沒有可執行許可權,或是mobile用戶不能改寫root所有的檔等等),或是需要比較複雜的腳本才能運行的軟體,往往pxl製作者並沒有能力去製作一個完善的pxl出來,這樣也導致了許多安裝使用上的問題; 8 t) m0 D1 e: a4 z. [  @/ S

# R3 f* S& F' L, `  安全性:絕大部分人在製作pxl的時候都習慣用chmod-R命令來將整個XXX.app目錄及其中的全部檔和子目錄設為755/775/777許可權,而這種行為會造成一定的安全隱患。關於這些數位的意思請自行搜索相關資料。這裏簡單說明一下。644屬性表示僅有該檔的所有人才可以進行改寫操作,其餘任何人都只能讀取,任何人都不能執行這個檔。755和775是在644的基礎上加入了可執行許可權,755是該檔所在的用戶組的所有人都可以改寫。而777許可權則標識任何人都可以改寫並執行。由於mobile本身是受限帳戶,如果使用777許可權的話,有機會通過這個漏洞來獲取整個系統的控制權。只不過因為iPhone系統相對封閉,也不太有機會造成損失。但採用775和777許可權是不應該的; 3 \' N7 ]* T* W+ u* A' e0 K8 T. g+ r

0 V2 l: H& e0 ^; h7 o5 `' c  ipa轉pxl的存檔問題:不少人都有這樣的經歷,在遊戲A存檔之後再進遊戲B,存檔B之後再進A,發現A的存檔已經不在了。原因在於,ipa轉換成的pxl軟體,存檔全部是放在/var/mobile/Documents目錄下,而正好有兩個軟體的存檔檔案名相同(最常見的就是data.sav或save.data),互相改寫之後導致不能讀取。這種問題也發生在ipa轉deb上,而且無法解決;
1 T! i  s$ R7 [$ p% x6 T8 g" F/ @/ m* D! L$ L
  無法完整刪除:卸載pxl格式時,不會刪除存檔檔、配置檔、暫存檔案等資料,長期使用會導致可用空間減少;
* k6 ]) ^' j3 G+ J7 g# o0 _5 {, A6 w4 f& k! v+ c1 z: t( f
  在部分機型上存在相容問題:有些機器越獄後並沒有將系統分區中的/Applications目錄轉移到/var/stash的用戶分區中。由於系統分區的可用空間很少(默認500MB,通常可用空間不超過50MB),強行往/Applications裏安裝會導致剩餘空間消耗殆盡或安裝失敗。 5 Z# W1 e1 a  d( V

4 B2 X) D" P+ Z% E  由此可以看出,pxl格式的問題更多不是pxl本身的問題,而是打包者的問題以及安裝方式的缺陷所致。
% V: n: H, u* T  q9 ~) n. n/ L8 \8 O+ ?( k' x. ]  Q2 P- J) r" ?
  另外要指出的是,pxl最大的提供者,91,經常是轉載他人發佈的軟體(包括網友自己購買破解的,或Cydia上直接下載的)然後當作自己發佈的軟體,對版權問題完全不在意,這樣也引起了很多人,尤其是原發佈者的反感。這種赤裸裸的剽竊行為實在是令人不恥。正因為這樣,很多人是因為不爽91而不爽pxl,這實在是冤枉pxl格式本身了。
  k7 |- |4 Y5 o9 ^
7 d9 q6 _9 [! m. U- X5 Z$ y  總結:
& H1 j1 L. `& j2 I) X, Z5 i% x) z* ]6 |! w( j( |3 G7 t/ P
  一般的軟體還是儘量用ipa格式,不要使用ipa轉換成的deb或pxl格式,這樣可以確保相容性和安全性。而在系統級的程式(如SBSettings和輸入法),ipa是絕無能力的,那麼最好的選擇還是deb。pxl作為快被淘汰的格式,還是果斷的放棄比較好。   n1 B  ?% b4 I, W: `. I

' L& X' ~/ r4 B! k) z  至於ipa和deb的安裝方式,ipa的安裝首選iTunes同步和AppStore線上安裝,次選Installous,以保證最佳相容性。deb的安裝首選Cydia線上安裝,次選除91外的其他任何安裝方式。 ' @( G1 ^8 n+ `5 T( t  M/ O7 e
$ w$ }. H' |5 P8 I" ?
  任何情況下都不推薦用91來安裝ipa和deb,因為91的安裝機制並不完善,很容易出問題。 ) f1 |5 Z& ~" h/ F# `" ?

  a) k2 S9 \, N5 V  ]& ?. r1 T2 w2 R; |+ J2 p
本文是原樣轉過來的,甚至字體以及顏色都沒有更改。主要是為了方便機友查閱,也好進行更進一步的操作。感謝威鋒網,感謝作者autopear。
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 2-11-2025 13:33 , Processed in 0.933450 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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