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

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

[複製鏈接]
發表於 12-9-2010 21:46:02 | 顯示全部樓層 |閱讀模式
作者autopear。
  M7 C3 B) a$ v; p5 W. x3 ~5 q
# Q6 w1 L% h) K9 i" l前言:
! B( v7 [% I) F4 }
4 P" Q7 A, V% y  目前iOS平臺上常見的安裝包有三種,deb、ipa和pxl。
0 L7 G# u% @# m/ i6 h, |# g% w/ E) l% T
  其中deb格式是Debian系統(包含Debian和Ubuntu)專屬安裝包格式,配合APT軟體管理系統,成為了當前在Linux下非常流行的一種安裝包。進入2.x時代之後有Cydia作者JayFreeman(saurik)移植到iPhone平臺上,一起的還有APT軟體管理系統。 % w* A2 `# i# g% R: f

9 X5 T/ e, q9 {! E  而ipa格式則是蘋果在iOS平臺上推出的專屬軟體安裝包,在2.0固件開始才正式使用,是目前iPhone/iPodTouch/iPad平臺上唯一的官方安裝包。 1 _. N/ S( b) c  J
5 Q3 ?! S3 a( [" x
  而pxl格式則起源於Mac系統上的pkg安裝包,被廣泛應用於1.x固件時代,曾經是iPhone平臺上唯一的軟體安裝包,現在仍在被91等軟體所使用。 0 N3 T+ v6 B& }: i1 n
' I/ R8 @1 {$ ?* m; b& R8 o
  安裝包格式:
- m5 Q' W' `  {! b5 f0 p7 r! t: W+ H! F
  .deb
; z8 q+ y9 D& k/ [# }: j9 `5 _
8 A1 j  [) k2 S6 }" o) E, v  deb是Unix系統(其實主要是Linux)下的安裝包,基於tar包,因此本身會記錄檔的許可權(讀/寫/可執行)以及所有者/用戶組。 # T5 l) n6 k  @5 V, q7 [

, r" w# O2 a, B! g( E  由於Unix類系統對許可權、所有者、組的嚴格要求,而deb格式安裝包又經常會涉及到系統比較底層的操作,所以許可權等的設置尤其重要。
% W- {* P& f7 L' |- e* r1 E7 Z+ |1 S8 g
  deb包本身有三部分組成: + V' k% S- G6 J+ V/ B% ~+ a7 H

& S4 a* [7 ?" c  資料包,包含實際安裝的程式資料,檔案名為data.tar.XXX;
- a9 B! v) P& q, m- z: G) m" P& T% i/ r
  安裝資訊及控制腳本包,包含deb的安裝說明,標識,腳本等,檔案名為control.tar.gz; , E* x- ~9 k( z; h% E# c) ^5 x2 Y

( H% Z! C; f8 ]2 R  最後一個是deb檔的一些二進位資料,包括檔頭等資訊,一般看不到,在某些軟體中打開可以看到。 ' V# Y3 B; u0 k7 X2 I# G
% A# N4 s0 p8 r4 b
  deb本身可以使用不同的壓縮方式。tar格式並不是一種壓縮格式,而是直接把分散的檔和目錄集合在一起,並記錄其許可權等資料資訊。之前提到過的data.tar.XXX,這裏XXX就是經過壓縮後的尾碼名。deb默認使用的壓縮格式為gzip格式,所以最常見的就是data.tar.gz。常有的壓縮格式還有bzip2和lzma,其中lzma壓縮率最高,但壓縮需要的CPU資源和時間都比較長。
4 P6 H; J  P7 R% k& Q& P/ Q
- [7 w4 ?, o5 L+ D! O4 [  P  data.tar.gz包含的是實際安裝的程式資料,而在安裝過程中,該包裏的資料會被直接解壓到根目錄(即/),因此在打包之前需要根據檔所在位置設置好相應的檔/目錄樹。
) t, i8 D! J( ?: ^! ~4 N$ |  s. n8 t& `1 F2 X  x
  而control.tar.gz則包含了一個deb安裝的時候所需要的控制資訊。一般有5個檔:
2 k4 \- R0 P$ ?+ q
/ `5 l2 C" L0 }# {  control,用了記錄軟體標識,版本號,平臺,依賴資訊等資料; 5 M1 F" I9 ?% C, ]- x) W$ G* {
! z$ t+ Q- B6 {3 |
  preinst,在解包data.tar.gz前運行的腳本; $ c5 x. `0 `% B' A

4 ?- G, c  n0 i$ _  postinst,在解包資料後運行的腳本;
  W& j: K) C/ Z! C2 a! |9 V) B9 w0 I8 R
  prerm,卸載時,在刪除檔之前運行的腳本;
$ ?1 V# |& s: Q0 z1 s2 }6 ~# s4 g
# c2 {* _4 M5 Z$ ~. ]9 f3 o  postrm,在刪除檔之後運行的腳本;
9 n6 Y3 ~+ F, `6 H$ j% ?( b
, T# ~: |, ^+ ?, E7 F. c4 V8 O  在Cydia系統中,Cydia的作者Saurik另外添加了一個腳本,extrainst_,作用與postinst類似。 9 m" s2 o1 @: U# X. \

$ V# H0 V$ |* n+ h! [; ]  .ipa
& c5 I% H# g9 i
8 i) O0 A8 ~1 F' ~  使用過MacOS的人可能都知道,Mac下的軟體大部分都只有一個.app目錄,裏面包含了程式全部資源和可執行檔。簡單來說,Mac下的軟體就像是Windows下的綠色軟體一樣,解壓後即可使用,不需要安裝,卸載的話也只用刪除程式檔即可(這裏不涉及pkg格式安裝包)。而ipa格式可以視為這種.app軟體的衍生物。
8 n/ G5 y3 j6 E1 G3 L$ A
: Z2 L# ]3 g& r" n& \. g: t  ipa檔實質是一個zip壓縮包(不是rar或7z包),包含3個元件: ' [  {- d8 K. \/ |- p: X
- r" ?& E  M9 W6 ^5 p
  payload目錄下的.app目錄,這個是軟體的主程序;
* h/ Y  }  \2 f7 [# ?2 E4 Z% v' r9 x/ F' N( I
  iTunesArtwork,實質是一個無尾碼名的png圖片,用來在iTunes中顯示圖示; 6 m, V7 N1 D( D+ u( {2 ]
/ x& C( P$ \% U+ e6 H, P6 `" m
  iTunesMetadata.plist,記錄購買者資訊、售價等資料。 2 e* ?4 i2 F; G4 b2 |5 A
; n1 m3 L  v$ C' ?* i0 s
  由於zip包不能記錄許可權和所有者等資訊,所以蘋果規定了ipa的安裝方式,即全部ipa都會解包安裝在/var/mobile/Applications目錄下,全部檔和目錄的所有者及用戶組均設為mobile(ID為501),主程序(可執行檔)的許可權設為0755(所有人都可以執行,但只有所有者可以修改),可執行檔在plist中定義。全部目錄許可權設為0755,而其他所有檔都設為0644(僅所有者可以修改,其餘人只允許讀取,全部人都不允許執行)。
: B9 u& L3 J- Z8 E# [! `
, ^! v" D8 K6 i. b3 i8 G4 {3 w  ipa解包後並非直接放置於Applications目錄下,而是放在一串由隨機碼構成的目錄下,其作用在於,只允許這個軟體運行在一個特定的沙盒(Sandbox)中,不能干擾其他軟體。因此那串隨機碼目錄下,除了ipa本身的三個組件之外,還有三個目錄: 1 f% }4 F' H9 N

$ A5 Q$ [- o0 C  [( i8 W; ]  Library,一般是用了儲存設置檔等資料; ( V# @; K; m# K% s: w) `! x9 l8 P

! _% f& V, U% Q( \% P$ f  Documents,存儲資料,多用了保存存檔;
( G0 S6 B8 j) [/ v
4 G' Y9 s5 h% E9 e3 r5 T( ~+ V  tmp,暫存檔案夾。
" h" p9 s, z# j$ T( X! `
: G) L& Z+ V7 G  由於這個軟體只能在這個特定的目錄下運行(當然了,部分程式會調用系統的通訊錄、相機等元件,但仍然是受限制的),從而保證了整個系統的安全性和穩定性。 7 a4 l) J- i: z4 A6 Z
6 o% f6 {# i! c  N3 [+ o
  由於Unix系統下對許可權的規定相當嚴格,所以“越權”的行為是絕對不允許的。舉個例子,mobile用戶無權刪除root所有的檔,因為root的許可權高於mobile。所以有些人在修改ipa安裝後的檔時,比如進行漢化或者修改存檔,發現不能刪除乾淨軟體,或不能保存,這是因為刪除時不能刪除root所有的檔,程式本身也無法對root所有的存檔檔進行寫入操作。 ' {& n$ ~# N6 h
; y0 G( p- B! b# e
  .pxl / Y: q: D) F: f0 J7 a# A# [

6 W& ^. L: \) q7 i4 o  pxl格式在1.x時代是iPhone平臺上唯一的安裝格式,原因是那時候還沒有Cydia這樣的APT管理軟體,蘋果官方也沒有推出AppStore。由於在1.x時代積累了大量人氣,在接下來的AppStore時代中,pxl格式以其相對簡易的打包和安裝方式,仍然佔據了很大一部分市場。但隨著Installer的停止開發,iBrickr等軟體停止更新,目前唯一還在堅持使用pxl格式的就只剩下91一家了。
$ E) e" T: h, \4 ?: J/ ^
/ ~1 k  a* q3 ^% W* ]  pxl安裝包通常包含3個組件: 8 C1 M0 k+ k, Q

6 L4 b  r6 Q4 K  PxlPkg.plist記錄程式檔的存放位置、所有者、許可權以及軟體標識等資訊;
% |( P+ Z8 G) J- O9 C& P0 H/ @
2 [! O$ p' z; U$ q  PkgScript文件夾,存放安裝和卸載腳本;
$ B% ~- t6 t( _3 x/ I2 V  b  o% ~3 M  c$ F6 Y! I8 d0 [
  程式檔。 / J  t' W9 g/ ~2 E6 c# ]' s. i5 U
7 {& @8 A9 T# z- y! R) r8 v; L9 Y
  PxlPkg.plist檔的開頭通常是CFBundleIdentifier,記錄著軟體的唯一標識,以和其他軟體進行區分。RDPxlPackageVersion則記錄軟體版本。RDPxlPackageFireware被用來記錄可以運行的固件版本。其餘還有一些鍵值是用來記錄軟體介紹、網址、作者資訊等資料。
# ?* a7 N3 Q: o
9 C; N  T, [4 ^' ~( d  除了軟體標識、軟體版本和可用固件版本以外,PxlPkg.plist的核心部分就是RDPxlPackageFiles和RDPxlPackagePostflight兩項。RDPxlPackageFiles記錄了程式檔應該被複製到的路徑,並提供了是否覆蓋的參數:overwrite。而RDPxlPackagePostflight則記錄程式檔應該被賦予的所有者和許可權,分別以chown和chmod命令來實現。另外,對於含有安裝/卸載腳本的pxl來說,還會以sh命令執行相應的腳本Postflight和Preremove。 5 C. G& F/ t4 }1 q0 P
0 q4 |; D/ Q# D# [" o+ i& X6 N. ]" v
  PkgScript通常包含兩個檔,安裝後執行的腳本Postflight和卸載前執行的腳本Preremove,這兩個腳本就是標準的LinuxShellScript,以sh命令執行。
( F0 g# A! m# o
) w2 ^& I' Q( i+ q# b4 V  安裝包的特點: 8 a3 A0 f) t; ^$ b8 Q
+ \+ w" u5 ]  u4 ]
  .deb ( G! Z( f$ G( X
. U: X2 d9 o/ |7 i3 r4 T  r
  豐富的資源:Cydia上本身就不少,更何況任何格式的安裝包都可以轉換為deb。
# `- W8 H* Q5 i8 ^- P- i' n; @+ \9 N- A! D. c' q
  相對方便的線上購買模式:CydiaStore,不過儘管沒有AppStore的5台設備的限制,但對國內用戶來說,付款方式比較困難。
/ `: |0 `- k0 T8 ~1 r+ N8 _. V
3 I. C* w, m, w( _; N: e& ]& Z  破解難度較大,沒有使用AppStore的驗證方式,所以必須將驗證和防破解措施加入程式裏面,這樣就比較難破解,對軟體發展者來說是個好事。 # l/ k" }" C5 {5 _! A& C
* N/ m% a% Y8 |. s- I9 p; w% e
  完善的Unix檔系統支援:無需以命令設置檔的許可權、所有者和用戶組(當然也可以以腳本來設置) 6 u; V- H! i. c8 a& V% j

& k! h3 ~( v! {: G  完善的腳本支援:5個腳本依照安裝和卸載的先後順序執行,可以提供更多選擇。比如備份還原操作,可以在preinst中備份檔案,而在postrm中還原檔 $ ~1 Z# Z2 \, O$ D7 [
2 b  M2 A1 v2 V1 S8 j
  嚴格的依賴關係:deb遵循嚴格的依賴關係(於Depends和Pre-Depends指定),可以確保軟體運行所必需的元件。線上安裝的時候會自動安裝所依賴的套裝軟體。卸載時也很重要,比如套裝軟體A依賴於B,當卸載B的時候會提示A依賴於B,卸載掉B的話會導致A不能用,這樣可以確保系統的完整性和穩定性。
! x6 N6 _( @$ t$ J- c+ l7 o/ l4 M2 i! p2 V
  Conflicts、Replaces、Provides等鍵值的存在可以實現衝突提示或替換其他套裝軟體。 , b$ J* f, S5 i/ a0 @
2 g! k8 L1 \( v( B2 f4 @
  完全許可權:由於deb必須以最高許可權root的身份運行,deb可以對系統任何位置進行操作,換句話說,deb擁有對整個系統的完全控制,因此deb安裝包軟體可以實現很多ipa不能實現的功能。
$ ~$ R* ^6 \9 F- F( N6 [
8 W& w1 U3 K  J" ^' n7 X( M3 g  相對簡單的獲取方式(線上或離線)和安裝方式,也不用擔心在不同機器上同步會刪掉程式的問題。
. w( ]  h0 B9 I$ `; m
9 \% z1 c1 T  u+ r  @& j  安裝相對簡單:其實無論是哪種安裝包,安裝方法都不算很複雜,只不過deb稍微複雜一些。 1 j$ `. z; Q) a+ R7 \
5 ?5 X/ c) Q" a/ i3 J3 R1 _
  deb的安裝方法大體有5種:
* W6 ^, B+ b1 c2 B7 [0 G6 w+ u8 M( j) d. c6 v* l: N
  Cydia或同類APT管理軟體線上安裝,這個是最佳的安裝方式,因為通常無需考慮依賴關係,但缺點是對網路的要求比較高; 6 A% Z) R# I% n4 ~- k
' Q+ G% S5 z/ k" g7 h: F' J0 A
  命令行中以dpkg-iXXX.deb的形式安裝,好處是可以以通配符一次性安裝多個deb,而且也可以直接看到腳本的運行狀況和安裝成功/失敗的提示資訊,缺點是需要命令行軟體的支援,如Putty/WinSCP的控制臺/iSSH/MobileTerminal,很多人也不熟悉命令行下的操作。另外,安裝完後會不顯示圖示;
2 Q0 R0 g2 r& N5 e
  K' n, |7 N+ e' o' K" c  放置於AutoInstall目錄重啟安裝。該方法實際是Cydia提供的一個啟動腳本,在每次系統啟動時以dpkg命令安裝AutoInstall目錄下的deb,好處是不需要命令行操作,缺點是必須要重啟,有些甚至要重啟兩次,也會出現不顯示圖示的情況;
% q5 s* _3 f5 M( ~5 |  E( W
: f1 L2 L3 r7 i5 `$ G- I4 w! t  利用iFile安裝,好處是圖形化操作,桌面會顯示圖示,缺點是不能一次安裝多個deb;
7 k' B+ {. C6 K* l2 u; z% Y2 d
7 {2 {3 v: i; t& i  用CyderII等軟體來安裝,其原理是類比一個APT軟體管理器來下載相應的deb檔並傳到設備,然後以前面幾種方式來安裝。 / ]2 N0 ?# ^5 ]6 w' \0 x* A$ I

3 d5 R$ M+ _3 z& z  總體來說,deb的安裝都是依賴於dpkg-i命令來安裝,只不過有些是在命令行下輸入命令,有些是提供了圖形介面。但除了Cydia安裝一種方式之外,其餘幾種安裝方式都存在一些共有的問題: ' k; |7 E5 J, C8 M! F! w
3 v) `, p3 ]$ n. X7 y0 ]
  不會自行搜索依賴關係,必須手動提供所依賴的deb; / F6 ~5 G5 V! U& e/ S: ^

* H: y% T8 B9 G  Cydia會讀取安裝腳本裏的一些特殊語句,比如僅在全新安裝時執行而不在升級時執行,安裝完成後重啟SpringBoard或設備等等。
. A& M" A8 u7 l5 `+ P  ?* f/ K  s' G; u& F. {" c# p/ E
  當然了,deb軟體的卸載也比較簡單,有兩種方式:
% t# j! ^& V! ^* j. K1 K7 J. I8 b4 |2 w- L
  Cydia裏卸載,優點是卸載過程和提示資訊很詳細,全圖形介面操作,同時也提供了重新安裝的選項;
+ Q% t4 x" q9 V' J) t. m
# ^3 M( g) {4 _+ H! x  以dpkg-rPackage_ID命令或dpkg-PPackage_ID命令來卸載(詳情後面會說); 6 J' \- z: |6 o8 H/ q
! v! I% f* @, c- h. k2 A
  Cydelete來卸載,優點是可以直接在桌面上卸載有圖示的軟體,但對那些沒有圖示的無能為力。
. I# Y1 m5 a2 d; P8 ?% M+ n* x; t' o0 G* _! w
  其實,不管是安裝還是刪除,都可以才要全手動的方法。即,解包deb之後,自己將檔放到相應位置,然後設置許可權等並執行腳本。但這樣有必要麼?
8 K* v) \* ^- t" a! ]* d8 _9 Y' e) q/ d
  deb的安裝過程如下: : }  V* z6 \2 [! T$ {

9 \2 K3 y% _6 y8 o  讀取資料庫並鎖定,避免同時有兩個安裝程式在運行 # y% }# X8 G7 l2 j; ^
3 B! y) \' s5 f; x6 B
  讀取control中的Package(套裝軟體標識)和版本資訊,並搜索資料庫,若已存在,則卸載之後再安裝;
" e  i2 ~( v) }" C. N  W  D
$ V1 Q9 ~2 W% ~3 N) S  檢查Depends,Pre-Depends,Conflicts和Replaces,如果檢測到已存在Conflicts中存在的軟體,則報錯並終止安裝。如未找到Pre-Depends指定的軟體,則報錯並終止安裝。如找到Replaces中指定的軟體,則卸載之;
9 a0 K4 q5 g  h* z/ b+ |( q4 f; ^/ t1 }5 Q
  將資料寫入/var/lib/dpkg/status檔中;
# A& {% h  w+ t& V- K
, O' U* J8 ~# Z' w  p  執行preinst腳本(如果有); % {% S1 B6 p. X  i$ y# \5 Q. P
, p7 L. w, L. W! \0 u0 k( U! r
  解包data.tar.gz,將檔放置於相應位置,並將檔列表寫入/var/lib/dpkg/info/XXX.list;
9 T9 ?, Y# t7 k9 Z; h7 t# p
3 E1 }$ M( H" e% o% i2 r  運行postinst和extrainst_腳本(如果有);
/ g+ a2 Z7 F! E4 s8 E" g! }# A* `( F" i
  如果之前的安裝都沒有出錯,即安裝成功,那麼會在status檔中寫入Status:installokinstalled資訊,否則會寫入其他狀態資料,比如Unpacked(未解包資料)、Failed-config(腳本未能成功執行)、Half-installed(安裝失敗等); 6 s* J! j- T' `/ S
) s6 r  _0 T# A, d2 p5 _: d+ ?7 c' {
  重新載入資料庫並解除鎖定。
" ^1 M0 w+ Y) ~6 t$ s. h0 K
7 F7 L% Q! j9 g" J# Z+ s, [9 @% V  f: ?  deb的卸載過程如下: 3 h: i* ?2 P* L% H+ }; b
& h" J  b2 s1 {: a) |, v, R0 G& Q
  讀取資料庫並鎖定;
: k: Q) ^3 O2 ]  P9 X. E- X. f( G
, g2 J1 q. p+ }; P2 R  根據軟體標識搜尋資料庫;
* @) N0 w2 \( A, z$ h1 I
& y! S4 H0 K. U5 q# `2 S5 V" V9 B9 p. o  檢查是否有軟體依賴於待卸載的軟體,如果有則提示,並中斷卸載;
$ U9 k" a) L! w5 x/ [
$ N( |7 w5 s; m  執行prerm腳本(如果有); ) j+ Q& S+ S# a' g( s6 s
0 R, Z2 ]4 t5 c- [+ I! D* g
  讀取/var/lib/dpkg/info/XXX.list檔,並刪除list檔中記錄的全部檔和非空檔夾;
, N0 d3 G9 N5 u* ~6 F
  y; T0 \* ?4 m/ D8 `  運行postrm腳本; 3 k# i; |& Z( T/ R+ Y5 v. d

* e4 r. \; b1 V% k5 ?  如果卸載命令是dpkg-r,則保留status中的記錄並改為Status:Notinstalled;如果卸載命令是dpkg-P,則刪除全部資料; ; d6 [) p: v1 \$ i# h% `: ^- {; {
8 C# t4 w8 t4 r, W# w9 f0 I
  如果卸載過程沒有錯誤的話,重新讀取資料庫並解除鎖定。 % h  N0 F+ O* V+ x8 E7 z

& f& x7 C' [! u- T: A  由於deb安裝的軟體可能會在運行時在/var/mobile/Documents下放置存檔檔,或在/var/mobile/Library/Preferences下放置設置檔,而這些檔並沒有記錄在list檔裏,所以卸載的時候不會被刪除。
( S2 s% n* M, Y5 A" q1 X  g; A, ^9 Z
  .ipa ' T/ m) [* K4 X7 x6 i. e
% V# `4 m# ^5 k. }0 A
  豐富的資源:AppStore上那麼多資源,apptrackr等網站也提供了很多破解版。 ( z- Q$ l+ C3 `$ b

/ N( E" ~% e$ d  T  完善的更新、後期服務。
4 c3 i+ E% z0 N" m- _, c* k
/ \3 l* Z. j9 S1 ^5 n  只能使用最小許可權,保障安全性。
% Z) _* @& L4 ?, Y4 B/ e
3 L9 Q7 h& B4 R* P& b  不涉及系統級的操作,所以一般不容易造成死機或白蘋果(有些是因為資源消耗太大所以卡死)。 4 j% g4 f2 |: Z# {' j- W

5 K7 j7 B( P) q; F  y( ^" w( w  便捷的安裝方式,無論是直接在設備上用AppStore安裝,還是用iTunes來同步,抑或是用Installous和91這類第三方軟體來安裝,都是很方便快速的安裝方式。
6 |2 U+ g* a9 _: [. j
) Q' v6 c# c2 i8 V; U  超級簡單的卸載方式:還有什麼比只需要點一個X就能卸載更簡單呢? ( D) `/ y% u' g3 a

: {) m9 q4 I/ N  [" M  完全刪除,不會留下任何垃圾檔(如存檔、設置檔等)
4 k5 N" u# s9 D7 i' b2 P: p& L# k0 N7 f6 P( j) f- b
  總體來說破解還是比較容易的,但現在越來越多軟體加入了防破解措施。 ( w8 ^  z* O) d
0 N8 A( b" h: l+ G& R0 `1 d# l' O4 l
  之前提到過,ipa軟體是被安裝在一個類似于沙盒的環境中,除了能對/var/mobile/Media/DCIM目錄(拍照、截圖存放目錄)進行操作,或是調用壁紙、鈴聲、相機等元件,不能對系統進行任何干涉,這樣在最大程度上保證了系統的穩定運行,也不會干擾其他軟體的正常使用。但問題是,由於ipa軟體的許可權很低,想要對系統進行修改,尤其是應用補丁時,ipa就無能為力了。 + E1 O- a3 H. p  `

9 m, K: C* r* O  ipa軟體官方的安裝方式有兩種,一是在AppStore這個軟體中下載安裝,二是用iTunes同步。 / ]8 t$ `1 p/ a' E( f' L
$ Z: `4 N* \5 u1 a
  前者的問題主要是網路問題,網速不好很容易安裝失敗;GPRS之類的上網安裝又很耗流量。後者的問題主要是不能在不同系統下使用(包含不同電腦和同一部電腦上的不同系統),在其他系統上同步會抹掉原有的軟體。當然了,iTunes每次同步時間比較長也是經常被人詬病的。尤其是當安裝軟體比較多的時候,每次同步之前的備份需要很長很長時間,這個很噁心(不過可以直接X掉備份操作)。
$ K! V$ T% e' f8 |( \
/ ~) v) d0 X% d1 a  G4 }! C: N* G9 m1 V  由於以上兩種方式存在一些問題,所以很多人會選擇使用Installous或91來安裝ipa,這也確實是個不錯的選擇。 4 F/ l: r6 C, d9 n7 q

% D1 P5 e# g+ E* Y# w6 F' U  Installous一般沒什麼問題,但對部分驗證比較嚴格的ipa處理不是很好。雖然Installous基本能代替iTunes,但畢竟不完全等同。最典型的就是Installous安裝Microsoft官方出的LiveMessenger(正版,非破解版)時不能運行。實際上Installous對很多未破解的正版軟體支援不是很好。
1 T* `( j, w/ W! L3 i' w' s( H9 q# n; y* o: w3 m' d
  至於91,經常被人批評。91雖然可以安裝ipa,但除了Installous都有的正版軟體的支援問題外,由於91的安裝機制有缺陷,軟體不能實現多語言,只會使用英文介面,而忽略掉zh_CN.lproj,zh_TW.lproj這些語言包。這對那些用希望使用漢化版的人來說實在是一個悲劇。所以通常是要避免使用91來安裝ipa的。
7 u8 H# @: G/ U7 F/ `5 Q4 c5 c# F+ v3 @/ B5 @- t
  至於卸載,三種方法: 3 z0 A- U: Q, S, t
/ ?) h% F( h" R6 `8 j
  設備上按住圖示直到開始晃動,點擊圖示左上角的X即可卸載;
9 m$ b; ?/ x* t6 }: y! F6 ?
5 L1 M0 v, j$ A* c& j0 P: \# n  於iTunes中取消選中,然後同步 - m0 q3 v; }( t/ |8 y7 @

' x9 }+ D+ F3 d) o  找到/var/mobile/Applications下的相應目錄,強行刪除整個檔夾。這個在前面兩種方法無法使用是可以採用(有時候卸載體積太大的軟體,比如超過1G,因為刪除過程太長導致失去回應並刪除失敗。),但這種方法會造成系統的不穩定。除非是確實碰到了問題,否則強烈建議不要使用。
( o' ^/ s" ^& n& h6 @/ E9 E% s2 _) ]% y) r. W6 I# N
  .pxl % S! `, f' ^/ q% l5 T+ O
1 C$ A- h/ b% }, ?- @* j
  嚴格來說,pxl格式的資源並不算多,但也不少。現在使用pxl格式的絕大多數都是91的用戶。 4 c! b) J" \0 y4 A
* p2 Y  d; {9 u( B) L0 j4 l
  從時效性上來說,很多軟體(主要是AppStore上的)一被人破解就馬上會被人轉成pxl格式,這樣來說,pxl格式的更新還是不錯的。
, t+ B/ Q- u3 W* W' p" b' y3 G9 S3 R
  由於91手機助手沒有iTunes同步會抹掉軟體的問題,加上其他一些比較方便的功能,使得很多新手都是從91開始瞭解並熟悉iPhone/iPodTouch的使用。其結果是,pxl格式依賴于91而生存。   I0 c3 G. m! J9 F- \
) h7 D/ O. O( D$ H6 r% o4 g7 S  Y
  pxl格式的流行也不是歷史的遺物,而是符合市場規律的需求。91助手的便捷的軟體管理方式(尤其是支援WiFi管理),加上免費的旗號,使得pxl格式在新手中很受歡迎。
- L" l! p3 M5 j! l1 h
" |. i6 e, Z  N0 R# j; g  實際上,pxl格式和deb格式具有的功能完全一樣。雖然pxl不能記錄檔的許可權等資料,但完全可以用腳本來彌補。即是說,pxl格式和deb格式其實是不相伯仲的。而且因為pxl格式的製作並不需要比較少見的Unix環境,尤其是Debian環境,其本身是優於deb格式的。 ; W# j+ J, w! Y! F

5 R* R6 X; ?0 L! t# P  但為什麼現在很多人都經常在說不要使用pxl呢?我個人認為,原因主要有以下幾個: 9 z8 k, a% d" v9 b% f

) x$ t& s6 N. h5 e) W  資源的局限性:除了91公司自己開發的幾個軟體之外,其餘所有軟體都是從deb和ipa轉換而來。如果原版軟體沒破解,pxl無能為力(比如Microsoft官方出的LiveMessenger和Cydia上一眾沒被破解的軟體);
7 c: H( c: V  q0 T. }" S! m, G/ Z
  資源時效性:跟上面一點相似,pxl格式大部分是從其他格式轉換而來,跟原版相比總是會慢一些,尤其是當無法破解時,pxl根本就出不來; # ?( N' T& s# z2 ]' {. K1 [
1 B- d* p4 J; H% M1 x
  打包人水準有限:現在很多人都是直接用91助手來打包pxl。對大部分只有一個XXX.app目錄的程式來說一般不會有問題,但若遇見那些對檔許可權等資料有嚴格要求的軟體(比如可執行檔沒有可執行許可權,或是mobile用戶不能改寫root所有的檔等等),或是需要比較複雜的腳本才能運行的軟體,往往pxl製作者並沒有能力去製作一個完善的pxl出來,這樣也導致了許多安裝使用上的問題;
7 y; t- U! G- s( z& B2 d
2 S" r0 E) E1 R7 {' _  安全性:絕大部分人在製作pxl的時候都習慣用chmod-R命令來將整個XXX.app目錄及其中的全部檔和子目錄設為755/775/777許可權,而這種行為會造成一定的安全隱患。關於這些數位的意思請自行搜索相關資料。這裏簡單說明一下。644屬性表示僅有該檔的所有人才可以進行改寫操作,其餘任何人都只能讀取,任何人都不能執行這個檔。755和775是在644的基礎上加入了可執行許可權,755是該檔所在的用戶組的所有人都可以改寫。而777許可權則標識任何人都可以改寫並執行。由於mobile本身是受限帳戶,如果使用777許可權的話,有機會通過這個漏洞來獲取整個系統的控制權。只不過因為iPhone系統相對封閉,也不太有機會造成損失。但採用775和777許可權是不應該的; 0 K: p9 t1 [$ _- Z- b) W

" N0 F/ e' q/ _+ N  ipa轉pxl的存檔問題:不少人都有這樣的經歷,在遊戲A存檔之後再進遊戲B,存檔B之後再進A,發現A的存檔已經不在了。原因在於,ipa轉換成的pxl軟體,存檔全部是放在/var/mobile/Documents目錄下,而正好有兩個軟體的存檔檔案名相同(最常見的就是data.sav或save.data),互相改寫之後導致不能讀取。這種問題也發生在ipa轉deb上,而且無法解決; 6 A8 M$ v# S* y1 b9 p

/ K' Q/ l- U) Y+ {  無法完整刪除:卸載pxl格式時,不會刪除存檔檔、配置檔、暫存檔案等資料,長期使用會導致可用空間減少; ( E  s8 g0 d8 c# [: T- B
. N) P* O6 ~# u: h( c) l. T
  在部分機型上存在相容問題:有些機器越獄後並沒有將系統分區中的/Applications目錄轉移到/var/stash的用戶分區中。由於系統分區的可用空間很少(默認500MB,通常可用空間不超過50MB),強行往/Applications裏安裝會導致剩餘空間消耗殆盡或安裝失敗。 7 ?+ y1 ]' o% X" s0 Y

1 Y2 t# L* ~' W- F4 f9 ?  @8 P+ I  由此可以看出,pxl格式的問題更多不是pxl本身的問題,而是打包者的問題以及安裝方式的缺陷所致。   F5 K# u5 h" Q9 O; J  U

2 y- z6 i) Z* }  另外要指出的是,pxl最大的提供者,91,經常是轉載他人發佈的軟體(包括網友自己購買破解的,或Cydia上直接下載的)然後當作自己發佈的軟體,對版權問題完全不在意,這樣也引起了很多人,尤其是原發佈者的反感。這種赤裸裸的剽竊行為實在是令人不恥。正因為這樣,很多人是因為不爽91而不爽pxl,這實在是冤枉pxl格式本身了。
$ D0 `/ _5 D# [3 ?: O6 r' Z
) v; ~  u- O) t- J  總結: ; `$ Z0 _! L6 P/ f( H; |
5 c0 m' _* `+ n% h5 Y
  一般的軟體還是儘量用ipa格式,不要使用ipa轉換成的deb或pxl格式,這樣可以確保相容性和安全性。而在系統級的程式(如SBSettings和輸入法),ipa是絕無能力的,那麼最好的選擇還是deb。pxl作為快被淘汰的格式,還是果斷的放棄比較好。 & I* k: q! b7 S# b8 H- K
8 T; j. o; d+ S8 N/ D0 U
  至於ipa和deb的安裝方式,ipa的安裝首選iTunes同步和AppStore線上安裝,次選Installous,以保證最佳相容性。deb的安裝首選Cydia線上安裝,次選除91外的其他任何安裝方式。 8 B- ~5 _; j( ]  L$ i0 q
* |. L, _; h5 S8 E& G) V% N
  任何情況下都不推薦用91來安裝ipa和deb,因為91的安裝機制並不完善,很容易出問題。
  C. Q& c+ Q4 m  f# n8 m3 D' ?3 ^% Q1 M$ y' J$ W+ q9 G

4 G  z& I3 G: C% O本文是原樣轉過來的,甚至字體以及顏色都沒有更改。主要是為了方便機友查閱,也好進行更進一步的操作。感謝威鋒網,感謝作者autopear。
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 18-3-2026 08:04 , Processed in 0.150604 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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