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

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

[複製鏈接]
發表於 12-9-2010 21:46:02 | 顯示全部樓層 |閱讀模式
作者autopear。
# v# Y+ u# v) `, }: Y% x3 O6 e5 a7 o; ?8 R4 w* ]" M
前言:
( @1 `1 U8 ]" _5 O
: Q- [( R! a2 ~9 p& B  目前iOS平臺上常見的安裝包有三種,deb、ipa和pxl。 % ]1 e8 Y2 @( I. H

. u) f+ H% [) _% I1 _) m' n  其中deb格式是Debian系統(包含Debian和Ubuntu)專屬安裝包格式,配合APT軟體管理系統,成為了當前在Linux下非常流行的一種安裝包。進入2.x時代之後有Cydia作者JayFreeman(saurik)移植到iPhone平臺上,一起的還有APT軟體管理系統。 ( v  G) a1 R1 K( m! m9 K* |
+ H  U5 G. t" a/ C% G5 Q0 s/ y
  而ipa格式則是蘋果在iOS平臺上推出的專屬軟體安裝包,在2.0固件開始才正式使用,是目前iPhone/iPodTouch/iPad平臺上唯一的官方安裝包。 7 n! `& `4 [/ i
$ J2 V  F& M# Q" `% w" e. U" O
  而pxl格式則起源於Mac系統上的pkg安裝包,被廣泛應用於1.x固件時代,曾經是iPhone平臺上唯一的軟體安裝包,現在仍在被91等軟體所使用。
- E2 @3 y! r2 Z2 Y5 O7 Y% s5 f4 ]; V$ R5 Q0 {
  安裝包格式: 8 @" g4 Z5 u/ F! |
; K! i+ y  }+ R1 z, V2 @
  .deb ( G" E: Z! @, r, A* Y* p2 y

: V0 r9 C# n; b8 E! b$ e  deb是Unix系統(其實主要是Linux)下的安裝包,基於tar包,因此本身會記錄檔的許可權(讀/寫/可執行)以及所有者/用戶組。
+ o3 ?# [- o6 x8 @4 T& B! o) v1 w5 R3 Q4 z0 r6 V" n
  由於Unix類系統對許可權、所有者、組的嚴格要求,而deb格式安裝包又經常會涉及到系統比較底層的操作,所以許可權等的設置尤其重要。 : V9 d0 q9 q. A1 r! @+ B% ~4 N
2 r! f0 ~$ R* @. r$ S  I
  deb包本身有三部分組成:
& O3 s5 ~9 d. H) q3 Y! o
6 L$ g% r$ \/ n  M  T6 r: u& f4 D  資料包,包含實際安裝的程式資料,檔案名為data.tar.XXX;
" N" x4 P1 X& z! O9 Z+ o3 l5 M0 v
4 f# `) ?2 G& t3 \; u, T  安裝資訊及控制腳本包,包含deb的安裝說明,標識,腳本等,檔案名為control.tar.gz;
# }+ p' s2 f" ~$ y1 t5 `4 b& c# }2 f% u
  最後一個是deb檔的一些二進位資料,包括檔頭等資訊,一般看不到,在某些軟體中打開可以看到。 3 k6 q. M% x# x- K+ X
+ z, c3 f( r* F! y" y
  deb本身可以使用不同的壓縮方式。tar格式並不是一種壓縮格式,而是直接把分散的檔和目錄集合在一起,並記錄其許可權等資料資訊。之前提到過的data.tar.XXX,這裏XXX就是經過壓縮後的尾碼名。deb默認使用的壓縮格式為gzip格式,所以最常見的就是data.tar.gz。常有的壓縮格式還有bzip2和lzma,其中lzma壓縮率最高,但壓縮需要的CPU資源和時間都比較長。 8 x4 k+ P) H7 O6 x* ]2 E6 N0 Z9 ^- D
3 B7 b: o# Q+ G6 \/ ~
  data.tar.gz包含的是實際安裝的程式資料,而在安裝過程中,該包裏的資料會被直接解壓到根目錄(即/),因此在打包之前需要根據檔所在位置設置好相應的檔/目錄樹。 ( o" l3 ], q9 r3 X& g' T  j) E
/ i  D8 F6 @0 r  Y
  而control.tar.gz則包含了一個deb安裝的時候所需要的控制資訊。一般有5個檔: 9 Y  {- ~+ D  d7 {3 M4 L
9 w. d/ w; Q" m2 t7 N
  control,用了記錄軟體標識,版本號,平臺,依賴資訊等資料; 2 ^. E5 a# y7 M6 n5 U

- L( f/ y9 C$ h- k3 R  preinst,在解包data.tar.gz前運行的腳本;
" }( ~! M% d% K* n4 N4 I0 x8 j+ `* I# d0 |3 b. ~) s. @, l( o
  postinst,在解包資料後運行的腳本; 0 s  q9 N' r+ |* z& T6 G
7 d" Z- D% Z5 }0 Q+ e$ X; K
  prerm,卸載時,在刪除檔之前運行的腳本;
4 h2 A! q2 U8 ]. j
6 t+ V3 C; z8 Z: V' j4 w5 Y  postrm,在刪除檔之後運行的腳本;
3 \: U8 z6 D8 {- V  U) \5 T
: ^8 E+ J: u2 Q' k# O  在Cydia系統中,Cydia的作者Saurik另外添加了一個腳本,extrainst_,作用與postinst類似。 8 W5 W% q8 J) v

: M- z$ @: ^$ h# P; h& w  .ipa * }4 Z2 f, @5 P4 X& L( O
* W2 \7 c' D( i9 D+ p( D3 M; T/ X
  使用過MacOS的人可能都知道,Mac下的軟體大部分都只有一個.app目錄,裏面包含了程式全部資源和可執行檔。簡單來說,Mac下的軟體就像是Windows下的綠色軟體一樣,解壓後即可使用,不需要安裝,卸載的話也只用刪除程式檔即可(這裏不涉及pkg格式安裝包)。而ipa格式可以視為這種.app軟體的衍生物。
- |$ O4 h* V" \4 e: r5 X: r+ R" C
: I+ N% O) I7 E8 [4 V  ipa檔實質是一個zip壓縮包(不是rar或7z包),包含3個元件:
3 }, d# |9 F& [. e/ ^- J: F. A2 b( j. i" Q, ~
  payload目錄下的.app目錄,這個是軟體的主程序;
( M5 ^( y% x  l; M* T1 g- x6 V) G* W* K8 r: O
  iTunesArtwork,實質是一個無尾碼名的png圖片,用來在iTunes中顯示圖示;
8 d9 y7 Z! L4 T6 K. V6 X3 b8 d9 _, B1 F' a
  iTunesMetadata.plist,記錄購買者資訊、售價等資料。 ( |2 ?, u4 Z8 I9 _+ K2 h

9 z7 t" P8 f+ t" w5 S  由於zip包不能記錄許可權和所有者等資訊,所以蘋果規定了ipa的安裝方式,即全部ipa都會解包安裝在/var/mobile/Applications目錄下,全部檔和目錄的所有者及用戶組均設為mobile(ID為501),主程序(可執行檔)的許可權設為0755(所有人都可以執行,但只有所有者可以修改),可執行檔在plist中定義。全部目錄許可權設為0755,而其他所有檔都設為0644(僅所有者可以修改,其餘人只允許讀取,全部人都不允許執行)。
# h) b# E  D4 g5 U+ B. x7 c( l) |
' M  U. Z# A/ A' x  ipa解包後並非直接放置於Applications目錄下,而是放在一串由隨機碼構成的目錄下,其作用在於,只允許這個軟體運行在一個特定的沙盒(Sandbox)中,不能干擾其他軟體。因此那串隨機碼目錄下,除了ipa本身的三個組件之外,還有三個目錄: # [. c% C) ]' H) l* H! t& @

* G/ C1 y8 l* o) U, @  Library,一般是用了儲存設置檔等資料; " j3 ^, w3 [( _  k
& b+ T: ?& O1 \
  Documents,存儲資料,多用了保存存檔;
0 \! W* I8 q7 C* F) n6 f6 t/ I% h
  tmp,暫存檔案夾。
, [) @- q, n  v8 Y3 H% O+ ^! @2 Z2 N5 n  @, B. ~9 q6 p
  由於這個軟體只能在這個特定的目錄下運行(當然了,部分程式會調用系統的通訊錄、相機等元件,但仍然是受限制的),從而保證了整個系統的安全性和穩定性。 6 R% W4 M. {' m- F1 |: U

1 T+ F0 V- M& P! S% w3 r  由於Unix系統下對許可權的規定相當嚴格,所以“越權”的行為是絕對不允許的。舉個例子,mobile用戶無權刪除root所有的檔,因為root的許可權高於mobile。所以有些人在修改ipa安裝後的檔時,比如進行漢化或者修改存檔,發現不能刪除乾淨軟體,或不能保存,這是因為刪除時不能刪除root所有的檔,程式本身也無法對root所有的存檔檔進行寫入操作。 - q1 [/ l1 V" z0 _" Z

7 V$ ]7 q# \$ i. C: L  .pxl # A0 C. u# G6 s, o# W' p( o

  t) d# C. h  i  pxl格式在1.x時代是iPhone平臺上唯一的安裝格式,原因是那時候還沒有Cydia這樣的APT管理軟體,蘋果官方也沒有推出AppStore。由於在1.x時代積累了大量人氣,在接下來的AppStore時代中,pxl格式以其相對簡易的打包和安裝方式,仍然佔據了很大一部分市場。但隨著Installer的停止開發,iBrickr等軟體停止更新,目前唯一還在堅持使用pxl格式的就只剩下91一家了。 ! X; ]* j9 X# Q6 e3 D
, r. O/ Y. w( P$ K* i
  pxl安裝包通常包含3個組件:
4 U! l! M& P6 t" k  c  p) x
: k( Y) F3 D* v" `  PxlPkg.plist記錄程式檔的存放位置、所有者、許可權以及軟體標識等資訊; # S( Z/ {# e1 g0 {% r9 J

( h/ t3 o5 w# d6 Y2 _$ H  PkgScript文件夾,存放安裝和卸載腳本; ( T) A* Y( V2 {( A1 b4 i% l
  l  X( o) _: e( X. H- R
  程式檔。 . A; X$ y7 e+ M/ d1 C2 t8 p

* b  t* j3 w3 ^# u! t& |- |6 B  PxlPkg.plist檔的開頭通常是CFBundleIdentifier,記錄著軟體的唯一標識,以和其他軟體進行區分。RDPxlPackageVersion則記錄軟體版本。RDPxlPackageFireware被用來記錄可以運行的固件版本。其餘還有一些鍵值是用來記錄軟體介紹、網址、作者資訊等資料。 # H. f% c- L! y9 E% y7 H; z

. ~3 q& G" x+ s# T$ j  除了軟體標識、軟體版本和可用固件版本以外,PxlPkg.plist的核心部分就是RDPxlPackageFiles和RDPxlPackagePostflight兩項。RDPxlPackageFiles記錄了程式檔應該被複製到的路徑,並提供了是否覆蓋的參數:overwrite。而RDPxlPackagePostflight則記錄程式檔應該被賦予的所有者和許可權,分別以chown和chmod命令來實現。另外,對於含有安裝/卸載腳本的pxl來說,還會以sh命令執行相應的腳本Postflight和Preremove。
* _1 ~) \; L9 ?$ q9 O+ R' p# ?( W: \' f! |* y
  PkgScript通常包含兩個檔,安裝後執行的腳本Postflight和卸載前執行的腳本Preremove,這兩個腳本就是標準的LinuxShellScript,以sh命令執行。 " b5 Q0 E6 X" x7 o1 v, h
/ W7 G5 x( }5 s, o
  安裝包的特點:
  L9 Z2 A; R$ s/ S# D) }( P0 j% H
  .deb
  d  g1 ?6 D9 _0 L0 C. [9 z  x. u, @* Y) h' Z
  豐富的資源:Cydia上本身就不少,更何況任何格式的安裝包都可以轉換為deb。 2 P/ @' }5 `/ y

6 k7 l  A8 }2 Z  相對方便的線上購買模式:CydiaStore,不過儘管沒有AppStore的5台設備的限制,但對國內用戶來說,付款方式比較困難。 * l( U! i6 \& d

5 r* i4 }$ A; w  破解難度較大,沒有使用AppStore的驗證方式,所以必須將驗證和防破解措施加入程式裏面,這樣就比較難破解,對軟體發展者來說是個好事。
! a8 p. ?% u+ J: J% B
& T& r( B2 B  N% L  完善的Unix檔系統支援:無需以命令設置檔的許可權、所有者和用戶組(當然也可以以腳本來設置)
! Y( e2 F! P0 r" x8 e* g2 @3 a/ s
" k  Z* X. s. y: q* y  完善的腳本支援:5個腳本依照安裝和卸載的先後順序執行,可以提供更多選擇。比如備份還原操作,可以在preinst中備份檔案,而在postrm中還原檔
- D% x* L! H) U+ |; D$ u; t
; X' P, j8 J/ \; O% y" a  嚴格的依賴關係:deb遵循嚴格的依賴關係(於Depends和Pre-Depends指定),可以確保軟體運行所必需的元件。線上安裝的時候會自動安裝所依賴的套裝軟體。卸載時也很重要,比如套裝軟體A依賴於B,當卸載B的時候會提示A依賴於B,卸載掉B的話會導致A不能用,這樣可以確保系統的完整性和穩定性。 ( F3 x5 v* Q! g3 l0 O
& z1 o; M) ?! I- A% B& T7 C
  Conflicts、Replaces、Provides等鍵值的存在可以實現衝突提示或替換其他套裝軟體。 , B3 m+ ]: I3 c8 s9 _7 H
" C& _- K$ T; f0 `3 u
  完全許可權:由於deb必須以最高許可權root的身份運行,deb可以對系統任何位置進行操作,換句話說,deb擁有對整個系統的完全控制,因此deb安裝包軟體可以實現很多ipa不能實現的功能。
7 K% H+ {8 t: x( c6 B
  y( v* ?9 N* c/ d5 U5 U* `, v  相對簡單的獲取方式(線上或離線)和安裝方式,也不用擔心在不同機器上同步會刪掉程式的問題。 9 G, y* t- Z5 }& {; j# X

2 O. S; Y) Z3 V1 B. g  安裝相對簡單:其實無論是哪種安裝包,安裝方法都不算很複雜,只不過deb稍微複雜一些。 9 G+ ~8 k# }% q6 y% c( m$ S

" Y" V8 k+ O  v' D+ Q6 w! V  deb的安裝方法大體有5種: & S9 }% l1 _2 h9 M$ P
7 R$ i7 h9 \; n
  Cydia或同類APT管理軟體線上安裝,這個是最佳的安裝方式,因為通常無需考慮依賴關係,但缺點是對網路的要求比較高; * ~% J/ C) A4 J+ `# e

8 F1 z5 V- i% N5 O  命令行中以dpkg-iXXX.deb的形式安裝,好處是可以以通配符一次性安裝多個deb,而且也可以直接看到腳本的運行狀況和安裝成功/失敗的提示資訊,缺點是需要命令行軟體的支援,如Putty/WinSCP的控制臺/iSSH/MobileTerminal,很多人也不熟悉命令行下的操作。另外,安裝完後會不顯示圖示;
9 P4 P* ?: q8 t3 c. X- l' e) G* p2 v: K" |' z8 E. o8 C- L
  放置於AutoInstall目錄重啟安裝。該方法實際是Cydia提供的一個啟動腳本,在每次系統啟動時以dpkg命令安裝AutoInstall目錄下的deb,好處是不需要命令行操作,缺點是必須要重啟,有些甚至要重啟兩次,也會出現不顯示圖示的情況;
1 I- }" `% i, h
. k5 W  U5 H/ L3 `  利用iFile安裝,好處是圖形化操作,桌面會顯示圖示,缺點是不能一次安裝多個deb; % {) K' E" w0 l- D
, z: J3 Y  N8 ~: g- [: v! v" u+ s' c
  用CyderII等軟體來安裝,其原理是類比一個APT軟體管理器來下載相應的deb檔並傳到設備,然後以前面幾種方式來安裝。
/ c% O& @2 \# D- s0 z6 y
. p, E) p, x4 S$ i1 P$ U  總體來說,deb的安裝都是依賴於dpkg-i命令來安裝,只不過有些是在命令行下輸入命令,有些是提供了圖形介面。但除了Cydia安裝一種方式之外,其餘幾種安裝方式都存在一些共有的問題: $ U8 l! Z$ @' U% @/ k

2 M/ v6 u* b- j1 E0 ?) j, J  不會自行搜索依賴關係,必須手動提供所依賴的deb;
6 [+ m0 f/ g' g7 F" f& d  G6 b( ?4 q' \2 w, T  E  f
  Cydia會讀取安裝腳本裏的一些特殊語句,比如僅在全新安裝時執行而不在升級時執行,安裝完成後重啟SpringBoard或設備等等。 4 R2 W3 P% s: S* ]2 _1 Y1 ?# T

) V. t$ O* D5 d( R" g4 x3 F! l  當然了,deb軟體的卸載也比較簡單,有兩種方式:
9 o! O9 o+ U" x# H3 z  c( C
3 C; b4 Y, T3 L6 ~& m& a1 f  Cydia裏卸載,優點是卸載過程和提示資訊很詳細,全圖形介面操作,同時也提供了重新安裝的選項;
# b6 @5 @9 X* x# e: N" y& E! Y4 k( k/ g: F& }; q* o
  以dpkg-rPackage_ID命令或dpkg-PPackage_ID命令來卸載(詳情後面會說); 5 o" T8 N: N& m7 i

& V) S2 y5 }1 N6 @" B% D' n) O  Cydelete來卸載,優點是可以直接在桌面上卸載有圖示的軟體,但對那些沒有圖示的無能為力。 ) g$ U5 r" r8 E* R1 t4 \$ ?
: ?# v5 m: I% Y2 M; N% b, C' [' j' d
  其實,不管是安裝還是刪除,都可以才要全手動的方法。即,解包deb之後,自己將檔放到相應位置,然後設置許可權等並執行腳本。但這樣有必要麼? 1 O  v1 F1 U+ o! h, w- A6 t7 H

3 E, j$ N! \: B' `4 T; a6 ~5 b  deb的安裝過程如下:
: Y3 J( n, S: z! J% @2 _$ X  b* N) M" o/ x2 C
  讀取資料庫並鎖定,避免同時有兩個安裝程式在運行
! {  |6 o, l! N4 q" l7 v* ~' n8 X# p9 [( _4 Y- Y4 g' a6 t
  讀取control中的Package(套裝軟體標識)和版本資訊,並搜索資料庫,若已存在,則卸載之後再安裝; 8 @' b. k+ Y+ E8 W6 P
$ t5 {% z$ [* T" G3 K
  檢查Depends,Pre-Depends,Conflicts和Replaces,如果檢測到已存在Conflicts中存在的軟體,則報錯並終止安裝。如未找到Pre-Depends指定的軟體,則報錯並終止安裝。如找到Replaces中指定的軟體,則卸載之;
8 l6 c  V, r. ^6 }$ b
, L0 U- }. j9 }7 Y  將資料寫入/var/lib/dpkg/status檔中; ! C9 h' S+ B3 L# d( b( t* P! t. E

) c. C0 a1 M/ t  執行preinst腳本(如果有);
/ C9 X0 a+ H: u  v2 i- `& p- l( u& `5 [
  解包data.tar.gz,將檔放置於相應位置,並將檔列表寫入/var/lib/dpkg/info/XXX.list;
) O5 w' K2 y  M1 Z+ c" Y6 |
" M# o0 f* o' x* }6 M  運行postinst和extrainst_腳本(如果有); ! @% G# y2 G- a% X
$ a* Q4 s% Z4 a) d* Z
  如果之前的安裝都沒有出錯,即安裝成功,那麼會在status檔中寫入Status:installokinstalled資訊,否則會寫入其他狀態資料,比如Unpacked(未解包資料)、Failed-config(腳本未能成功執行)、Half-installed(安裝失敗等); # F# X! S4 c& ^9 \5 s
. s9 L3 W9 A8 A! z/ J- C% ~
  重新載入資料庫並解除鎖定。 ) K: M0 s$ h& T% D
$ B# L2 [8 \: i4 ]+ Y  w# N7 f+ T+ H
  deb的卸載過程如下: ( W  e0 D' q! G
% g( W3 a! ]4 f4 f! F5 P# r/ N4 U4 u
  讀取資料庫並鎖定;
# [: `  _2 V6 Y7 n$ g
! u9 v8 w% L  c* J. }9 B: _  根據軟體標識搜尋資料庫;
2 ]8 z5 s& }8 J5 _, R  o! E
8 M" V) J+ c+ E$ c8 B' N: @8 o( d  檢查是否有軟體依賴於待卸載的軟體,如果有則提示,並中斷卸載;
2 T% T  L* J* q  R* W- e% r6 x6 O. G) {1 x
  執行prerm腳本(如果有); , a. Y' [  Z* c' g
+ h9 o1 ]; y4 }" {) W
  讀取/var/lib/dpkg/info/XXX.list檔,並刪除list檔中記錄的全部檔和非空檔夾; 2 w* d+ S2 Q* ^0 t1 ^" {4 i/ H$ {
% d7 U8 d% p3 V
  運行postrm腳本;
. [9 `( j( X; O, V1 }/ ?% z5 V* C% [& w& v9 P8 k% ?$ X
  如果卸載命令是dpkg-r,則保留status中的記錄並改為Status:Notinstalled;如果卸載命令是dpkg-P,則刪除全部資料;
+ G7 o% Y) k$ ^5 W& O
$ {" C" ]! h7 R  如果卸載過程沒有錯誤的話,重新讀取資料庫並解除鎖定。 9 t0 b% X/ o' N2 x( Z& Y% |, t4 U
" v1 @$ P% Q2 P' \5 N5 `" m
  由於deb安裝的軟體可能會在運行時在/var/mobile/Documents下放置存檔檔,或在/var/mobile/Library/Preferences下放置設置檔,而這些檔並沒有記錄在list檔裏,所以卸載的時候不會被刪除。 1 n8 i6 S/ |/ M  N- K
6 Y: ~4 _; E& I$ {, U' }/ e
  .ipa
! k7 G+ r" t) P. u  e2 H( Q* J$ A3 x5 Q$ e# ]/ k$ S& J8 }2 ]; p
  豐富的資源:AppStore上那麼多資源,apptrackr等網站也提供了很多破解版。 0 ~+ e7 d9 [: B9 d8 \/ }
% I- @$ Y  g$ B- P
  完善的更新、後期服務。 : p0 {/ m. m/ w

: ?. O% \/ X) {6 @6 G  只能使用最小許可權,保障安全性。
4 l2 j) F/ `. H) Y# N6 ~  f1 |$ [# T2 b  b+ l
  不涉及系統級的操作,所以一般不容易造成死機或白蘋果(有些是因為資源消耗太大所以卡死)。
4 D( f6 \/ Y& \$ N# v2 g
) _8 t/ d: z/ [5 i. ]  便捷的安裝方式,無論是直接在設備上用AppStore安裝,還是用iTunes來同步,抑或是用Installous和91這類第三方軟體來安裝,都是很方便快速的安裝方式。 ; K- a& U! v$ s6 A8 M1 F1 t. B8 P

+ f* d: O" ^3 c) O/ j# m4 G5 I, {9 k  超級簡單的卸載方式:還有什麼比只需要點一個X就能卸載更簡單呢?
) c1 |4 Z* p; R% a& X% I1 ]- H
1 y2 Y: r! @9 b  z4 y7 f  完全刪除,不會留下任何垃圾檔(如存檔、設置檔等) 5 Z( h$ |- v8 _* k% `
) l7 v# H* ?: Q
  總體來說破解還是比較容易的,但現在越來越多軟體加入了防破解措施。 7 j1 ?. p9 Q7 F2 i6 l
" k* D' h1 F! u
  之前提到過,ipa軟體是被安裝在一個類似于沙盒的環境中,除了能對/var/mobile/Media/DCIM目錄(拍照、截圖存放目錄)進行操作,或是調用壁紙、鈴聲、相機等元件,不能對系統進行任何干涉,這樣在最大程度上保證了系統的穩定運行,也不會干擾其他軟體的正常使用。但問題是,由於ipa軟體的許可權很低,想要對系統進行修改,尤其是應用補丁時,ipa就無能為力了。 7 m% c# i$ a% l5 ?& i  `& Y! R

# t$ [: ?  C/ d" M  ipa軟體官方的安裝方式有兩種,一是在AppStore這個軟體中下載安裝,二是用iTunes同步。 1 T6 T1 s7 T  v

1 v4 ?1 J& N$ H$ N  前者的問題主要是網路問題,網速不好很容易安裝失敗;GPRS之類的上網安裝又很耗流量。後者的問題主要是不能在不同系統下使用(包含不同電腦和同一部電腦上的不同系統),在其他系統上同步會抹掉原有的軟體。當然了,iTunes每次同步時間比較長也是經常被人詬病的。尤其是當安裝軟體比較多的時候,每次同步之前的備份需要很長很長時間,這個很噁心(不過可以直接X掉備份操作)。
. K' Q0 n3 L* L  T. G6 z" G
9 p2 T% u, i& \0 j  由於以上兩種方式存在一些問題,所以很多人會選擇使用Installous或91來安裝ipa,這也確實是個不錯的選擇。
/ x, ]. m/ U- K- V8 n
  i. p- x! u2 ]$ p; Q( Z  Installous一般沒什麼問題,但對部分驗證比較嚴格的ipa處理不是很好。雖然Installous基本能代替iTunes,但畢竟不完全等同。最典型的就是Installous安裝Microsoft官方出的LiveMessenger(正版,非破解版)時不能運行。實際上Installous對很多未破解的正版軟體支援不是很好。 ! U9 l4 K6 E! _6 @

, x0 \* U6 w. v* a' D( d% }; p  至於91,經常被人批評。91雖然可以安裝ipa,但除了Installous都有的正版軟體的支援問題外,由於91的安裝機制有缺陷,軟體不能實現多語言,只會使用英文介面,而忽略掉zh_CN.lproj,zh_TW.lproj這些語言包。這對那些用希望使用漢化版的人來說實在是一個悲劇。所以通常是要避免使用91來安裝ipa的。 , ]5 L$ d7 v9 ^3 r
- i- d# z  ^7 K+ W* B7 A
  至於卸載,三種方法: 6 I% C; i; E' }1 X! k9 E

1 ~: e3 m% w8 W$ {  設備上按住圖示直到開始晃動,點擊圖示左上角的X即可卸載;   B9 o. M/ F6 l0 q

0 _% B- H! [8 T' }" Z7 }$ ]  於iTunes中取消選中,然後同步
$ A' L/ ~: K! H& [# J6 r7 u1 A. l
: T/ }( ]5 z0 ]% ^. ~5 B+ j  j% r  找到/var/mobile/Applications下的相應目錄,強行刪除整個檔夾。這個在前面兩種方法無法使用是可以採用(有時候卸載體積太大的軟體,比如超過1G,因為刪除過程太長導致失去回應並刪除失敗。),但這種方法會造成系統的不穩定。除非是確實碰到了問題,否則強烈建議不要使用。 # a$ W& ~8 l9 ^
% V' q5 M1 ]5 u& ~
  .pxl
7 K: q' O" \0 A* m0 g  Q) ~8 c
" ?) p/ g0 Z1 h& ~3 R  嚴格來說,pxl格式的資源並不算多,但也不少。現在使用pxl格式的絕大多數都是91的用戶。
- K+ F8 D* b. l5 z( f8 v+ z6 r& A: _) S) k1 \8 I* D$ b
  從時效性上來說,很多軟體(主要是AppStore上的)一被人破解就馬上會被人轉成pxl格式,這樣來說,pxl格式的更新還是不錯的。 # t, b# Z7 H2 i; A" s7 g

% }+ H( {5 M, u9 V  B3 E  由於91手機助手沒有iTunes同步會抹掉軟體的問題,加上其他一些比較方便的功能,使得很多新手都是從91開始瞭解並熟悉iPhone/iPodTouch的使用。其結果是,pxl格式依賴于91而生存。 $ x  Q/ m* _8 I

1 t4 X$ l& X( e  pxl格式的流行也不是歷史的遺物,而是符合市場規律的需求。91助手的便捷的軟體管理方式(尤其是支援WiFi管理),加上免費的旗號,使得pxl格式在新手中很受歡迎。 % a' T) O- ~! ~, @- r0 x( @
! ?7 i. Y! A  d: N  p. C
  實際上,pxl格式和deb格式具有的功能完全一樣。雖然pxl不能記錄檔的許可權等資料,但完全可以用腳本來彌補。即是說,pxl格式和deb格式其實是不相伯仲的。而且因為pxl格式的製作並不需要比較少見的Unix環境,尤其是Debian環境,其本身是優於deb格式的。
! ~* v4 G! C1 x
0 ?) p4 h6 ?$ W- \& U2 H  但為什麼現在很多人都經常在說不要使用pxl呢?我個人認為,原因主要有以下幾個: ' h; c4 S- z  ~/ T6 o, D
8 T3 |+ U1 z; ?' m5 f+ i6 p! C% n
  資源的局限性:除了91公司自己開發的幾個軟體之外,其餘所有軟體都是從deb和ipa轉換而來。如果原版軟體沒破解,pxl無能為力(比如Microsoft官方出的LiveMessenger和Cydia上一眾沒被破解的軟體); 1 D6 H1 X" \+ Z6 a) F5 I
% X: }. x, L( _
  資源時效性:跟上面一點相似,pxl格式大部分是從其他格式轉換而來,跟原版相比總是會慢一些,尤其是當無法破解時,pxl根本就出不來;
" _% o6 z2 l2 z& l* C% J2 G
: m3 N: k9 j* g& H; r  打包人水準有限:現在很多人都是直接用91助手來打包pxl。對大部分只有一個XXX.app目錄的程式來說一般不會有問題,但若遇見那些對檔許可權等資料有嚴格要求的軟體(比如可執行檔沒有可執行許可權,或是mobile用戶不能改寫root所有的檔等等),或是需要比較複雜的腳本才能運行的軟體,往往pxl製作者並沒有能力去製作一個完善的pxl出來,這樣也導致了許多安裝使用上的問題;
5 Z" U) g% H" [( [! C6 ?! `+ d5 z* Q" F
+ U4 V5 N+ ?. h/ O4 i: U* {2 b0 B  安全性:絕大部分人在製作pxl的時候都習慣用chmod-R命令來將整個XXX.app目錄及其中的全部檔和子目錄設為755/775/777許可權,而這種行為會造成一定的安全隱患。關於這些數位的意思請自行搜索相關資料。這裏簡單說明一下。644屬性表示僅有該檔的所有人才可以進行改寫操作,其餘任何人都只能讀取,任何人都不能執行這個檔。755和775是在644的基礎上加入了可執行許可權,755是該檔所在的用戶組的所有人都可以改寫。而777許可權則標識任何人都可以改寫並執行。由於mobile本身是受限帳戶,如果使用777許可權的話,有機會通過這個漏洞來獲取整個系統的控制權。只不過因為iPhone系統相對封閉,也不太有機會造成損失。但採用775和777許可權是不應該的;
6 g0 G: Z0 e' g, \& ~. g0 J! N( a, x- W. Z. s2 N) b5 p" N
  ipa轉pxl的存檔問題:不少人都有這樣的經歷,在遊戲A存檔之後再進遊戲B,存檔B之後再進A,發現A的存檔已經不在了。原因在於,ipa轉換成的pxl軟體,存檔全部是放在/var/mobile/Documents目錄下,而正好有兩個軟體的存檔檔案名相同(最常見的就是data.sav或save.data),互相改寫之後導致不能讀取。這種問題也發生在ipa轉deb上,而且無法解決; # `7 `+ z0 R/ y9 B
0 c4 ~+ C; w4 l3 G2 Y2 x
  無法完整刪除:卸載pxl格式時,不會刪除存檔檔、配置檔、暫存檔案等資料,長期使用會導致可用空間減少; , f5 R8 b% V' v
% H/ v3 N; Q6 b+ W* C* I
  在部分機型上存在相容問題:有些機器越獄後並沒有將系統分區中的/Applications目錄轉移到/var/stash的用戶分區中。由於系統分區的可用空間很少(默認500MB,通常可用空間不超過50MB),強行往/Applications裏安裝會導致剩餘空間消耗殆盡或安裝失敗。   @6 E( j5 k% d( |0 k

1 J. Q3 ]$ s( A2 r2 e# Z( ~  由此可以看出,pxl格式的問題更多不是pxl本身的問題,而是打包者的問題以及安裝方式的缺陷所致。 , J. W  o$ H+ e& o

. _& `5 |6 n# e# X  另外要指出的是,pxl最大的提供者,91,經常是轉載他人發佈的軟體(包括網友自己購買破解的,或Cydia上直接下載的)然後當作自己發佈的軟體,對版權問題完全不在意,這樣也引起了很多人,尤其是原發佈者的反感。這種赤裸裸的剽竊行為實在是令人不恥。正因為這樣,很多人是因為不爽91而不爽pxl,這實在是冤枉pxl格式本身了。
5 p3 [0 s. K- e7 M
/ L# N9 x& I- n+ t' k* [7 a; r  總結: 5 J, a, \1 k5 r. ?8 X: \

9 v# s2 f/ [5 A  一般的軟體還是儘量用ipa格式,不要使用ipa轉換成的deb或pxl格式,這樣可以確保相容性和安全性。而在系統級的程式(如SBSettings和輸入法),ipa是絕無能力的,那麼最好的選擇還是deb。pxl作為快被淘汰的格式,還是果斷的放棄比較好。 % P+ l% |, a5 k
4 j' F4 z. G# s  _/ Y; \
  至於ipa和deb的安裝方式,ipa的安裝首選iTunes同步和AppStore線上安裝,次選Installous,以保證最佳相容性。deb的安裝首選Cydia線上安裝,次選除91外的其他任何安裝方式。
# W/ L; f( \! A5 M
/ n$ j& y! w" p  任何情況下都不推薦用91來安裝ipa和deb,因為91的安裝機制並不完善,很容易出問題。 1 g0 D7 r6 R/ f! f' e0 u' R

6 S) c3 q# N; Q8 ?' s, W: w5 @2 W8 b) @2 e# ^" K! k' }
本文是原樣轉過來的,甚至字體以及顏色都沒有更改。主要是為了方便機友查閱,也好進行更進一步的操作。感謝威鋒網,感謝作者autopear。
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 1-8-2025 17:09 , Processed in 0.109488 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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