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

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

[複製鏈接]
發表於 12-9-2010 21:46:02 | 顯示全部樓層 |閱讀模式
作者autopear。$ @! O2 M3 j5 _
% c- S) T1 y) j4 D' z
前言: 6 w, I; O/ A+ X/ j$ {

2 j1 D; X( m% |. ]+ A& q3 z  目前iOS平臺上常見的安裝包有三種,deb、ipa和pxl。
( R/ `" v8 G) S; w! j3 m( t% @: l/ ^* U# b/ a( I0 f6 T
  其中deb格式是Debian系統(包含Debian和Ubuntu)專屬安裝包格式,配合APT軟體管理系統,成為了當前在Linux下非常流行的一種安裝包。進入2.x時代之後有Cydia作者JayFreeman(saurik)移植到iPhone平臺上,一起的還有APT軟體管理系統。
0 k$ v: e4 e6 N9 i4 ^7 F! V9 w/ _/ A3 H
  而ipa格式則是蘋果在iOS平臺上推出的專屬軟體安裝包,在2.0固件開始才正式使用,是目前iPhone/iPodTouch/iPad平臺上唯一的官方安裝包。 8 P" J# h  _9 Y

$ Z+ @0 a% g( F+ f) x  而pxl格式則起源於Mac系統上的pkg安裝包,被廣泛應用於1.x固件時代,曾經是iPhone平臺上唯一的軟體安裝包,現在仍在被91等軟體所使用。 3 D( Q" c, s8 b  ^+ i+ @

4 W/ X8 ]( E* L4 y1 P  安裝包格式: / ]1 s4 H8 L. b/ h$ e2 B. ^
9 y5 R# R6 X  u" l( W0 D% S
  .deb + l3 R+ V8 u8 P& ~( s. M, q* p

) @- y/ `* D- A7 W/ E  deb是Unix系統(其實主要是Linux)下的安裝包,基於tar包,因此本身會記錄檔的許可權(讀/寫/可執行)以及所有者/用戶組。
* ^6 J- o- W8 U, `7 [' C5 K) ?3 F" x) u  o
  由於Unix類系統對許可權、所有者、組的嚴格要求,而deb格式安裝包又經常會涉及到系統比較底層的操作,所以許可權等的設置尤其重要。 + N$ K8 i# }# Y' ~

+ V2 |! q6 ?; F  deb包本身有三部分組成:
( e, H: a. N( k4 C
% M  Z3 a' D  X1 V; ]+ e6 k$ y  資料包,包含實際安裝的程式資料,檔案名為data.tar.XXX;
4 a9 L: K1 i% M) w
5 e! U  h  t- u, C& r  安裝資訊及控制腳本包,包含deb的安裝說明,標識,腳本等,檔案名為control.tar.gz;
/ \9 j+ @5 Q8 V$ }# s; u
9 E6 @: n3 }# g/ Z3 ^$ @  最後一個是deb檔的一些二進位資料,包括檔頭等資訊,一般看不到,在某些軟體中打開可以看到。
' ?+ _3 N" X* O7 i. F# |4 n) t' F$ \9 \, d
  deb本身可以使用不同的壓縮方式。tar格式並不是一種壓縮格式,而是直接把分散的檔和目錄集合在一起,並記錄其許可權等資料資訊。之前提到過的data.tar.XXX,這裏XXX就是經過壓縮後的尾碼名。deb默認使用的壓縮格式為gzip格式,所以最常見的就是data.tar.gz。常有的壓縮格式還有bzip2和lzma,其中lzma壓縮率最高,但壓縮需要的CPU資源和時間都比較長。 6 f! \* \( Q3 I, c. H% t# _
; q3 D2 F" K0 I! L
  data.tar.gz包含的是實際安裝的程式資料,而在安裝過程中,該包裏的資料會被直接解壓到根目錄(即/),因此在打包之前需要根據檔所在位置設置好相應的檔/目錄樹。   y6 A* O/ H8 w6 `' k, @

# N/ e, H* M/ x3 m  而control.tar.gz則包含了一個deb安裝的時候所需要的控制資訊。一般有5個檔: ) }4 C# p" k; v
& U4 e+ x* ]" ?. N: ~9 b  z$ B2 q
  control,用了記錄軟體標識,版本號,平臺,依賴資訊等資料; 1 i! H' l7 l5 X! o: T4 {

1 V3 K+ m3 j7 _2 s  preinst,在解包data.tar.gz前運行的腳本;
8 |/ ^! k# k( L" _% l0 d
' S$ ^) B; F7 ~7 n0 d7 t* k; w  postinst,在解包資料後運行的腳本; 4 r1 A3 {$ Q* T/ [2 e
! n$ s: W- {; D3 C7 M
  prerm,卸載時,在刪除檔之前運行的腳本; 7 b, U8 ?. L4 W. G

) n/ E5 [7 z/ E# E) M/ {- O  y  postrm,在刪除檔之後運行的腳本;
& p( k/ q, Y$ a8 r4 A+ Q, P1 R" a% m' I
  在Cydia系統中,Cydia的作者Saurik另外添加了一個腳本,extrainst_,作用與postinst類似。
0 P) |; `, \* y2 ?$ G. T! p8 v
; G: E* S2 \+ n  .ipa , v. q- `0 D. A% S9 \

9 a# \; ~3 ]6 k- e  使用過MacOS的人可能都知道,Mac下的軟體大部分都只有一個.app目錄,裏面包含了程式全部資源和可執行檔。簡單來說,Mac下的軟體就像是Windows下的綠色軟體一樣,解壓後即可使用,不需要安裝,卸載的話也只用刪除程式檔即可(這裏不涉及pkg格式安裝包)。而ipa格式可以視為這種.app軟體的衍生物。 4 O4 {+ S8 U7 N; [/ m/ L; H! {( @

" T* p  W5 B5 }! I4 |* P. l2 B  ipa檔實質是一個zip壓縮包(不是rar或7z包),包含3個元件:
2 a! S! b8 Y8 f3 A; R/ w% K  d% o; D
  payload目錄下的.app目錄,這個是軟體的主程序; " |( p) c+ s0 F+ y; v0 Y+ M
( B, ?  h  m: }' x8 C4 z
  iTunesArtwork,實質是一個無尾碼名的png圖片,用來在iTunes中顯示圖示; + p- W- o* I/ p6 X6 B8 W
( p/ j( \  S" m$ l/ `4 H
  iTunesMetadata.plist,記錄購買者資訊、售價等資料。
& e  {2 B' A. a+ a- i4 B8 ^" Y; g2 A: b2 Q8 d& g: R" Q9 C
  由於zip包不能記錄許可權和所有者等資訊,所以蘋果規定了ipa的安裝方式,即全部ipa都會解包安裝在/var/mobile/Applications目錄下,全部檔和目錄的所有者及用戶組均設為mobile(ID為501),主程序(可執行檔)的許可權設為0755(所有人都可以執行,但只有所有者可以修改),可執行檔在plist中定義。全部目錄許可權設為0755,而其他所有檔都設為0644(僅所有者可以修改,其餘人只允許讀取,全部人都不允許執行)。 % [4 _5 x* z5 [, z1 ^/ N  b
5 {6 f$ F0 |5 ^' D
  ipa解包後並非直接放置於Applications目錄下,而是放在一串由隨機碼構成的目錄下,其作用在於,只允許這個軟體運行在一個特定的沙盒(Sandbox)中,不能干擾其他軟體。因此那串隨機碼目錄下,除了ipa本身的三個組件之外,還有三個目錄: % K8 \8 [; y( s& ~& w+ R* ~
; w5 W! Y& Y5 _, q
  Library,一般是用了儲存設置檔等資料; 4 z; m* _, T* x0 X, y9 O; V

7 D  n2 W4 Z% ^. d5 \: ^5 r  Documents,存儲資料,多用了保存存檔;
# @- h  q2 X+ l3 u5 V
' a% A+ o. ?0 E  g0 X  tmp,暫存檔案夾。 8 t+ F, c/ i% D0 B  _  g
/ D, j/ v$ y/ E5 w/ E
  由於這個軟體只能在這個特定的目錄下運行(當然了,部分程式會調用系統的通訊錄、相機等元件,但仍然是受限制的),從而保證了整個系統的安全性和穩定性。
/ n# r  i6 h+ A1 ^1 J: Q' _
6 ^" p/ a9 J) ?2 X9 y2 S  由於Unix系統下對許可權的規定相當嚴格,所以“越權”的行為是絕對不允許的。舉個例子,mobile用戶無權刪除root所有的檔,因為root的許可權高於mobile。所以有些人在修改ipa安裝後的檔時,比如進行漢化或者修改存檔,發現不能刪除乾淨軟體,或不能保存,這是因為刪除時不能刪除root所有的檔,程式本身也無法對root所有的存檔檔進行寫入操作。 9 e2 _% A/ u- E

6 ]9 U3 H7 S/ ]$ x* K  .pxl . y, N! G9 Z) h. i. g1 Q! n

: W, m* T+ H. D5 }  pxl格式在1.x時代是iPhone平臺上唯一的安裝格式,原因是那時候還沒有Cydia這樣的APT管理軟體,蘋果官方也沒有推出AppStore。由於在1.x時代積累了大量人氣,在接下來的AppStore時代中,pxl格式以其相對簡易的打包和安裝方式,仍然佔據了很大一部分市場。但隨著Installer的停止開發,iBrickr等軟體停止更新,目前唯一還在堅持使用pxl格式的就只剩下91一家了。
6 l7 Z- c+ X* a
* ]7 N6 \, q9 G  Z: Y  pxl安裝包通常包含3個組件:
' E6 {: N& m% e9 a0 p. E* U, f, f
5 z5 D% ~; r, t/ o7 R% [) D  PxlPkg.plist記錄程式檔的存放位置、所有者、許可權以及軟體標識等資訊; % v1 r" ?( k" G

8 H/ T* B, M! r8 _' l- w/ b+ h  PkgScript文件夾,存放安裝和卸載腳本; % z9 `( t6 u3 o# T
' [( e8 q4 \* V
  程式檔。
9 r) M0 j: {8 O5 m, ?. M
# ]* q: `, f8 w3 [! \, a1 }  PxlPkg.plist檔的開頭通常是CFBundleIdentifier,記錄著軟體的唯一標識,以和其他軟體進行區分。RDPxlPackageVersion則記錄軟體版本。RDPxlPackageFireware被用來記錄可以運行的固件版本。其餘還有一些鍵值是用來記錄軟體介紹、網址、作者資訊等資料。
& |" G+ A' y* o9 w  e/ |4 G( O
( p& \6 L5 h1 T. w" L& m( r( [. k4 |  除了軟體標識、軟體版本和可用固件版本以外,PxlPkg.plist的核心部分就是RDPxlPackageFiles和RDPxlPackagePostflight兩項。RDPxlPackageFiles記錄了程式檔應該被複製到的路徑,並提供了是否覆蓋的參數:overwrite。而RDPxlPackagePostflight則記錄程式檔應該被賦予的所有者和許可權,分別以chown和chmod命令來實現。另外,對於含有安裝/卸載腳本的pxl來說,還會以sh命令執行相應的腳本Postflight和Preremove。
6 V: z8 S7 o: Z% R8 y: i) }, B4 F4 h: H* W
  PkgScript通常包含兩個檔,安裝後執行的腳本Postflight和卸載前執行的腳本Preremove,這兩個腳本就是標準的LinuxShellScript,以sh命令執行。
- L" ?- h3 T3 b$ c" c; ^
' r3 V# ]0 D8 J  安裝包的特點:
0 A4 k2 v' c6 a8 A" u" [, B  }) ^
  .deb
) T' O1 z! U9 ^3 g
% a3 ]- d1 L. H0 f  豐富的資源:Cydia上本身就不少,更何況任何格式的安裝包都可以轉換為deb。 + O" P6 H0 W- b; {1 f$ K
1 J0 ~: L5 }& w+ I0 v+ v! Y8 ~
  相對方便的線上購買模式:CydiaStore,不過儘管沒有AppStore的5台設備的限制,但對國內用戶來說,付款方式比較困難。 ( f" t6 G: _1 e) }

4 O9 I* A7 k; |8 W* ?0 n, k- a  n  破解難度較大,沒有使用AppStore的驗證方式,所以必須將驗證和防破解措施加入程式裏面,這樣就比較難破解,對軟體發展者來說是個好事。
6 P1 @7 d; I- O+ |9 o5 M' t' D' O- Z& {0 l3 \' u
  完善的Unix檔系統支援:無需以命令設置檔的許可權、所有者和用戶組(當然也可以以腳本來設置)   x0 K0 t, h% x3 Z$ p

! e2 O& ]3 n8 I7 W5 L  完善的腳本支援:5個腳本依照安裝和卸載的先後順序執行,可以提供更多選擇。比如備份還原操作,可以在preinst中備份檔案,而在postrm中還原檔 " v& X+ ~7 f' ]. O7 i
9 T+ w' z4 l* O: T$ t
  嚴格的依賴關係:deb遵循嚴格的依賴關係(於Depends和Pre-Depends指定),可以確保軟體運行所必需的元件。線上安裝的時候會自動安裝所依賴的套裝軟體。卸載時也很重要,比如套裝軟體A依賴於B,當卸載B的時候會提示A依賴於B,卸載掉B的話會導致A不能用,這樣可以確保系統的完整性和穩定性。
# [9 E8 p0 m* t$ ]! ~( y6 G& \- w. U
  Conflicts、Replaces、Provides等鍵值的存在可以實現衝突提示或替換其他套裝軟體。
! q9 P/ D8 v' G3 X, c+ q* l9 L& s8 h, W
  完全許可權:由於deb必須以最高許可權root的身份運行,deb可以對系統任何位置進行操作,換句話說,deb擁有對整個系統的完全控制,因此deb安裝包軟體可以實現很多ipa不能實現的功能。   u, X3 A9 K9 k( V

4 z* e3 B( Z; U* d" ]  相對簡單的獲取方式(線上或離線)和安裝方式,也不用擔心在不同機器上同步會刪掉程式的問題。
( R5 {' d3 q; S  N0 b
4 q0 k5 I/ G8 x/ }9 Q; f- c% ^  安裝相對簡單:其實無論是哪種安裝包,安裝方法都不算很複雜,只不過deb稍微複雜一些。
) }4 w# g* L8 w! v8 y
& n: l& ]0 M* C7 ]  deb的安裝方法大體有5種: % u  d$ j, @% ~: {

/ l/ ]5 ~2 P2 V% y; q0 n  Cydia或同類APT管理軟體線上安裝,這個是最佳的安裝方式,因為通常無需考慮依賴關係,但缺點是對網路的要求比較高;
! Q4 ?! G4 p6 S7 N' }# o* ]% [. m) R6 I6 I! T* S) v4 A
  命令行中以dpkg-iXXX.deb的形式安裝,好處是可以以通配符一次性安裝多個deb,而且也可以直接看到腳本的運行狀況和安裝成功/失敗的提示資訊,缺點是需要命令行軟體的支援,如Putty/WinSCP的控制臺/iSSH/MobileTerminal,很多人也不熟悉命令行下的操作。另外,安裝完後會不顯示圖示; 2 F+ o4 v& S' b* z& ~6 T9 L

. c$ t8 {+ r  L4 H/ E  x  放置於AutoInstall目錄重啟安裝。該方法實際是Cydia提供的一個啟動腳本,在每次系統啟動時以dpkg命令安裝AutoInstall目錄下的deb,好處是不需要命令行操作,缺點是必須要重啟,有些甚至要重啟兩次,也會出現不顯示圖示的情況; 5 ]3 W" U- G! L0 u
5 }' {6 h% T2 s1 ~, k; ?
  利用iFile安裝,好處是圖形化操作,桌面會顯示圖示,缺點是不能一次安裝多個deb;
, R) U6 @5 Y) X2 D6 n: c: Y0 O, w5 w8 [: O. d/ `% F
  用CyderII等軟體來安裝,其原理是類比一個APT軟體管理器來下載相應的deb檔並傳到設備,然後以前面幾種方式來安裝。 ) n- i  h# N- s8 N6 w9 q7 p  l. X

& x2 e8 u  r5 a% `  B( [$ [  總體來說,deb的安裝都是依賴於dpkg-i命令來安裝,只不過有些是在命令行下輸入命令,有些是提供了圖形介面。但除了Cydia安裝一種方式之外,其餘幾種安裝方式都存在一些共有的問題:
# Y8 Q# q: O/ c" }5 O8 z% [
5 E5 V, z8 }" |# \  不會自行搜索依賴關係,必須手動提供所依賴的deb; 5 ?) a7 C/ w7 V' w8 o3 d

/ }; F6 N  o$ b  Cydia會讀取安裝腳本裏的一些特殊語句,比如僅在全新安裝時執行而不在升級時執行,安裝完成後重啟SpringBoard或設備等等。
) [3 t( _" K$ k. s' L. r+ w3 V3 T4 S$ ?- m* d, C* b! s  d+ J% Q' }
  當然了,deb軟體的卸載也比較簡單,有兩種方式:
! X, |/ j0 ?1 c4 w* H$ F* @5 L
6 |! e, H- O- L  Cydia裏卸載,優點是卸載過程和提示資訊很詳細,全圖形介面操作,同時也提供了重新安裝的選項;
1 C- I) R1 O* j# s
6 ^1 c! V" f- O2 v$ @  以dpkg-rPackage_ID命令或dpkg-PPackage_ID命令來卸載(詳情後面會說);
9 T5 q: j1 m. K4 R2 d- a! g" @) e
  Cydelete來卸載,優點是可以直接在桌面上卸載有圖示的軟體,但對那些沒有圖示的無能為力。
1 p; f5 {( V' H* g5 C& Q0 H2 G: g, A& o
  其實,不管是安裝還是刪除,都可以才要全手動的方法。即,解包deb之後,自己將檔放到相應位置,然後設置許可權等並執行腳本。但這樣有必要麼? ; S* M5 P4 |- K1 C+ X) ~, O
1 N  N9 R' ]% v7 c" ?3 ~6 c
  deb的安裝過程如下:   Z) a8 \  e" n& l  ~

+ L7 S- H+ T" ], o3 o  讀取資料庫並鎖定,避免同時有兩個安裝程式在運行
( c* b' l$ \6 |; a5 G1 O4 w
# J+ Q3 P9 R2 {' E  c' _9 e  讀取control中的Package(套裝軟體標識)和版本資訊,並搜索資料庫,若已存在,則卸載之後再安裝; 3 n: R. p' [7 F' ?. @: }6 Z0 |

, i! O! d5 \  b) L( y4 o$ x2 D/ x  檢查Depends,Pre-Depends,Conflicts和Replaces,如果檢測到已存在Conflicts中存在的軟體,則報錯並終止安裝。如未找到Pre-Depends指定的軟體,則報錯並終止安裝。如找到Replaces中指定的軟體,則卸載之; 3 m) s' @& X5 [; t0 C4 V

6 M6 a3 ?# ~  `  q/ v  將資料寫入/var/lib/dpkg/status檔中; 3 P  Y  z; t0 z0 I' W; z
. ^5 j- e  ^3 o" s1 Z5 P
  執行preinst腳本(如果有);
3 I4 u5 D/ u; {) S/ P
4 [2 Q6 Y8 Z& W" ?5 H6 h# Q  解包data.tar.gz,將檔放置於相應位置,並將檔列表寫入/var/lib/dpkg/info/XXX.list; 0 d  k' e; P) E4 c
) f" ]* @/ v4 s9 W
  運行postinst和extrainst_腳本(如果有); + l, t& \$ M% b, L( r& n' ?
: h0 q. S9 d4 ?1 |! ^, V
  如果之前的安裝都沒有出錯,即安裝成功,那麼會在status檔中寫入Status:installokinstalled資訊,否則會寫入其他狀態資料,比如Unpacked(未解包資料)、Failed-config(腳本未能成功執行)、Half-installed(安裝失敗等); ) J$ n- h8 M1 S6 i' F4 o& B  v
: e) C( {% `9 ~: N  k5 `0 [
  重新載入資料庫並解除鎖定。
* }' H0 ]. A; Y" R- W  G% I0 j% [* E% N1 X  }$ z% ~/ p8 e( e6 x
  deb的卸載過程如下:
8 b3 [, }# Y* ?3 S+ `% d% m9 g/ \2 s/ i6 t% y/ v
  讀取資料庫並鎖定;
9 k/ _" C4 S. r: e: ^7 H; _" ]8 F$ _
8 w- A8 ]( u8 ]) B) S  \6 [  根據軟體標識搜尋資料庫;
$ T2 H/ v; B4 e0 }9 Z* X+ n1 I7 x; [: t1 G! A. r  l4 C
  檢查是否有軟體依賴於待卸載的軟體,如果有則提示,並中斷卸載; / s* M+ ]+ {- V: @# r, H

% K$ q& m! Y+ K" u  執行prerm腳本(如果有); # A% _7 T0 t' X& O( i( F
4 L& Z- [4 V6 K% W
  讀取/var/lib/dpkg/info/XXX.list檔,並刪除list檔中記錄的全部檔和非空檔夾; " l! o  i% W+ Y  C; I
. u9 Q, w5 P3 M" }3 u" K7 E
  運行postrm腳本;
8 G/ ]- e8 U  o
1 h$ M% F, v6 I5 \  如果卸載命令是dpkg-r,則保留status中的記錄並改為Status:Notinstalled;如果卸載命令是dpkg-P,則刪除全部資料; 6 e/ h( @: A% E+ B- I
  |" i4 c7 D2 q' m2 d0 p
  如果卸載過程沒有錯誤的話,重新讀取資料庫並解除鎖定。
6 A& d7 f8 E. T3 _5 w
7 y+ x7 R4 E/ M* d  由於deb安裝的軟體可能會在運行時在/var/mobile/Documents下放置存檔檔,或在/var/mobile/Library/Preferences下放置設置檔,而這些檔並沒有記錄在list檔裏,所以卸載的時候不會被刪除。
  ?/ g( `2 ]% P2 N! A
$ B4 c2 W! h2 J& V9 {9 p, S  .ipa ) a7 m+ v/ }! J! D* W, x5 H/ _

' f4 t  B# l6 l+ S7 T( r8 t& g/ I0 J  豐富的資源:AppStore上那麼多資源,apptrackr等網站也提供了很多破解版。
$ ]" Q8 W2 p$ ?! d, i: }$ E- p0 i- e2 s& m3 m5 U2 U' \
  完善的更新、後期服務。
' g* w2 ?' c* B3 y
1 r  g4 |7 |& n0 g3 m  只能使用最小許可權,保障安全性。
- x8 m0 ^9 K( {& U& [
% \( Y1 I/ j+ i: J  {3 E  不涉及系統級的操作,所以一般不容易造成死機或白蘋果(有些是因為資源消耗太大所以卡死)。
3 Y; [# J/ A# U4 l2 b9 x. F) q& _' b) M& p
  便捷的安裝方式,無論是直接在設備上用AppStore安裝,還是用iTunes來同步,抑或是用Installous和91這類第三方軟體來安裝,都是很方便快速的安裝方式。 $ z2 X1 e  d9 @- E8 _
+ I8 [% `8 m! f6 J9 J7 R8 X
  超級簡單的卸載方式:還有什麼比只需要點一個X就能卸載更簡單呢?
: q( v, e+ E4 ^2 z. s! l8 I, _. _+ m1 \* z
  完全刪除,不會留下任何垃圾檔(如存檔、設置檔等)
7 `; {+ z- v0 L6 L# z5 \+ H
, Y" Q7 t+ u4 N  M7 T9 V4 d  總體來說破解還是比較容易的,但現在越來越多軟體加入了防破解措施。 9 Y* t% h  C5 n9 S7 U5 y5 B0 k- v0 F

$ ?0 ^; c$ n& x4 o3 f! d  之前提到過,ipa軟體是被安裝在一個類似于沙盒的環境中,除了能對/var/mobile/Media/DCIM目錄(拍照、截圖存放目錄)進行操作,或是調用壁紙、鈴聲、相機等元件,不能對系統進行任何干涉,這樣在最大程度上保證了系統的穩定運行,也不會干擾其他軟體的正常使用。但問題是,由於ipa軟體的許可權很低,想要對系統進行修改,尤其是應用補丁時,ipa就無能為力了。 $ V- p3 d3 o  T% q6 S1 [: I% ]

2 q! v! Q/ \% n# l0 d" O  ipa軟體官方的安裝方式有兩種,一是在AppStore這個軟體中下載安裝,二是用iTunes同步。 , S& z# m; f5 L7 m* L2 f; p
8 u7 K3 H/ |+ k
  前者的問題主要是網路問題,網速不好很容易安裝失敗;GPRS之類的上網安裝又很耗流量。後者的問題主要是不能在不同系統下使用(包含不同電腦和同一部電腦上的不同系統),在其他系統上同步會抹掉原有的軟體。當然了,iTunes每次同步時間比較長也是經常被人詬病的。尤其是當安裝軟體比較多的時候,每次同步之前的備份需要很長很長時間,這個很噁心(不過可以直接X掉備份操作)。 ) X7 O  R8 B+ p, q  `' y% I
3 ]$ I  k7 r6 h; V* R/ x1 P7 s
  由於以上兩種方式存在一些問題,所以很多人會選擇使用Installous或91來安裝ipa,這也確實是個不錯的選擇。 ( L8 o8 V, u2 S2 w
# I( ]& T9 @. K( L
  Installous一般沒什麼問題,但對部分驗證比較嚴格的ipa處理不是很好。雖然Installous基本能代替iTunes,但畢竟不完全等同。最典型的就是Installous安裝Microsoft官方出的LiveMessenger(正版,非破解版)時不能運行。實際上Installous對很多未破解的正版軟體支援不是很好。
# @% D2 P  a+ \9 X5 y
6 @0 R7 N& r* _3 G  至於91,經常被人批評。91雖然可以安裝ipa,但除了Installous都有的正版軟體的支援問題外,由於91的安裝機制有缺陷,軟體不能實現多語言,只會使用英文介面,而忽略掉zh_CN.lproj,zh_TW.lproj這些語言包。這對那些用希望使用漢化版的人來說實在是一個悲劇。所以通常是要避免使用91來安裝ipa的。
" a, D* V$ x8 V1 Z! N; T( p8 S* k! P2 W1 `0 P+ x  I+ Q9 q7 E/ L
  至於卸載,三種方法:
$ b. u# E+ y8 B
8 b: h/ _0 j; G2 e  設備上按住圖示直到開始晃動,點擊圖示左上角的X即可卸載; " o2 j1 m7 L% l4 G( B
. l( n" h7 \3 n# U: ?
  於iTunes中取消選中,然後同步
) t# b. v& W( y# e# O, D: M, a" k1 n  u& G
  找到/var/mobile/Applications下的相應目錄,強行刪除整個檔夾。這個在前面兩種方法無法使用是可以採用(有時候卸載體積太大的軟體,比如超過1G,因為刪除過程太長導致失去回應並刪除失敗。),但這種方法會造成系統的不穩定。除非是確實碰到了問題,否則強烈建議不要使用。
0 f  K# ?; E* a$ j( W+ m2 I
2 D8 ]/ C8 S; e  V  .pxl 9 c5 R  u2 E5 A; Z2 e2 Z0 }7 F# d% l
/ J- s) F4 t$ X/ y1 x2 \: @$ ?6 d
  嚴格來說,pxl格式的資源並不算多,但也不少。現在使用pxl格式的絕大多數都是91的用戶。
3 c! ], r- W$ f4 U" U( [* k
5 |9 @+ L1 g1 H! L  從時效性上來說,很多軟體(主要是AppStore上的)一被人破解就馬上會被人轉成pxl格式,這樣來說,pxl格式的更新還是不錯的。 % O) J0 F) u+ e6 A; Z
  P2 _  f/ c% O& w; {
  由於91手機助手沒有iTunes同步會抹掉軟體的問題,加上其他一些比較方便的功能,使得很多新手都是從91開始瞭解並熟悉iPhone/iPodTouch的使用。其結果是,pxl格式依賴于91而生存。 ( P% i0 X# q$ e; y6 U) y! G
$ F7 u9 y3 V4 w; n+ l' O
  pxl格式的流行也不是歷史的遺物,而是符合市場規律的需求。91助手的便捷的軟體管理方式(尤其是支援WiFi管理),加上免費的旗號,使得pxl格式在新手中很受歡迎。 , e" B6 B. i+ O+ D
, L. a5 ^9 [! X; v' h% Y+ R
  實際上,pxl格式和deb格式具有的功能完全一樣。雖然pxl不能記錄檔的許可權等資料,但完全可以用腳本來彌補。即是說,pxl格式和deb格式其實是不相伯仲的。而且因為pxl格式的製作並不需要比較少見的Unix環境,尤其是Debian環境,其本身是優於deb格式的。
! P  T1 W' s' S: j# G' E$ ~! C0 ?& e2 F
  但為什麼現在很多人都經常在說不要使用pxl呢?我個人認為,原因主要有以下幾個:
# I% s6 s* }! Q4 j! P# P/ n
$ T! D: N3 ~" F' E3 V1 G6 z  資源的局限性:除了91公司自己開發的幾個軟體之外,其餘所有軟體都是從deb和ipa轉換而來。如果原版軟體沒破解,pxl無能為力(比如Microsoft官方出的LiveMessenger和Cydia上一眾沒被破解的軟體); 5 F( j, t; z( b

& k# n# }$ X. X8 j! W; s# O  資源時效性:跟上面一點相似,pxl格式大部分是從其他格式轉換而來,跟原版相比總是會慢一些,尤其是當無法破解時,pxl根本就出不來;
8 G; n6 D' O( ]1 K# }) F; M3 K& \
' H# S* ?* L1 Y2 t  打包人水準有限:現在很多人都是直接用91助手來打包pxl。對大部分只有一個XXX.app目錄的程式來說一般不會有問題,但若遇見那些對檔許可權等資料有嚴格要求的軟體(比如可執行檔沒有可執行許可權,或是mobile用戶不能改寫root所有的檔等等),或是需要比較複雜的腳本才能運行的軟體,往往pxl製作者並沒有能力去製作一個完善的pxl出來,這樣也導致了許多安裝使用上的問題;
% X( C; T) c, l1 q' T* V, J0 t( A4 D
" e9 q4 W% V% O  安全性:絕大部分人在製作pxl的時候都習慣用chmod-R命令來將整個XXX.app目錄及其中的全部檔和子目錄設為755/775/777許可權,而這種行為會造成一定的安全隱患。關於這些數位的意思請自行搜索相關資料。這裏簡單說明一下。644屬性表示僅有該檔的所有人才可以進行改寫操作,其餘任何人都只能讀取,任何人都不能執行這個檔。755和775是在644的基礎上加入了可執行許可權,755是該檔所在的用戶組的所有人都可以改寫。而777許可權則標識任何人都可以改寫並執行。由於mobile本身是受限帳戶,如果使用777許可權的話,有機會通過這個漏洞來獲取整個系統的控制權。只不過因為iPhone系統相對封閉,也不太有機會造成損失。但採用775和777許可權是不應該的; 2 C( p" Z: z  D8 e7 r* D- [. t

# Z$ \) w! x5 D/ s0 A. H" ]2 c  ipa轉pxl的存檔問題:不少人都有這樣的經歷,在遊戲A存檔之後再進遊戲B,存檔B之後再進A,發現A的存檔已經不在了。原因在於,ipa轉換成的pxl軟體,存檔全部是放在/var/mobile/Documents目錄下,而正好有兩個軟體的存檔檔案名相同(最常見的就是data.sav或save.data),互相改寫之後導致不能讀取。這種問題也發生在ipa轉deb上,而且無法解決; , z2 u' G, X& }1 v; [

1 G) C( v: [% y; a, R6 L' u2 H  無法完整刪除:卸載pxl格式時,不會刪除存檔檔、配置檔、暫存檔案等資料,長期使用會導致可用空間減少;
4 O( G& p9 Q) u" m
* X5 d4 g- E6 W/ |  ^# a  在部分機型上存在相容問題:有些機器越獄後並沒有將系統分區中的/Applications目錄轉移到/var/stash的用戶分區中。由於系統分區的可用空間很少(默認500MB,通常可用空間不超過50MB),強行往/Applications裏安裝會導致剩餘空間消耗殆盡或安裝失敗。
9 `1 C% L. Z' u5 O+ Q! V4 ]* h8 p& y8 T) ]2 s4 l7 ]
  由此可以看出,pxl格式的問題更多不是pxl本身的問題,而是打包者的問題以及安裝方式的缺陷所致。
7 ?3 R0 [9 K1 h3 q1 D, }7 K/ k- m9 _- D7 L
  另外要指出的是,pxl最大的提供者,91,經常是轉載他人發佈的軟體(包括網友自己購買破解的,或Cydia上直接下載的)然後當作自己發佈的軟體,對版權問題完全不在意,這樣也引起了很多人,尤其是原發佈者的反感。這種赤裸裸的剽竊行為實在是令人不恥。正因為這樣,很多人是因為不爽91而不爽pxl,這實在是冤枉pxl格式本身了。 # `  t) K2 l% d+ X- L' U3 @. o% c
7 T# \; l, O( [+ M- s( c
  總結: 2 q/ X/ c+ O' s
7 {3 M/ h* m: i+ N: F
  一般的軟體還是儘量用ipa格式,不要使用ipa轉換成的deb或pxl格式,這樣可以確保相容性和安全性。而在系統級的程式(如SBSettings和輸入法),ipa是絕無能力的,那麼最好的選擇還是deb。pxl作為快被淘汰的格式,還是果斷的放棄比較好。 0 N- O3 [6 v  h8 r- k6 O" z1 X
) V0 W6 n+ e. n8 ?8 X
  至於ipa和deb的安裝方式,ipa的安裝首選iTunes同步和AppStore線上安裝,次選Installous,以保證最佳相容性。deb的安裝首選Cydia線上安裝,次選除91外的其他任何安裝方式。 , p, p1 a' T2 C5 @

$ O* _4 Z  l1 D9 r( _) t  任何情況下都不推薦用91來安裝ipa和deb,因為91的安裝機制並不完善,很容易出問題。
! D" a0 K% Q* r6 Z( G% |  s8 O. s
% M/ S# L+ o3 s  @) e
+ {' u! B' ?* A1 {/ Z5 @9 Y) P' m% V& \( R本文是原樣轉過來的,甚至字體以及顏色都沒有更改。主要是為了方便機友查閱,也好進行更進一步的操作。感謝威鋒網,感謝作者autopear。
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 8-6-2025 23:40 , Processed in 0.293666 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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