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

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

[複製鏈接]
發表於 12-9-2010 21:46:02 | 顯示全部樓層 |閱讀模式
作者autopear。
' k; {( v+ F1 |9 `" s: W
1 a: _; r1 R1 R) _% w8 c4 B( J前言:
! W0 i* t! U# W! G$ D. |- ]
; J; Z& }1 w) W  目前iOS平臺上常見的安裝包有三種,deb、ipa和pxl。 , p$ m( |; J2 d( @" ~( i

& U2 R" e6 x* H3 S7 u" J+ E  其中deb格式是Debian系統(包含Debian和Ubuntu)專屬安裝包格式,配合APT軟體管理系統,成為了當前在Linux下非常流行的一種安裝包。進入2.x時代之後有Cydia作者JayFreeman(saurik)移植到iPhone平臺上,一起的還有APT軟體管理系統。
* G8 t- I5 N: L& O: M7 ]. r8 d; Y: H! G+ ^8 w, T! B' p# Q/ ]
  而ipa格式則是蘋果在iOS平臺上推出的專屬軟體安裝包,在2.0固件開始才正式使用,是目前iPhone/iPodTouch/iPad平臺上唯一的官方安裝包。 & V& H$ b  p+ D) b
0 L/ d) _! B4 h" \! ^4 u
  而pxl格式則起源於Mac系統上的pkg安裝包,被廣泛應用於1.x固件時代,曾經是iPhone平臺上唯一的軟體安裝包,現在仍在被91等軟體所使用。 ( N& z% x: n4 r0 G

4 T7 J! `3 {* c, _  安裝包格式: ! ^( ~  p1 J4 H
: Z* ~1 u8 V9 y
  .deb
0 E! ^) V. J' I! D% p3 {( J! L' k: I* X. O: Z/ c; M8 r
  deb是Unix系統(其實主要是Linux)下的安裝包,基於tar包,因此本身會記錄檔的許可權(讀/寫/可執行)以及所有者/用戶組。 % d! r9 J+ k4 c
% l( q( L8 x6 [, ]% n/ [
  由於Unix類系統對許可權、所有者、組的嚴格要求,而deb格式安裝包又經常會涉及到系統比較底層的操作,所以許可權等的設置尤其重要。 4 G) ]6 a% Y1 t" L/ n' ^

9 M6 I2 a3 C- M/ ?. E% A" Q3 W  deb包本身有三部分組成: 0 [: r5 o6 a3 w: {/ d

% |& I* [: B) p1 W  資料包,包含實際安裝的程式資料,檔案名為data.tar.XXX; ! E0 d! e8 w+ _$ {9 @, g

3 l7 D' e& K9 ]$ p9 f- y) Q3 H  安裝資訊及控制腳本包,包含deb的安裝說明,標識,腳本等,檔案名為control.tar.gz;
+ y1 d$ p8 E! j: u+ b5 m) Y! e; k" I) D& |/ h
  最後一個是deb檔的一些二進位資料,包括檔頭等資訊,一般看不到,在某些軟體中打開可以看到。
0 C! F& D- z5 ?5 U( j  G; `: s* F5 v: x- z3 W5 g
  deb本身可以使用不同的壓縮方式。tar格式並不是一種壓縮格式,而是直接把分散的檔和目錄集合在一起,並記錄其許可權等資料資訊。之前提到過的data.tar.XXX,這裏XXX就是經過壓縮後的尾碼名。deb默認使用的壓縮格式為gzip格式,所以最常見的就是data.tar.gz。常有的壓縮格式還有bzip2和lzma,其中lzma壓縮率最高,但壓縮需要的CPU資源和時間都比較長。 ; }0 Y1 I+ a) N7 K7 g: j1 P

7 o, V# y! z! V8 G8 r1 [: q% b  data.tar.gz包含的是實際安裝的程式資料,而在安裝過程中,該包裏的資料會被直接解壓到根目錄(即/),因此在打包之前需要根據檔所在位置設置好相應的檔/目錄樹。
6 O% [9 V9 u6 x; i
1 x& P& K+ g  m0 q  而control.tar.gz則包含了一個deb安裝的時候所需要的控制資訊。一般有5個檔:
6 ?/ K6 d7 g* D- K  |- \% F! A) x9 e* P/ y
  control,用了記錄軟體標識,版本號,平臺,依賴資訊等資料;
& f' h1 h" _* s8 c; I0 P7 ~  u* G) e: T: i; q
  preinst,在解包data.tar.gz前運行的腳本; . B1 Q& p$ Z; l
% J/ K' V' C9 `" x
  postinst,在解包資料後運行的腳本; * s! H* s5 A2 S; B# t: ]

/ r0 F7 o: h1 e; O6 X  prerm,卸載時,在刪除檔之前運行的腳本;
( J$ e4 i  m2 l/ r! n2 v; [
# i3 v5 g0 o' ~& O  postrm,在刪除檔之後運行的腳本;
, R4 d% _) `& |, e9 r
  Y0 D* w6 ^+ d  R  P/ ~0 y  在Cydia系統中,Cydia的作者Saurik另外添加了一個腳本,extrainst_,作用與postinst類似。 ; O0 J7 E- k  a- z

- w8 a1 {( a2 v+ s  .ipa , O% m+ O7 ?) g1 D5 }, f: t  R
* |) v* F) |" ~9 b) J  W* }
  使用過MacOS的人可能都知道,Mac下的軟體大部分都只有一個.app目錄,裏面包含了程式全部資源和可執行檔。簡單來說,Mac下的軟體就像是Windows下的綠色軟體一樣,解壓後即可使用,不需要安裝,卸載的話也只用刪除程式檔即可(這裏不涉及pkg格式安裝包)。而ipa格式可以視為這種.app軟體的衍生物。
# f, b4 Y: V: v( S/ U" f. u7 ?
- x. {  D/ L: {# O6 ~' V  ipa檔實質是一個zip壓縮包(不是rar或7z包),包含3個元件: 4 C4 b: p/ f2 {7 C
2 M  ^* Q5 A3 [+ i( l, M1 R
  payload目錄下的.app目錄,這個是軟體的主程序;
4 d' t& p% j# W4 p  R7 T: Q) z# [% n' G4 Q
  iTunesArtwork,實質是一個無尾碼名的png圖片,用來在iTunes中顯示圖示;
5 r, F; {* b! h1 P5 y; N9 v* K
2 r+ ~. `* I' J2 w4 A) a  iTunesMetadata.plist,記錄購買者資訊、售價等資料。
' `, g& U% {0 Z5 ~9 n
  V, x! D; W& G2 U  由於zip包不能記錄許可權和所有者等資訊,所以蘋果規定了ipa的安裝方式,即全部ipa都會解包安裝在/var/mobile/Applications目錄下,全部檔和目錄的所有者及用戶組均設為mobile(ID為501),主程序(可執行檔)的許可權設為0755(所有人都可以執行,但只有所有者可以修改),可執行檔在plist中定義。全部目錄許可權設為0755,而其他所有檔都設為0644(僅所有者可以修改,其餘人只允許讀取,全部人都不允許執行)。
1 n: T  L. H( h1 b: W8 F# L( Z4 L! Q" Y+ u3 J
  ipa解包後並非直接放置於Applications目錄下,而是放在一串由隨機碼構成的目錄下,其作用在於,只允許這個軟體運行在一個特定的沙盒(Sandbox)中,不能干擾其他軟體。因此那串隨機碼目錄下,除了ipa本身的三個組件之外,還有三個目錄: , ^, {8 V7 w. T
* W4 \& K4 N2 Y: ], `3 R
  Library,一般是用了儲存設置檔等資料;
' e( E5 V. U4 s
2 N' L, b$ b# m  Documents,存儲資料,多用了保存存檔; & \) P! B* @5 y2 t  `; b
* f; u) x) q1 V' x
  tmp,暫存檔案夾。 # n- R3 P4 W3 f) `: V

4 _' z  D2 J" }2 z3 J. q. T  由於這個軟體只能在這個特定的目錄下運行(當然了,部分程式會調用系統的通訊錄、相機等元件,但仍然是受限制的),從而保證了整個系統的安全性和穩定性。
: O: ?9 R2 t8 _3 O4 f' m* a; W6 ^$ `& N
  由於Unix系統下對許可權的規定相當嚴格,所以“越權”的行為是絕對不允許的。舉個例子,mobile用戶無權刪除root所有的檔,因為root的許可權高於mobile。所以有些人在修改ipa安裝後的檔時,比如進行漢化或者修改存檔,發現不能刪除乾淨軟體,或不能保存,這是因為刪除時不能刪除root所有的檔,程式本身也無法對root所有的存檔檔進行寫入操作。
' e+ s. b3 q4 M0 u) A  m
0 @6 z- s1 R7 @9 t* {  .pxl ( N8 j3 @$ |: R
; }6 |7 u# T. t1 K4 B" ~* y' r
  pxl格式在1.x時代是iPhone平臺上唯一的安裝格式,原因是那時候還沒有Cydia這樣的APT管理軟體,蘋果官方也沒有推出AppStore。由於在1.x時代積累了大量人氣,在接下來的AppStore時代中,pxl格式以其相對簡易的打包和安裝方式,仍然佔據了很大一部分市場。但隨著Installer的停止開發,iBrickr等軟體停止更新,目前唯一還在堅持使用pxl格式的就只剩下91一家了。
4 u$ b2 d3 @$ }& q: b' x7 g, H
! o+ M  g( T; R  pxl安裝包通常包含3個組件:
. m" F" V% A% q* n$ A3 ]4 [
1 o/ [4 S9 w: p9 U  PxlPkg.plist記錄程式檔的存放位置、所有者、許可權以及軟體標識等資訊;
, _+ M3 S7 x! z6 j/ d" S/ e/ O
( E# x; w, f. D( B, T  PkgScript文件夾,存放安裝和卸載腳本;
4 `# Q. [' |, S" b  w+ q& j2 G) N% g: v% X9 ]% T
  程式檔。
, u" x  b  |  @+ J0 k2 N% S2 n
; F& t/ E4 W3 f  t6 [  PxlPkg.plist檔的開頭通常是CFBundleIdentifier,記錄著軟體的唯一標識,以和其他軟體進行區分。RDPxlPackageVersion則記錄軟體版本。RDPxlPackageFireware被用來記錄可以運行的固件版本。其餘還有一些鍵值是用來記錄軟體介紹、網址、作者資訊等資料。
' p( ^0 q8 |( T7 b. V2 F0 A- j' {5 C9 v1 U) p
  除了軟體標識、軟體版本和可用固件版本以外,PxlPkg.plist的核心部分就是RDPxlPackageFiles和RDPxlPackagePostflight兩項。RDPxlPackageFiles記錄了程式檔應該被複製到的路徑,並提供了是否覆蓋的參數:overwrite。而RDPxlPackagePostflight則記錄程式檔應該被賦予的所有者和許可權,分別以chown和chmod命令來實現。另外,對於含有安裝/卸載腳本的pxl來說,還會以sh命令執行相應的腳本Postflight和Preremove。
$ C4 o1 C8 Z+ Q) q
' k* }- U# |# l4 K$ k  PkgScript通常包含兩個檔,安裝後執行的腳本Postflight和卸載前執行的腳本Preremove,這兩個腳本就是標準的LinuxShellScript,以sh命令執行。 8 y9 r) c4 e2 x5 w* j
! ?/ g) V& K: u
  安裝包的特點:
4 i2 Z+ m- d! k2 D5 \8 O8 C) D9 m- Y3 x' a; o, N4 [- l/ s1 @
  .deb , W8 X; b/ o0 h$ l% ^; K+ E' K

8 p' N% @+ {6 }  豐富的資源:Cydia上本身就不少,更何況任何格式的安裝包都可以轉換為deb。
" z* F5 K% D0 z4 h+ T; K4 u  z
# B1 Y+ M- V6 ^# W5 H, w7 y; Q  相對方便的線上購買模式:CydiaStore,不過儘管沒有AppStore的5台設備的限制,但對國內用戶來說,付款方式比較困難。 # G! f( o) w# k" |) m- W5 h

# j; u5 Q# S: u+ E$ \7 V2 ^8 J  破解難度較大,沒有使用AppStore的驗證方式,所以必須將驗證和防破解措施加入程式裏面,這樣就比較難破解,對軟體發展者來說是個好事。 2 R% b. `6 Y% T! p  R" g* I- o  `; l
5 ~- u( o0 O. E0 `: g0 k' \
  完善的Unix檔系統支援:無需以命令設置檔的許可權、所有者和用戶組(當然也可以以腳本來設置) ( v! c6 H& X/ X4 h' b! b

6 i# G* L6 m9 M+ Q- D" T; w  完善的腳本支援:5個腳本依照安裝和卸載的先後順序執行,可以提供更多選擇。比如備份還原操作,可以在preinst中備份檔案,而在postrm中還原檔 ! |' ]/ L, p8 a5 i+ Z

. K$ H# g9 ^8 a4 ]6 k. V" Q+ q% u  嚴格的依賴關係:deb遵循嚴格的依賴關係(於Depends和Pre-Depends指定),可以確保軟體運行所必需的元件。線上安裝的時候會自動安裝所依賴的套裝軟體。卸載時也很重要,比如套裝軟體A依賴於B,當卸載B的時候會提示A依賴於B,卸載掉B的話會導致A不能用,這樣可以確保系統的完整性和穩定性。 5 v  `  Y5 D5 U9 C0 w# s* L
9 o6 f) E5 u9 h
  Conflicts、Replaces、Provides等鍵值的存在可以實現衝突提示或替換其他套裝軟體。
+ v1 |6 y, Q# x, |, o7 r
& F" X7 u" u5 J5 a0 i) K  完全許可權:由於deb必須以最高許可權root的身份運行,deb可以對系統任何位置進行操作,換句話說,deb擁有對整個系統的完全控制,因此deb安裝包軟體可以實現很多ipa不能實現的功能。
' U' ~/ X7 z9 h/ `! o; I- Y# N0 e: C* z( a* |
  相對簡單的獲取方式(線上或離線)和安裝方式,也不用擔心在不同機器上同步會刪掉程式的問題。
$ y# O, t8 R7 D( J) A6 j  J4 v8 V8 I8 C: z. B
  安裝相對簡單:其實無論是哪種安裝包,安裝方法都不算很複雜,只不過deb稍微複雜一些。 ' K! z. g& n# \4 m* b

' V3 n" c, v) |1 N' K* @$ k  deb的安裝方法大體有5種: $ w3 w' @  h- V- Y  P; [* w* ?8 k2 r
0 w+ T( @- N) D5 a
  Cydia或同類APT管理軟體線上安裝,這個是最佳的安裝方式,因為通常無需考慮依賴關係,但缺點是對網路的要求比較高;
( T- e# Q" ^1 ^0 |7 I5 j4 R. s2 ^3 b! f8 _' j" I/ O9 C$ ]
  命令行中以dpkg-iXXX.deb的形式安裝,好處是可以以通配符一次性安裝多個deb,而且也可以直接看到腳本的運行狀況和安裝成功/失敗的提示資訊,缺點是需要命令行軟體的支援,如Putty/WinSCP的控制臺/iSSH/MobileTerminal,很多人也不熟悉命令行下的操作。另外,安裝完後會不顯示圖示;
1 X  N6 t6 R( e+ K# b) N  {; |, |( ]2 u% U4 g" q
  放置於AutoInstall目錄重啟安裝。該方法實際是Cydia提供的一個啟動腳本,在每次系統啟動時以dpkg命令安裝AutoInstall目錄下的deb,好處是不需要命令行操作,缺點是必須要重啟,有些甚至要重啟兩次,也會出現不顯示圖示的情況;
9 d% A% {; _' {- G% A% d
; r' O: U" O$ t( b  利用iFile安裝,好處是圖形化操作,桌面會顯示圖示,缺點是不能一次安裝多個deb;
& z+ d/ J, ]! J* n5 [2 u: j& U0 ~- h2 D2 }2 Z
  用CyderII等軟體來安裝,其原理是類比一個APT軟體管理器來下載相應的deb檔並傳到設備,然後以前面幾種方式來安裝。
1 l: L/ E/ M* o* U' ^- E: H9 M
7 ^. Z1 O  Z3 z  c3 {  總體來說,deb的安裝都是依賴於dpkg-i命令來安裝,只不過有些是在命令行下輸入命令,有些是提供了圖形介面。但除了Cydia安裝一種方式之外,其餘幾種安裝方式都存在一些共有的問題:
$ J7 @3 c5 O& S$ ?" l0 M
/ h- c' V+ {% C  不會自行搜索依賴關係,必須手動提供所依賴的deb; 5 P  I( g1 U; J

2 V! H( ~% Y& N; E# _+ I  Cydia會讀取安裝腳本裏的一些特殊語句,比如僅在全新安裝時執行而不在升級時執行,安裝完成後重啟SpringBoard或設備等等。 . n0 k, \# D8 Z' g

4 s- r7 ~% B+ t0 J' y) L  當然了,deb軟體的卸載也比較簡單,有兩種方式: ' Z( d; H4 Y3 B" [
4 }+ n" M  @4 p  L
  Cydia裏卸載,優點是卸載過程和提示資訊很詳細,全圖形介面操作,同時也提供了重新安裝的選項;
2 K7 r1 w! p$ n0 L# ?+ `. A+ ]7 F5 j
  以dpkg-rPackage_ID命令或dpkg-PPackage_ID命令來卸載(詳情後面會說);
  @- }) ~0 B1 J* s0 i; d- `" |* p! T5 x: u9 H+ X7 F1 E
  Cydelete來卸載,優點是可以直接在桌面上卸載有圖示的軟體,但對那些沒有圖示的無能為力。 : w+ \4 ]4 ~; n9 I! b: q
1 p; V- O/ L% n) y
  其實,不管是安裝還是刪除,都可以才要全手動的方法。即,解包deb之後,自己將檔放到相應位置,然後設置許可權等並執行腳本。但這樣有必要麼? 4 Y' f( Q. A' d3 g8 I1 `2 W
0 T  G9 a6 r+ @  d, B
  deb的安裝過程如下: 0 o* i% A/ L4 _
( W+ ~8 {/ f' h% y' e6 g
  讀取資料庫並鎖定,避免同時有兩個安裝程式在運行 * d. R# Y: H: [$ I  ]. z2 a* \
, q5 P: b% A# j5 M) T
  讀取control中的Package(套裝軟體標識)和版本資訊,並搜索資料庫,若已存在,則卸載之後再安裝;
/ k* s: R, ^# o6 s& Y% |$ S" i
% h+ a. j# E% s' f: a4 m- A! L  檢查Depends,Pre-Depends,Conflicts和Replaces,如果檢測到已存在Conflicts中存在的軟體,則報錯並終止安裝。如未找到Pre-Depends指定的軟體,則報錯並終止安裝。如找到Replaces中指定的軟體,則卸載之;
2 P: s+ @/ m0 \
. R9 p. z) |+ n( I8 |. z" n, m  將資料寫入/var/lib/dpkg/status檔中; 8 t7 |2 s6 {" }9 U2 M! Y1 z
2 O5 ^, \, M! z: Q' p7 {
  執行preinst腳本(如果有);
  h" v& v' q$ N. v- J
6 s6 C  ]6 j- d  解包data.tar.gz,將檔放置於相應位置,並將檔列表寫入/var/lib/dpkg/info/XXX.list; 0 e# ^4 `; j+ v' j; N/ ?

( p/ m$ F( y6 n+ U( X- N) u  運行postinst和extrainst_腳本(如果有);
  a2 \, U5 A' ~* E- ~' m, R2 `' B8 u* I  P% \1 u3 R
  如果之前的安裝都沒有出錯,即安裝成功,那麼會在status檔中寫入Status:installokinstalled資訊,否則會寫入其他狀態資料,比如Unpacked(未解包資料)、Failed-config(腳本未能成功執行)、Half-installed(安裝失敗等);
5 c9 F* M0 n4 e7 r. t0 _) C# c% H/ |, f9 z1 O) |# Q4 g
  重新載入資料庫並解除鎖定。
7 e7 j5 T0 J8 a, o7 O; d/ F( c- o1 r5 h( }  r+ Z6 V" C3 g5 D: g
  deb的卸載過程如下:
% P, y! O# n2 }4 r1 g# d! B; A8 |% I: B3 V2 ]; o$ T! S
  讀取資料庫並鎖定;
7 K7 L( G, P0 B6 z5 @; t1 u2 }% Z
% [# F1 C3 |. f/ G5 R  根據軟體標識搜尋資料庫; . u' E. I  e% j/ `+ Q

0 g! T6 z& }3 r. f. s  檢查是否有軟體依賴於待卸載的軟體,如果有則提示,並中斷卸載; / m+ a  E9 Y0 ~: g% V/ ~
+ g! ]. R/ z% U2 d: N: s
  執行prerm腳本(如果有);
$ W7 Z1 x/ b" H) K! q$ V5 k3 H2 Z/ T6 M& O* O
  讀取/var/lib/dpkg/info/XXX.list檔,並刪除list檔中記錄的全部檔和非空檔夾; ( R2 i% n% A  q% r# W+ B3 ~- E

3 c# `+ a( ^: D$ q, G7 ~* I! x( |  運行postrm腳本;
% r( G7 J, X# U1 a& u+ a9 G: F& A* F
+ u1 v: Q% W, W3 |0 j/ O0 P1 V) N  如果卸載命令是dpkg-r,則保留status中的記錄並改為Status:Notinstalled;如果卸載命令是dpkg-P,則刪除全部資料;
& E  h  N% p! U. e4 j. s1 ?4 _9 x
  M' @3 Z6 H% u/ b) \: i  如果卸載過程沒有錯誤的話,重新讀取資料庫並解除鎖定。 1 W5 t1 |: L* Q
0 E# L6 S& t& v' j, H
  由於deb安裝的軟體可能會在運行時在/var/mobile/Documents下放置存檔檔,或在/var/mobile/Library/Preferences下放置設置檔,而這些檔並沒有記錄在list檔裏,所以卸載的時候不會被刪除。
) t1 W8 Q) Z. U  a( a  S" @; L, ?& f$ J: U" \8 P
  .ipa   d" Y0 n" i8 h" }
, q' Q& E9 e/ d, _
  豐富的資源:AppStore上那麼多資源,apptrackr等網站也提供了很多破解版。
  f( |9 T2 w& z4 u& V0 l8 C8 I. |. V+ O# p0 }
  完善的更新、後期服務。
" v8 u1 G/ O  o, f  s2 ^5 A$ x' S4 @  e! t3 c
  只能使用最小許可權,保障安全性。 8 b( v& _/ Q7 U& H. c/ ~$ t# p. e

+ T" a7 a. q: o' z' ]  不涉及系統級的操作,所以一般不容易造成死機或白蘋果(有些是因為資源消耗太大所以卡死)。
! v: v$ ]- G, L# @5 o# J; m8 i! f, }  x" P# v
  便捷的安裝方式,無論是直接在設備上用AppStore安裝,還是用iTunes來同步,抑或是用Installous和91這類第三方軟體來安裝,都是很方便快速的安裝方式。 4 i; o7 p$ J7 v  y9 e9 V7 S/ S; d' V

" V! \) |  N' h3 I# Y1 b  _  超級簡單的卸載方式:還有什麼比只需要點一個X就能卸載更簡單呢?
+ T$ o2 Y% o' z; }
* \& ^8 @1 {" _' O% H: B. o0 l( q6 ~  完全刪除,不會留下任何垃圾檔(如存檔、設置檔等)
* g7 H  {7 q0 ?- W
- ^1 d! `! I, F& Y' _- P  總體來說破解還是比較容易的,但現在越來越多軟體加入了防破解措施。
3 q+ U9 Y( s, ^3 y0 z0 \. A: S! j' {# {
  之前提到過,ipa軟體是被安裝在一個類似于沙盒的環境中,除了能對/var/mobile/Media/DCIM目錄(拍照、截圖存放目錄)進行操作,或是調用壁紙、鈴聲、相機等元件,不能對系統進行任何干涉,這樣在最大程度上保證了系統的穩定運行,也不會干擾其他軟體的正常使用。但問題是,由於ipa軟體的許可權很低,想要對系統進行修改,尤其是應用補丁時,ipa就無能為力了。 9 g# Q$ l5 h6 f" j5 ^' R3 b
9 s  ~/ B8 B/ p8 J5 J
  ipa軟體官方的安裝方式有兩種,一是在AppStore這個軟體中下載安裝,二是用iTunes同步。
! ^  ]  a% [5 Z  O: d8 j- g+ N1 J9 p( W6 _
  前者的問題主要是網路問題,網速不好很容易安裝失敗;GPRS之類的上網安裝又很耗流量。後者的問題主要是不能在不同系統下使用(包含不同電腦和同一部電腦上的不同系統),在其他系統上同步會抹掉原有的軟體。當然了,iTunes每次同步時間比較長也是經常被人詬病的。尤其是當安裝軟體比較多的時候,每次同步之前的備份需要很長很長時間,這個很噁心(不過可以直接X掉備份操作)。 6 U" H  C- g% \' h4 ^. N

7 Y/ o* ]) y* p% G' Y! A2 Z  由於以上兩種方式存在一些問題,所以很多人會選擇使用Installous或91來安裝ipa,這也確實是個不錯的選擇。
2 o0 f6 c( d: t
# Q; ~/ S6 N; D; p- s  Installous一般沒什麼問題,但對部分驗證比較嚴格的ipa處理不是很好。雖然Installous基本能代替iTunes,但畢竟不完全等同。最典型的就是Installous安裝Microsoft官方出的LiveMessenger(正版,非破解版)時不能運行。實際上Installous對很多未破解的正版軟體支援不是很好。 # O9 d& f* K1 u5 R: `( Z% M+ y

' ~4 `9 M# f6 E; o% X& K  至於91,經常被人批評。91雖然可以安裝ipa,但除了Installous都有的正版軟體的支援問題外,由於91的安裝機制有缺陷,軟體不能實現多語言,只會使用英文介面,而忽略掉zh_CN.lproj,zh_TW.lproj這些語言包。這對那些用希望使用漢化版的人來說實在是一個悲劇。所以通常是要避免使用91來安裝ipa的。
4 P7 T; t9 H4 Q4 {  b/ d! C
" X4 n' f& E  p. b  至於卸載,三種方法:
3 R( y" a" n5 h1 O& C" g& O6 r: ]! q4 G% s1 a
  設備上按住圖示直到開始晃動,點擊圖示左上角的X即可卸載; 7 m  ~' W8 m3 X  M' U/ O
2 S. s) e8 S: o1 A2 B
  於iTunes中取消選中,然後同步
# ?1 }+ l6 e, g6 J7 x
0 b# B* w# f5 o# k9 o6 J  找到/var/mobile/Applications下的相應目錄,強行刪除整個檔夾。這個在前面兩種方法無法使用是可以採用(有時候卸載體積太大的軟體,比如超過1G,因為刪除過程太長導致失去回應並刪除失敗。),但這種方法會造成系統的不穩定。除非是確實碰到了問題,否則強烈建議不要使用。
0 m; W$ a; ]" p' E8 X
/ f4 R" p4 U6 L) f' v1 l$ Z  .pxl
) h& o$ \* f6 T. {; q8 C0 f" k7 Y
  嚴格來說,pxl格式的資源並不算多,但也不少。現在使用pxl格式的絕大多數都是91的用戶。
7 W% M" S+ v' R8 C. [8 }4 i  C
1 S, ]* u& {# O* R8 a2 `  從時效性上來說,很多軟體(主要是AppStore上的)一被人破解就馬上會被人轉成pxl格式,這樣來說,pxl格式的更新還是不錯的。
, a( w4 c; `6 M' K* A2 W. [, C1 C  p  U9 ^) }
  由於91手機助手沒有iTunes同步會抹掉軟體的問題,加上其他一些比較方便的功能,使得很多新手都是從91開始瞭解並熟悉iPhone/iPodTouch的使用。其結果是,pxl格式依賴于91而生存。
& h; b* O5 r0 k5 z/ t# a8 G
3 r' I8 Q+ Y1 y  pxl格式的流行也不是歷史的遺物,而是符合市場規律的需求。91助手的便捷的軟體管理方式(尤其是支援WiFi管理),加上免費的旗號,使得pxl格式在新手中很受歡迎。
* ^: \$ U; M- c2 \/ g0 w& E& E4 i. ~5 D( v
  實際上,pxl格式和deb格式具有的功能完全一樣。雖然pxl不能記錄檔的許可權等資料,但完全可以用腳本來彌補。即是說,pxl格式和deb格式其實是不相伯仲的。而且因為pxl格式的製作並不需要比較少見的Unix環境,尤其是Debian環境,其本身是優於deb格式的。
/ Q" v6 _4 k# A. j5 T7 N* u, c2 R5 S9 W  Q+ ?# V, n
  但為什麼現在很多人都經常在說不要使用pxl呢?我個人認為,原因主要有以下幾個: 1 L( Y& l8 I6 M2 w6 ~
: C* L( g7 G8 Q6 [0 J1 [
  資源的局限性:除了91公司自己開發的幾個軟體之外,其餘所有軟體都是從deb和ipa轉換而來。如果原版軟體沒破解,pxl無能為力(比如Microsoft官方出的LiveMessenger和Cydia上一眾沒被破解的軟體); 3 t0 o6 [% Y: k( f; k, g0 m3 k3 m
  y& s( T$ a4 f: D
  資源時效性:跟上面一點相似,pxl格式大部分是從其他格式轉換而來,跟原版相比總是會慢一些,尤其是當無法破解時,pxl根本就出不來; # y3 t- g9 b; e3 S( k7 j
' P+ o" J) n3 I
  打包人水準有限:現在很多人都是直接用91助手來打包pxl。對大部分只有一個XXX.app目錄的程式來說一般不會有問題,但若遇見那些對檔許可權等資料有嚴格要求的軟體(比如可執行檔沒有可執行許可權,或是mobile用戶不能改寫root所有的檔等等),或是需要比較複雜的腳本才能運行的軟體,往往pxl製作者並沒有能力去製作一個完善的pxl出來,這樣也導致了許多安裝使用上的問題; * X' M0 X" V; p/ S, e

" r1 o5 F( Y! c3 {# ^  安全性:絕大部分人在製作pxl的時候都習慣用chmod-R命令來將整個XXX.app目錄及其中的全部檔和子目錄設為755/775/777許可權,而這種行為會造成一定的安全隱患。關於這些數位的意思請自行搜索相關資料。這裏簡單說明一下。644屬性表示僅有該檔的所有人才可以進行改寫操作,其餘任何人都只能讀取,任何人都不能執行這個檔。755和775是在644的基礎上加入了可執行許可權,755是該檔所在的用戶組的所有人都可以改寫。而777許可權則標識任何人都可以改寫並執行。由於mobile本身是受限帳戶,如果使用777許可權的話,有機會通過這個漏洞來獲取整個系統的控制權。只不過因為iPhone系統相對封閉,也不太有機會造成損失。但採用775和777許可權是不應該的;
9 X  V; N  N$ P4 {5 I+ t$ D) c: Y& l) r; L+ A' q5 s# L' z8 ~) [& M' M
  ipa轉pxl的存檔問題:不少人都有這樣的經歷,在遊戲A存檔之後再進遊戲B,存檔B之後再進A,發現A的存檔已經不在了。原因在於,ipa轉換成的pxl軟體,存檔全部是放在/var/mobile/Documents目錄下,而正好有兩個軟體的存檔檔案名相同(最常見的就是data.sav或save.data),互相改寫之後導致不能讀取。這種問題也發生在ipa轉deb上,而且無法解決; 5 @0 l  w  ]8 _! Y. U

, o5 S9 ?/ ]3 t$ Q" }  無法完整刪除:卸載pxl格式時,不會刪除存檔檔、配置檔、暫存檔案等資料,長期使用會導致可用空間減少;
; U" h) V6 a+ s; L" O- ~* W5 U! W
  在部分機型上存在相容問題:有些機器越獄後並沒有將系統分區中的/Applications目錄轉移到/var/stash的用戶分區中。由於系統分區的可用空間很少(默認500MB,通常可用空間不超過50MB),強行往/Applications裏安裝會導致剩餘空間消耗殆盡或安裝失敗。 ' |+ q" k+ l/ H/ \9 `! J& k; P+ V

% `) o5 s8 }6 M9 M% M  由此可以看出,pxl格式的問題更多不是pxl本身的問題,而是打包者的問題以及安裝方式的缺陷所致。 $ J# p% {5 @+ P- q: h
5 }& K% A" n8 Z* o
  另外要指出的是,pxl最大的提供者,91,經常是轉載他人發佈的軟體(包括網友自己購買破解的,或Cydia上直接下載的)然後當作自己發佈的軟體,對版權問題完全不在意,這樣也引起了很多人,尤其是原發佈者的反感。這種赤裸裸的剽竊行為實在是令人不恥。正因為這樣,很多人是因為不爽91而不爽pxl,這實在是冤枉pxl格式本身了。
2 x+ q( l8 A. ~9 Y
6 T8 ~' S2 f3 @' y3 X8 z  總結:
8 g3 p( S/ }: D. x- p: b' D7 V1 e! h# l: `4 T
  一般的軟體還是儘量用ipa格式,不要使用ipa轉換成的deb或pxl格式,這樣可以確保相容性和安全性。而在系統級的程式(如SBSettings和輸入法),ipa是絕無能力的,那麼最好的選擇還是deb。pxl作為快被淘汰的格式,還是果斷的放棄比較好。 4 ]6 w" O1 O* y; h. T7 C" |# n

. p) c; K) i0 h8 v' }  至於ipa和deb的安裝方式,ipa的安裝首選iTunes同步和AppStore線上安裝,次選Installous,以保證最佳相容性。deb的安裝首選Cydia線上安裝,次選除91外的其他任何安裝方式。
' g' n" L5 `- B7 T  K+ N: H8 M7 Z1 N  V4 j3 Y
  任何情況下都不推薦用91來安裝ipa和deb,因為91的安裝機制並不完善,很容易出問題。 % ?2 L6 r3 m- C

( e6 L3 R7 @& D5 s. e- b
" v& U! ^5 O# `0 j! n本文是原樣轉過來的,甚至字體以及顏色都沒有更改。主要是為了方便機友查閱,也好進行更進一步的操作。感謝威鋒網,感謝作者autopear。
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 16-6-2026 14:32 , Processed in 0.186102 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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