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

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

[複製鏈接]
發表於 12-9-2010 21:46:02 | 顯示全部樓層 |閱讀模式
作者autopear。2 G. o( t) i1 B& h( K, P
1 |" g/ \6 |" q, h+ W
前言:
( D4 T- }8 n" Q. F  y2 W
6 I, L! V3 n6 {; a  i  目前iOS平臺上常見的安裝包有三種,deb、ipa和pxl。
) C! A8 s4 K' h. H! M9 P# g" t/ t7 i$ s/ b
  其中deb格式是Debian系統(包含Debian和Ubuntu)專屬安裝包格式,配合APT軟體管理系統,成為了當前在Linux下非常流行的一種安裝包。進入2.x時代之後有Cydia作者JayFreeman(saurik)移植到iPhone平臺上,一起的還有APT軟體管理系統。 . g2 A  a' U- m7 J9 q, j

- e7 e9 C. j- k( _: y8 O7 ~  而ipa格式則是蘋果在iOS平臺上推出的專屬軟體安裝包,在2.0固件開始才正式使用,是目前iPhone/iPodTouch/iPad平臺上唯一的官方安裝包。 : G* ^3 S: @6 A0 G! x* Z
) Z- k# H' G8 [. D! L$ X
  而pxl格式則起源於Mac系統上的pkg安裝包,被廣泛應用於1.x固件時代,曾經是iPhone平臺上唯一的軟體安裝包,現在仍在被91等軟體所使用。
! d+ M4 t" ^, D0 t3 i& m
$ G( s7 [& k1 S8 p4 v6 k0 D9 g  安裝包格式: + p5 K8 A* N3 e- }6 F0 k
/ v0 j. _& ?! ^
  .deb ; g0 l. v- o1 R

8 W2 L/ U- X& o1 C4 A; D" {  deb是Unix系統(其實主要是Linux)下的安裝包,基於tar包,因此本身會記錄檔的許可權(讀/寫/可執行)以及所有者/用戶組。 7 W% _% d9 T/ Z- i5 a
* a& d2 L- d: }) m* B6 \
  由於Unix類系統對許可權、所有者、組的嚴格要求,而deb格式安裝包又經常會涉及到系統比較底層的操作,所以許可權等的設置尤其重要。 & y/ H8 X5 G7 x
( s' X/ E6 P! e. o4 ~0 K$ o: N, W
  deb包本身有三部分組成: # j9 N; Z. n4 Z- F3 ?/ i) @

& X5 a; D% u* |$ {5 Q( j. t  資料包,包含實際安裝的程式資料,檔案名為data.tar.XXX;
5 c" d+ o5 \. i* y5 ~
* A$ [5 U2 a3 y1 R9 C# E. ~+ M3 T  安裝資訊及控制腳本包,包含deb的安裝說明,標識,腳本等,檔案名為control.tar.gz; 7 L, C& p* |! g; V& V
6 I* x/ E& g- u, [
  最後一個是deb檔的一些二進位資料,包括檔頭等資訊,一般看不到,在某些軟體中打開可以看到。
% s- b2 ]7 M( i% Z3 ]4 X# E) R/ w8 f" d
  deb本身可以使用不同的壓縮方式。tar格式並不是一種壓縮格式,而是直接把分散的檔和目錄集合在一起,並記錄其許可權等資料資訊。之前提到過的data.tar.XXX,這裏XXX就是經過壓縮後的尾碼名。deb默認使用的壓縮格式為gzip格式,所以最常見的就是data.tar.gz。常有的壓縮格式還有bzip2和lzma,其中lzma壓縮率最高,但壓縮需要的CPU資源和時間都比較長。 & ?; m4 \% c; e, f. |* Z2 p- v( R

  z& f8 d9 ^! |3 w  data.tar.gz包含的是實際安裝的程式資料,而在安裝過程中,該包裏的資料會被直接解壓到根目錄(即/),因此在打包之前需要根據檔所在位置設置好相應的檔/目錄樹。 9 n' X) b- `' ~7 u) r! [3 x
' y" n# R7 {+ I) X$ {3 v% E
  而control.tar.gz則包含了一個deb安裝的時候所需要的控制資訊。一般有5個檔:
% v. f$ X* T) C- b" N' v0 ]
' a0 q1 g: \2 J0 b/ c  control,用了記錄軟體標識,版本號,平臺,依賴資訊等資料; # U/ P) z/ v7 L2 B6 a: k! P  D: _
5 @" K/ W: V. r( K1 ?/ U+ [6 ?
  preinst,在解包data.tar.gz前運行的腳本; 7 `+ o" U$ B, ~/ Q0 `! U% m

; V1 @! p/ y- m& L* o  postinst,在解包資料後運行的腳本;
% H4 {. Y$ P8 `  ^3 u* x8 U
% `/ p0 I1 |' `$ Q) ^/ f  prerm,卸載時,在刪除檔之前運行的腳本; : V! P: h/ M& R: w" H
2 C9 g  B- X* `
  postrm,在刪除檔之後運行的腳本;
4 M2 Y$ N# _  q
. ^3 }3 Q5 |- R2 _- c* _  在Cydia系統中,Cydia的作者Saurik另外添加了一個腳本,extrainst_,作用與postinst類似。
( `8 K5 M% W( d+ @
3 M' N. Q$ ~3 E1 j  .ipa
/ M  w( m5 N$ X/ z+ ~8 y5 K6 W) c  U& _' |
  使用過MacOS的人可能都知道,Mac下的軟體大部分都只有一個.app目錄,裏面包含了程式全部資源和可執行檔。簡單來說,Mac下的軟體就像是Windows下的綠色軟體一樣,解壓後即可使用,不需要安裝,卸載的話也只用刪除程式檔即可(這裏不涉及pkg格式安裝包)。而ipa格式可以視為這種.app軟體的衍生物。 " a6 U; s. H! d- X6 f4 [

7 j. n, x# q0 A/ m! N  ipa檔實質是一個zip壓縮包(不是rar或7z包),包含3個元件: 8 P) Q$ k8 O2 }  u- l# c

+ r/ F: V9 j! R  payload目錄下的.app目錄,這個是軟體的主程序; ; B7 n+ r. }/ {2 H

* }; M% w7 x: v  iTunesArtwork,實質是一個無尾碼名的png圖片,用來在iTunes中顯示圖示;
5 Q: X. _$ O/ E: E1 x/ [" W7 m* G" M+ k- \# t1 |
  iTunesMetadata.plist,記錄購買者資訊、售價等資料。 ; x' b: O& P  w0 G8 C

9 P+ E+ _+ b& }4 Q; P  v  由於zip包不能記錄許可權和所有者等資訊,所以蘋果規定了ipa的安裝方式,即全部ipa都會解包安裝在/var/mobile/Applications目錄下,全部檔和目錄的所有者及用戶組均設為mobile(ID為501),主程序(可執行檔)的許可權設為0755(所有人都可以執行,但只有所有者可以修改),可執行檔在plist中定義。全部目錄許可權設為0755,而其他所有檔都設為0644(僅所有者可以修改,其餘人只允許讀取,全部人都不允許執行)。
# F* j: s+ f  [, f+ z
: ?0 o; V- s4 p( b9 B  ipa解包後並非直接放置於Applications目錄下,而是放在一串由隨機碼構成的目錄下,其作用在於,只允許這個軟體運行在一個特定的沙盒(Sandbox)中,不能干擾其他軟體。因此那串隨機碼目錄下,除了ipa本身的三個組件之外,還有三個目錄:
; q. i+ O3 Y8 c4 f+ j7 W$ G1 Z$ }+ x8 a3 L% B8 J( V+ R- c1 N
  Library,一般是用了儲存設置檔等資料; & D' G3 ]  C& b$ R, ?
. Q* M. r! b) R1 b
  Documents,存儲資料,多用了保存存檔; : Q$ c: `7 n2 Z& w

) L, I9 N* T+ W. M  R. u  tmp,暫存檔案夾。 # B  R; d( O0 R  }! N" V( }) j
/ f1 H' @! ^+ v! |* U
  由於這個軟體只能在這個特定的目錄下運行(當然了,部分程式會調用系統的通訊錄、相機等元件,但仍然是受限制的),從而保證了整個系統的安全性和穩定性。 9 H$ k& z& i# m! ]
( ~$ `% |% S. ?$ ~7 i6 k
  由於Unix系統下對許可權的規定相當嚴格,所以“越權”的行為是絕對不允許的。舉個例子,mobile用戶無權刪除root所有的檔,因為root的許可權高於mobile。所以有些人在修改ipa安裝後的檔時,比如進行漢化或者修改存檔,發現不能刪除乾淨軟體,或不能保存,這是因為刪除時不能刪除root所有的檔,程式本身也無法對root所有的存檔檔進行寫入操作。
. \0 S9 y8 j2 k4 Y* I+ d8 ^9 {& B2 b6 z* D  P
  .pxl " N' t# M5 y  g2 \2 n, h/ u0 r
; B2 c- @7 L# h( [3 j+ I6 m- D
  pxl格式在1.x時代是iPhone平臺上唯一的安裝格式,原因是那時候還沒有Cydia這樣的APT管理軟體,蘋果官方也沒有推出AppStore。由於在1.x時代積累了大量人氣,在接下來的AppStore時代中,pxl格式以其相對簡易的打包和安裝方式,仍然佔據了很大一部分市場。但隨著Installer的停止開發,iBrickr等軟體停止更新,目前唯一還在堅持使用pxl格式的就只剩下91一家了。 9 y' o2 i+ L! Z2 c2 n( d% h2 C% W

& `% a" A$ M' J) |8 v  pxl安裝包通常包含3個組件:
$ k, U2 Y- p0 [, N5 b4 ^' j
* e0 i% z# y% H% A5 R  PxlPkg.plist記錄程式檔的存放位置、所有者、許可權以及軟體標識等資訊; 4 b6 e: S, z9 D4 c8 q/ A8 H/ t
# O1 w+ w7 y4 K- @
  PkgScript文件夾,存放安裝和卸載腳本;
/ h+ z8 T1 N/ C' ?: E5 \5 t0 `* u3 f- z  s: n
  程式檔。
! \9 w+ m1 c) [1 D# p' \0 h6 N  E
- q% U  e6 }- K6 P- D: S  PxlPkg.plist檔的開頭通常是CFBundleIdentifier,記錄著軟體的唯一標識,以和其他軟體進行區分。RDPxlPackageVersion則記錄軟體版本。RDPxlPackageFireware被用來記錄可以運行的固件版本。其餘還有一些鍵值是用來記錄軟體介紹、網址、作者資訊等資料。
& f4 H8 B7 w! h4 `1 [
. d% {& v! C  K. K% c  除了軟體標識、軟體版本和可用固件版本以外,PxlPkg.plist的核心部分就是RDPxlPackageFiles和RDPxlPackagePostflight兩項。RDPxlPackageFiles記錄了程式檔應該被複製到的路徑,並提供了是否覆蓋的參數:overwrite。而RDPxlPackagePostflight則記錄程式檔應該被賦予的所有者和許可權,分別以chown和chmod命令來實現。另外,對於含有安裝/卸載腳本的pxl來說,還會以sh命令執行相應的腳本Postflight和Preremove。
7 \7 K( D* |1 a. T5 O; E3 a/ y) K8 f, O: x( Q/ u
  PkgScript通常包含兩個檔,安裝後執行的腳本Postflight和卸載前執行的腳本Preremove,這兩個腳本就是標準的LinuxShellScript,以sh命令執行。 5 p) J" j5 B5 T3 h3 X3 I
4 E& B, l. D1 }: Y1 T9 G
  安裝包的特點: , b3 i9 @, f6 e- j: D/ J6 p
1 w6 X  E8 r& c( y* p
  .deb
7 V# `. B3 L9 ~2 ?( N
7 [; [# m) O( G  豐富的資源:Cydia上本身就不少,更何況任何格式的安裝包都可以轉換為deb。 6 m/ j3 s9 s# X6 v8 ?5 A
3 ]+ e' t9 n8 }: a
  相對方便的線上購買模式:CydiaStore,不過儘管沒有AppStore的5台設備的限制,但對國內用戶來說,付款方式比較困難。 9 J4 m: o5 ^5 O! C- W9 }

$ T" r* j! ]6 H/ Y% }, U  破解難度較大,沒有使用AppStore的驗證方式,所以必須將驗證和防破解措施加入程式裏面,這樣就比較難破解,對軟體發展者來說是個好事。 ! s9 G7 E. P0 x2 C- [7 A, d6 x4 q3 i
4 {6 T0 h+ z; i/ Z1 b
  完善的Unix檔系統支援:無需以命令設置檔的許可權、所有者和用戶組(當然也可以以腳本來設置)
* {! D; k# m- o
# j3 \, Q3 T  x7 f, ?7 l1 A  完善的腳本支援:5個腳本依照安裝和卸載的先後順序執行,可以提供更多選擇。比如備份還原操作,可以在preinst中備份檔案,而在postrm中還原檔 3 X% i* g, s) ~& ?

/ d8 K* Q4 r8 z: m. E  嚴格的依賴關係:deb遵循嚴格的依賴關係(於Depends和Pre-Depends指定),可以確保軟體運行所必需的元件。線上安裝的時候會自動安裝所依賴的套裝軟體。卸載時也很重要,比如套裝軟體A依賴於B,當卸載B的時候會提示A依賴於B,卸載掉B的話會導致A不能用,這樣可以確保系統的完整性和穩定性。
' T* B: q1 e- O! W0 K. G
" P: {1 t1 p2 z6 p$ r6 n  Conflicts、Replaces、Provides等鍵值的存在可以實現衝突提示或替換其他套裝軟體。
) }. g  h0 e/ Z2 ~# L* M& B) \# c
0 y( z7 v& _7 s, I4 T1 i  完全許可權:由於deb必須以最高許可權root的身份運行,deb可以對系統任何位置進行操作,換句話說,deb擁有對整個系統的完全控制,因此deb安裝包軟體可以實現很多ipa不能實現的功能。
2 S% F* A5 @1 g) O3 t! M5 J5 Y" ~* x( o+ }, U7 N( l0 g3 b6 D
  相對簡單的獲取方式(線上或離線)和安裝方式,也不用擔心在不同機器上同步會刪掉程式的問題。 $ h- H, J  X! n
  W# v" s' {% E, d" w  m3 ]
  安裝相對簡單:其實無論是哪種安裝包,安裝方法都不算很複雜,只不過deb稍微複雜一些。
+ C: ~( S( `# q4 ?0 b6 P2 P
' \" G. y, W8 D6 _  deb的安裝方法大體有5種: 5 L7 F6 |, _; D* E+ ?. T

9 i  O6 G; `! d/ o* P  Cydia或同類APT管理軟體線上安裝,這個是最佳的安裝方式,因為通常無需考慮依賴關係,但缺點是對網路的要求比較高;
8 R+ U. t' J9 j. u- }) h8 Y0 K) a) q# ~! C0 L4 J& T" @! X
  命令行中以dpkg-iXXX.deb的形式安裝,好處是可以以通配符一次性安裝多個deb,而且也可以直接看到腳本的運行狀況和安裝成功/失敗的提示資訊,缺點是需要命令行軟體的支援,如Putty/WinSCP的控制臺/iSSH/MobileTerminal,很多人也不熟悉命令行下的操作。另外,安裝完後會不顯示圖示;
; q, X2 q' F% h3 d+ ~
% L/ c* K. o5 g7 E7 k+ ?( E, T  放置於AutoInstall目錄重啟安裝。該方法實際是Cydia提供的一個啟動腳本,在每次系統啟動時以dpkg命令安裝AutoInstall目錄下的deb,好處是不需要命令行操作,缺點是必須要重啟,有些甚至要重啟兩次,也會出現不顯示圖示的情況; 6 w  {, O! v3 F- I# y
6 H0 Z7 {% q0 P9 n: J
  利用iFile安裝,好處是圖形化操作,桌面會顯示圖示,缺點是不能一次安裝多個deb; 4 Y% B* {2 P0 b, _; I

! s* Z. \2 q8 D5 @- {8 y  用CyderII等軟體來安裝,其原理是類比一個APT軟體管理器來下載相應的deb檔並傳到設備,然後以前面幾種方式來安裝。 % y. s: |1 r/ f$ k
8 O* J, {3 b2 e. |
  總體來說,deb的安裝都是依賴於dpkg-i命令來安裝,只不過有些是在命令行下輸入命令,有些是提供了圖形介面。但除了Cydia安裝一種方式之外,其餘幾種安裝方式都存在一些共有的問題:
# t% v4 q" U, S% \
+ k" d" E9 a4 a  不會自行搜索依賴關係,必須手動提供所依賴的deb;
, I3 X+ L! z0 q; \- }/ F2 u7 w4 R8 G  A. w- Q2 E$ y: t
  Cydia會讀取安裝腳本裏的一些特殊語句,比如僅在全新安裝時執行而不在升級時執行,安裝完成後重啟SpringBoard或設備等等。
7 l6 b# ]( S# Q# B% O2 e3 ^: S$ l$ |2 \: Y& M# s
  當然了,deb軟體的卸載也比較簡單,有兩種方式: + w, {. k0 H+ {

! m5 L7 |1 D5 d; M  Cydia裏卸載,優點是卸載過程和提示資訊很詳細,全圖形介面操作,同時也提供了重新安裝的選項; 1 M6 m% {) Z1 M# i8 }) @. r# C
, m' Q& W  j6 ?+ i+ L/ W: h
  以dpkg-rPackage_ID命令或dpkg-PPackage_ID命令來卸載(詳情後面會說);
0 C$ f3 R- I3 j' W$ s6 I
3 {6 s) y  L# z/ k* y9 f. h  B  Cydelete來卸載,優點是可以直接在桌面上卸載有圖示的軟體,但對那些沒有圖示的無能為力。
" A3 y) t8 ?$ L! Q. C
0 x9 D! ]2 }/ n  其實,不管是安裝還是刪除,都可以才要全手動的方法。即,解包deb之後,自己將檔放到相應位置,然後設置許可權等並執行腳本。但這樣有必要麼?
8 a+ B% t8 v) a! U1 C$ n
2 |4 N. U$ o- a3 a  deb的安裝過程如下: , u# w7 d3 ?) _7 u. V' N
4 j, Z. j$ i3 o6 D
  讀取資料庫並鎖定,避免同時有兩個安裝程式在運行
5 ~0 X- D. E( z6 \# t. W0 d3 w# Q: f( N. a2 I7 U% [3 u( h0 P
  讀取control中的Package(套裝軟體標識)和版本資訊,並搜索資料庫,若已存在,則卸載之後再安裝; " C/ J& j" }3 D) s3 ^5 p' Z" f
: d7 ?' Q! y  N0 q
  檢查Depends,Pre-Depends,Conflicts和Replaces,如果檢測到已存在Conflicts中存在的軟體,則報錯並終止安裝。如未找到Pre-Depends指定的軟體,則報錯並終止安裝。如找到Replaces中指定的軟體,則卸載之; 4 e  T+ r. ~; E, }3 o
5 G3 Y: n6 B' z+ X
  將資料寫入/var/lib/dpkg/status檔中; : f* j& V* D# O) _2 j/ g

9 l8 Q+ F( A4 I$ T  e  執行preinst腳本(如果有);
# r" X- Q8 X/ M) n3 R
0 }4 ^0 r. N: }" {  解包data.tar.gz,將檔放置於相應位置,並將檔列表寫入/var/lib/dpkg/info/XXX.list; , S* K+ D+ w/ }. i

* r( W7 s4 m; V  運行postinst和extrainst_腳本(如果有);
7 M$ i  R, }: a7 M
6 D/ K7 a- A9 e* ]. Q$ ~( G1 H4 A( |% i; ~  如果之前的安裝都沒有出錯,即安裝成功,那麼會在status檔中寫入Status:installokinstalled資訊,否則會寫入其他狀態資料,比如Unpacked(未解包資料)、Failed-config(腳本未能成功執行)、Half-installed(安裝失敗等); & Z3 H) }! J, u7 H3 Z
, a  ~- n: c) O8 i3 q* H& K
  重新載入資料庫並解除鎖定。 ) @( N% c* L$ A; r3 e

. i' J7 S" K. ^0 r- a" d" W( X0 Q' H4 z  deb的卸載過程如下: ) Y( U( d( e$ Z

  p  D& q! g2 k8 Y  讀取資料庫並鎖定;
' L$ _9 Z) E9 h2 P9 p* g! Q9 j% d
9 u5 ]5 g6 O# D) ^0 f  c  根據軟體標識搜尋資料庫; % ?" q, g! b) K2 @
. Q/ _/ w7 m, G' y8 e# H3 ?1 g! c
  檢查是否有軟體依賴於待卸載的軟體,如果有則提示,並中斷卸載;
  H8 t! E  |; e* Q. f
! d* O) ]# C* i/ A& m8 `" t  執行prerm腳本(如果有);
5 k+ O7 M+ Z7 i" W2 u
$ i6 C0 p4 a! ?  B6 Z/ r; H  讀取/var/lib/dpkg/info/XXX.list檔,並刪除list檔中記錄的全部檔和非空檔夾;
4 q* ~/ X* c. n6 Q- q$ l# `0 }8 j  n  U
  運行postrm腳本; 6 F2 n5 [% t  ^% v" e0 b" G

' p6 P* M9 r3 A  如果卸載命令是dpkg-r,則保留status中的記錄並改為Status:Notinstalled;如果卸載命令是dpkg-P,則刪除全部資料;
' ^5 g1 `! i/ E$ z2 _/ Y. ?; |0 B; w: f7 t6 e
  如果卸載過程沒有錯誤的話,重新讀取資料庫並解除鎖定。 ) @* b& Z9 z1 A5 ?+ P/ e. D$ u

( y  w4 R3 f0 w" E  由於deb安裝的軟體可能會在運行時在/var/mobile/Documents下放置存檔檔,或在/var/mobile/Library/Preferences下放置設置檔,而這些檔並沒有記錄在list檔裏,所以卸載的時候不會被刪除。
& L, o9 V6 n# I# X6 _% _  c7 d. A
, n) ~4 Z1 W& v6 Q; o, T7 q$ e7 q. q  .ipa : q: Y9 W. A' _7 N. E8 B2 ]

& o& ^$ m3 J8 R! b* @$ U  豐富的資源:AppStore上那麼多資源,apptrackr等網站也提供了很多破解版。
4 s( i; L8 q  W" f5 w) ]3 P# O: d7 v, L+ @5 `2 M: z
  完善的更新、後期服務。
5 e9 I3 v& o6 ]5 Y7 }* q) v8 D+ E( I( T* h( i8 q6 z
  只能使用最小許可權,保障安全性。 4 }( k# h8 X! u3 u: ^9 j" }
0 E3 }/ b5 H6 l
  不涉及系統級的操作,所以一般不容易造成死機或白蘋果(有些是因為資源消耗太大所以卡死)。
# Q  x1 V% n" r0 O: N5 f1 U! B
9 ?' J0 M7 J1 V; T/ |  便捷的安裝方式,無論是直接在設備上用AppStore安裝,還是用iTunes來同步,抑或是用Installous和91這類第三方軟體來安裝,都是很方便快速的安裝方式。 6 g: R7 x5 x# u' M% ^" M1 O

8 H& ?& j% c1 s  超級簡單的卸載方式:還有什麼比只需要點一個X就能卸載更簡單呢? % p0 B* B5 E0 r( \0 S% B

; D8 y6 r. ?3 Y, h2 Y2 r: A  完全刪除,不會留下任何垃圾檔(如存檔、設置檔等) 1 b9 |( Q7 q, P3 h

3 d' X, r; W( [% V  總體來說破解還是比較容易的,但現在越來越多軟體加入了防破解措施。 ' q. K$ f6 [# c& p

% l3 [: z7 ~2 [5 |4 Z: J2 w6 `  之前提到過,ipa軟體是被安裝在一個類似于沙盒的環境中,除了能對/var/mobile/Media/DCIM目錄(拍照、截圖存放目錄)進行操作,或是調用壁紙、鈴聲、相機等元件,不能對系統進行任何干涉,這樣在最大程度上保證了系統的穩定運行,也不會干擾其他軟體的正常使用。但問題是,由於ipa軟體的許可權很低,想要對系統進行修改,尤其是應用補丁時,ipa就無能為力了。
, [" u/ A4 h6 c  u" e
6 b8 w+ A: x+ {4 J4 A  A/ P: i  ipa軟體官方的安裝方式有兩種,一是在AppStore這個軟體中下載安裝,二是用iTunes同步。 + X# H& o1 a* r1 A' i

; e2 ?; F8 N3 w1 o; _( P6 p4 K' a  前者的問題主要是網路問題,網速不好很容易安裝失敗;GPRS之類的上網安裝又很耗流量。後者的問題主要是不能在不同系統下使用(包含不同電腦和同一部電腦上的不同系統),在其他系統上同步會抹掉原有的軟體。當然了,iTunes每次同步時間比較長也是經常被人詬病的。尤其是當安裝軟體比較多的時候,每次同步之前的備份需要很長很長時間,這個很噁心(不過可以直接X掉備份操作)。 ; G; U+ _6 c! H
% x, A) C5 {5 ^! p! r* h9 z
  由於以上兩種方式存在一些問題,所以很多人會選擇使用Installous或91來安裝ipa,這也確實是個不錯的選擇。
. P9 k, P: s! ~9 A. f  r& C, m7 }7 K4 ~' g* P1 Y
  Installous一般沒什麼問題,但對部分驗證比較嚴格的ipa處理不是很好。雖然Installous基本能代替iTunes,但畢竟不完全等同。最典型的就是Installous安裝Microsoft官方出的LiveMessenger(正版,非破解版)時不能運行。實際上Installous對很多未破解的正版軟體支援不是很好。
4 g& W7 @  C5 N# ?1 [8 a2 x- K, M/ a, n6 m9 f, y
  至於91,經常被人批評。91雖然可以安裝ipa,但除了Installous都有的正版軟體的支援問題外,由於91的安裝機制有缺陷,軟體不能實現多語言,只會使用英文介面,而忽略掉zh_CN.lproj,zh_TW.lproj這些語言包。這對那些用希望使用漢化版的人來說實在是一個悲劇。所以通常是要避免使用91來安裝ipa的。 % h5 \! n. h: B8 }. O

. S: b: O3 i6 W+ ]* l  至於卸載,三種方法: 6 R6 O* K$ n1 z/ D
' M0 i& z2 o4 W. L4 K- A
  設備上按住圖示直到開始晃動,點擊圖示左上角的X即可卸載; - G/ l' c6 i  G! |" I0 }

& E& f. d  J  @3 B  m4 O! H  於iTunes中取消選中,然後同步 + I# T0 ~% o; i3 a; ~7 w/ t

( w/ g, V% v9 W  找到/var/mobile/Applications下的相應目錄,強行刪除整個檔夾。這個在前面兩種方法無法使用是可以採用(有時候卸載體積太大的軟體,比如超過1G,因為刪除過程太長導致失去回應並刪除失敗。),但這種方法會造成系統的不穩定。除非是確實碰到了問題,否則強烈建議不要使用。
9 c! y  @) g5 |" v) a" ?. L9 t
: d& S# }) A% m8 [2 G. {  .pxl 6 v! p: q$ N' g2 r# b% {& ^# B: v
% C/ L2 r  k2 S) [
  嚴格來說,pxl格式的資源並不算多,但也不少。現在使用pxl格式的絕大多數都是91的用戶。
! A& x8 D* s! d# {: d* ?, U# x9 {; O$ O5 Y$ m. R7 R: Z: }: }2 M6 [+ L3 Y: a
  從時效性上來說,很多軟體(主要是AppStore上的)一被人破解就馬上會被人轉成pxl格式,這樣來說,pxl格式的更新還是不錯的。
; v' D* t" P/ v  H( x2 e, s1 W4 m- F7 u& @, b
  由於91手機助手沒有iTunes同步會抹掉軟體的問題,加上其他一些比較方便的功能,使得很多新手都是從91開始瞭解並熟悉iPhone/iPodTouch的使用。其結果是,pxl格式依賴于91而生存。 ( J( t3 o# W# A+ D- G0 }' j: u

, z+ j" {) T& w! H- u6 P2 |  pxl格式的流行也不是歷史的遺物,而是符合市場規律的需求。91助手的便捷的軟體管理方式(尤其是支援WiFi管理),加上免費的旗號,使得pxl格式在新手中很受歡迎。
% T" ], q. Q6 s6 L. [3 v' y. G9 {9 |' l4 ?( P+ Y3 g4 W$ \/ T
  實際上,pxl格式和deb格式具有的功能完全一樣。雖然pxl不能記錄檔的許可權等資料,但完全可以用腳本來彌補。即是說,pxl格式和deb格式其實是不相伯仲的。而且因為pxl格式的製作並不需要比較少見的Unix環境,尤其是Debian環境,其本身是優於deb格式的。
! \% H( [- j, ^# T( U
8 B! d5 \: P. l3 j: K  U8 k  但為什麼現在很多人都經常在說不要使用pxl呢?我個人認為,原因主要有以下幾個:
2 g( D$ ?; c2 A% n/ R5 o
+ k. _4 t8 \  j  資源的局限性:除了91公司自己開發的幾個軟體之外,其餘所有軟體都是從deb和ipa轉換而來。如果原版軟體沒破解,pxl無能為力(比如Microsoft官方出的LiveMessenger和Cydia上一眾沒被破解的軟體); 8 L# @+ |  s4 O  S* k5 h% B8 b
- ~$ U) C$ y( h0 }: [3 X9 k4 U
  資源時效性:跟上面一點相似,pxl格式大部分是從其他格式轉換而來,跟原版相比總是會慢一些,尤其是當無法破解時,pxl根本就出不來; % i& H6 v' A. `4 [  O6 C

' M* x  ~* I+ X  打包人水準有限:現在很多人都是直接用91助手來打包pxl。對大部分只有一個XXX.app目錄的程式來說一般不會有問題,但若遇見那些對檔許可權等資料有嚴格要求的軟體(比如可執行檔沒有可執行許可權,或是mobile用戶不能改寫root所有的檔等等),或是需要比較複雜的腳本才能運行的軟體,往往pxl製作者並沒有能力去製作一個完善的pxl出來,這樣也導致了許多安裝使用上的問題;
% c9 Z) N& d+ z
2 {8 K# W  o% D; j3 q" B  安全性:絕大部分人在製作pxl的時候都習慣用chmod-R命令來將整個XXX.app目錄及其中的全部檔和子目錄設為755/775/777許可權,而這種行為會造成一定的安全隱患。關於這些數位的意思請自行搜索相關資料。這裏簡單說明一下。644屬性表示僅有該檔的所有人才可以進行改寫操作,其餘任何人都只能讀取,任何人都不能執行這個檔。755和775是在644的基礎上加入了可執行許可權,755是該檔所在的用戶組的所有人都可以改寫。而777許可權則標識任何人都可以改寫並執行。由於mobile本身是受限帳戶,如果使用777許可權的話,有機會通過這個漏洞來獲取整個系統的控制權。只不過因為iPhone系統相對封閉,也不太有機會造成損失。但採用775和777許可權是不應該的;
$ _& b. ?/ D4 K6 m0 |0 ?, Q& Q) v9 P9 V+ Y; Y
  ipa轉pxl的存檔問題:不少人都有這樣的經歷,在遊戲A存檔之後再進遊戲B,存檔B之後再進A,發現A的存檔已經不在了。原因在於,ipa轉換成的pxl軟體,存檔全部是放在/var/mobile/Documents目錄下,而正好有兩個軟體的存檔檔案名相同(最常見的就是data.sav或save.data),互相改寫之後導致不能讀取。這種問題也發生在ipa轉deb上,而且無法解決; , o8 N4 ?4 J' t3 G! r! K

/ H" g! K5 [9 l: g$ s$ W  無法完整刪除:卸載pxl格式時,不會刪除存檔檔、配置檔、暫存檔案等資料,長期使用會導致可用空間減少; % |  E! _2 Y2 |: f4 L, H
  h6 N% D. j$ q8 [: Z' V
  在部分機型上存在相容問題:有些機器越獄後並沒有將系統分區中的/Applications目錄轉移到/var/stash的用戶分區中。由於系統分區的可用空間很少(默認500MB,通常可用空間不超過50MB),強行往/Applications裏安裝會導致剩餘空間消耗殆盡或安裝失敗。 % r5 g% y8 ^4 _% C. ^. [( }

+ R3 o% `, C* D  G2 J  由此可以看出,pxl格式的問題更多不是pxl本身的問題,而是打包者的問題以及安裝方式的缺陷所致。 * i! N. k; y  d9 ?2 {

+ V# H( J, R* n) J5 H; T  另外要指出的是,pxl最大的提供者,91,經常是轉載他人發佈的軟體(包括網友自己購買破解的,或Cydia上直接下載的)然後當作自己發佈的軟體,對版權問題完全不在意,這樣也引起了很多人,尤其是原發佈者的反感。這種赤裸裸的剽竊行為實在是令人不恥。正因為這樣,很多人是因為不爽91而不爽pxl,這實在是冤枉pxl格式本身了。 / ]+ X7 y5 W% b# a
8 `) Q. `8 q; ]4 k8 U+ i
  總結: 6 F' \% P9 }4 P1 ?4 n

# H& c  x' ]5 `! X" s! W  一般的軟體還是儘量用ipa格式,不要使用ipa轉換成的deb或pxl格式,這樣可以確保相容性和安全性。而在系統級的程式(如SBSettings和輸入法),ipa是絕無能力的,那麼最好的選擇還是deb。pxl作為快被淘汰的格式,還是果斷的放棄比較好。 5 a. M4 r) ^/ L# Z& ^- p7 |

: o; i% r; t6 Z. q) }+ q  至於ipa和deb的安裝方式,ipa的安裝首選iTunes同步和AppStore線上安裝,次選Installous,以保證最佳相容性。deb的安裝首選Cydia線上安裝,次選除91外的其他任何安裝方式。 & w. U# {) s. X3 f" K4 r# P
- b3 [* \/ R+ _) o3 ?
  任何情況下都不推薦用91來安裝ipa和deb,因為91的安裝機制並不完善,很容易出問題。
0 L3 S5 C1 ?. Y6 @1 F( N- Z) k& L
2 l5 @1 w( ?; W7 C- O1 x3 Q! D
- e- C* _' [) H( h, q3 v6 q7 Q本文是原樣轉過來的,甚至字體以及顏色都沒有更改。主要是為了方便機友查閱,也好進行更進一步的操作。感謝威鋒網,感謝作者autopear。
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 23-11-2024 02:03 , Processed in 0.314635 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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