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

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

[複製鏈接]
發表於 12-9-2010 21:46:02 | 顯示全部樓層 |閱讀模式
作者autopear。
+ {3 J" j. g' D
4 D- E( R5 `3 }) _$ z' q% _前言:
' B3 z- y, n- t" D! W8 A/ m6 g  O+ x
  目前iOS平臺上常見的安裝包有三種,deb、ipa和pxl。 ( _5 x' h2 i6 t+ @* W: r; ^

/ O1 g2 d3 \+ h' S  其中deb格式是Debian系統(包含Debian和Ubuntu)專屬安裝包格式,配合APT軟體管理系統,成為了當前在Linux下非常流行的一種安裝包。進入2.x時代之後有Cydia作者JayFreeman(saurik)移植到iPhone平臺上,一起的還有APT軟體管理系統。
% d+ O2 a$ h& s3 A4 _! e6 T. g/ Y" O4 Q; i% x
  而ipa格式則是蘋果在iOS平臺上推出的專屬軟體安裝包,在2.0固件開始才正式使用,是目前iPhone/iPodTouch/iPad平臺上唯一的官方安裝包。
, F0 p7 W, _& V! Y  K/ |9 ~: V+ c' O
  而pxl格式則起源於Mac系統上的pkg安裝包,被廣泛應用於1.x固件時代,曾經是iPhone平臺上唯一的軟體安裝包,現在仍在被91等軟體所使用。 2 I$ U2 p4 K0 G7 G6 u

+ e7 n5 i+ n: f( g8 L/ A/ V; S  安裝包格式:
0 o" b7 M5 S$ }: n) b* k8 c! c, |- W/ }! X
  .deb & q1 K" v* T1 ?+ j: |  y

! a1 }0 z" i. |  r4 b, T0 }2 H  deb是Unix系統(其實主要是Linux)下的安裝包,基於tar包,因此本身會記錄檔的許可權(讀/寫/可執行)以及所有者/用戶組。 - E) f& n8 \( C; I; t$ n$ `
% N! ?  M' P. m+ z9 }) g
  由於Unix類系統對許可權、所有者、組的嚴格要求,而deb格式安裝包又經常會涉及到系統比較底層的操作,所以許可權等的設置尤其重要。 $ H: t" }! c1 e* @7 Z
  E* ]; v3 O+ v  K2 L$ @
  deb包本身有三部分組成:
/ D( f! d# c7 w, Q7 l0 l' @1 ?- x; u. [0 v% F9 v
  資料包,包含實際安裝的程式資料,檔案名為data.tar.XXX; / l! u- L* ?9 R
. {1 s4 J4 c$ W( \# ~9 _7 E
  安裝資訊及控制腳本包,包含deb的安裝說明,標識,腳本等,檔案名為control.tar.gz; - z; U: F* f+ K9 R, D
2 W2 c: r* V! |0 U( n
  最後一個是deb檔的一些二進位資料,包括檔頭等資訊,一般看不到,在某些軟體中打開可以看到。
0 Q( S- A$ c  T0 e
3 r$ ~  G1 m8 m- m) U  deb本身可以使用不同的壓縮方式。tar格式並不是一種壓縮格式,而是直接把分散的檔和目錄集合在一起,並記錄其許可權等資料資訊。之前提到過的data.tar.XXX,這裏XXX就是經過壓縮後的尾碼名。deb默認使用的壓縮格式為gzip格式,所以最常見的就是data.tar.gz。常有的壓縮格式還有bzip2和lzma,其中lzma壓縮率最高,但壓縮需要的CPU資源和時間都比較長。
" y2 g0 C" _9 S# e
" K2 m7 r6 I5 b! r  data.tar.gz包含的是實際安裝的程式資料,而在安裝過程中,該包裏的資料會被直接解壓到根目錄(即/),因此在打包之前需要根據檔所在位置設置好相應的檔/目錄樹。 7 j$ G6 w. ]2 B' d# s( Y
7 U: t$ t" b6 u; H
  而control.tar.gz則包含了一個deb安裝的時候所需要的控制資訊。一般有5個檔:
  y% B& Q) x) V1 {) @
7 Z7 A! C; g9 x+ i  control,用了記錄軟體標識,版本號,平臺,依賴資訊等資料; ! d* N/ c/ x6 Y. X; F9 ^

- E% ^, E& D2 o) ?2 d; J  preinst,在解包data.tar.gz前運行的腳本; & }% {6 J2 Z9 {1 M
& N! y( |9 V9 ~& ~. _5 `/ v
  postinst,在解包資料後運行的腳本;
4 K- r, f$ R* t7 c$ W$ Q
, e( \! M- ?/ M8 {  prerm,卸載時,在刪除檔之前運行的腳本;
- O( q! H" K8 P4 A  D
# A, \) P$ Q( l" j, y) V3 k) ?  postrm,在刪除檔之後運行的腳本;
/ a( x7 i8 N4 i
* Y/ |0 {0 s# e2 D  在Cydia系統中,Cydia的作者Saurik另外添加了一個腳本,extrainst_,作用與postinst類似。
- y; l* d, Q( W, ?( r  B; }1 S9 d7 b, G5 b4 A* {0 k
  .ipa
# O  J% l8 K" y2 `
* \1 f( w' G  r- [4 R  使用過MacOS的人可能都知道,Mac下的軟體大部分都只有一個.app目錄,裏面包含了程式全部資源和可執行檔。簡單來說,Mac下的軟體就像是Windows下的綠色軟體一樣,解壓後即可使用,不需要安裝,卸載的話也只用刪除程式檔即可(這裏不涉及pkg格式安裝包)。而ipa格式可以視為這種.app軟體的衍生物。
6 K" B7 k" I3 M# y/ k6 [- U6 V
2 H% G  b3 x; \) F  ipa檔實質是一個zip壓縮包(不是rar或7z包),包含3個元件:
( C6 ?! B$ ?; z! T/ O6 H* j# }" d$ K+ H6 G4 M2 f+ F1 h
  payload目錄下的.app目錄,這個是軟體的主程序;
7 r0 ?# ]* L# h7 }
. i# D6 N3 u' i9 c; X7 j  iTunesArtwork,實質是一個無尾碼名的png圖片,用來在iTunes中顯示圖示;
2 H0 y- o- E0 W& M8 ?3 {
8 q4 A& Q- g. ?7 G; S$ |  iTunesMetadata.plist,記錄購買者資訊、售價等資料。
  C. ~, q# K5 b5 [+ l5 T! J# X& H! L: X" J, t2 A, u1 A; a
  由於zip包不能記錄許可權和所有者等資訊,所以蘋果規定了ipa的安裝方式,即全部ipa都會解包安裝在/var/mobile/Applications目錄下,全部檔和目錄的所有者及用戶組均設為mobile(ID為501),主程序(可執行檔)的許可權設為0755(所有人都可以執行,但只有所有者可以修改),可執行檔在plist中定義。全部目錄許可權設為0755,而其他所有檔都設為0644(僅所有者可以修改,其餘人只允許讀取,全部人都不允許執行)。 ; f* S1 I# C! i( U6 r

. L6 J6 F# q9 d! l! f  ipa解包後並非直接放置於Applications目錄下,而是放在一串由隨機碼構成的目錄下,其作用在於,只允許這個軟體運行在一個特定的沙盒(Sandbox)中,不能干擾其他軟體。因此那串隨機碼目錄下,除了ipa本身的三個組件之外,還有三個目錄:
; b9 X5 t. x' f1 @, l& {8 X/ k- t: O) d
  Library,一般是用了儲存設置檔等資料;
4 K/ F0 Z! H7 t3 i
+ @+ a. d7 L; [# h0 O& ?  Documents,存儲資料,多用了保存存檔;
' b; e( q% }. C! `9 h& ^4 K
7 j& B' W! O0 T3 R4 w3 z- I" W" m  tmp,暫存檔案夾。
* {+ X+ I( ]9 |$ C0 A& S
6 ~& j# t: x' g7 f  由於這個軟體只能在這個特定的目錄下運行(當然了,部分程式會調用系統的通訊錄、相機等元件,但仍然是受限制的),從而保證了整個系統的安全性和穩定性。 2 Q1 N% o0 P. f6 P9 r% E" w
' _5 u; Z7 T  O/ n3 g- O2 I0 I
  由於Unix系統下對許可權的規定相當嚴格,所以“越權”的行為是絕對不允許的。舉個例子,mobile用戶無權刪除root所有的檔,因為root的許可權高於mobile。所以有些人在修改ipa安裝後的檔時,比如進行漢化或者修改存檔,發現不能刪除乾淨軟體,或不能保存,這是因為刪除時不能刪除root所有的檔,程式本身也無法對root所有的存檔檔進行寫入操作。 * t2 g& _: s" O) L

# r) |) B5 o. y4 b% X0 \  .pxl
' K0 u) }& X* ]$ m" T$ {+ Z) W! w+ p/ \+ \% z6 n; [, }6 a( D
  pxl格式在1.x時代是iPhone平臺上唯一的安裝格式,原因是那時候還沒有Cydia這樣的APT管理軟體,蘋果官方也沒有推出AppStore。由於在1.x時代積累了大量人氣,在接下來的AppStore時代中,pxl格式以其相對簡易的打包和安裝方式,仍然佔據了很大一部分市場。但隨著Installer的停止開發,iBrickr等軟體停止更新,目前唯一還在堅持使用pxl格式的就只剩下91一家了。 + h4 w4 v- B1 Q, c* V3 I" c6 _3 D

. U+ L% ~3 \  B3 S  pxl安裝包通常包含3個組件: : i/ v  N) L' ?2 h

/ D: |; S6 [2 V  PxlPkg.plist記錄程式檔的存放位置、所有者、許可權以及軟體標識等資訊;
8 c% V+ t$ b( z& T* q* h) Q6 f6 @, S
0 }/ j6 b( g5 t$ A) M  PkgScript文件夾,存放安裝和卸載腳本;
2 n7 W, B- \' z0 b$ f1 F$ u3 ?, r0 h( q
  程式檔。
# y; p3 U  Y5 \3 {) U& A$ [- J8 i, K; R/ n) ]
  PxlPkg.plist檔的開頭通常是CFBundleIdentifier,記錄著軟體的唯一標識,以和其他軟體進行區分。RDPxlPackageVersion則記錄軟體版本。RDPxlPackageFireware被用來記錄可以運行的固件版本。其餘還有一些鍵值是用來記錄軟體介紹、網址、作者資訊等資料。 # C5 Y  `# W6 b
; P/ p) Q4 T& F- F$ j* x9 {
  除了軟體標識、軟體版本和可用固件版本以外,PxlPkg.plist的核心部分就是RDPxlPackageFiles和RDPxlPackagePostflight兩項。RDPxlPackageFiles記錄了程式檔應該被複製到的路徑,並提供了是否覆蓋的參數:overwrite。而RDPxlPackagePostflight則記錄程式檔應該被賦予的所有者和許可權,分別以chown和chmod命令來實現。另外,對於含有安裝/卸載腳本的pxl來說,還會以sh命令執行相應的腳本Postflight和Preremove。 # n/ q% t: C, O1 o
0 N/ z- {% f0 t% M& V0 Y
  PkgScript通常包含兩個檔,安裝後執行的腳本Postflight和卸載前執行的腳本Preremove,這兩個腳本就是標準的LinuxShellScript,以sh命令執行。
1 V9 l- j- C8 i- d5 R6 R# @9 e8 b" B# H: o, p; I% Z
  安裝包的特點: 9 j9 c1 d/ Y; Y6 k  j
1 V8 R) @' ?0 Z! t+ d) U
  .deb * u/ d7 E% j$ o' w9 _

, p! i$ T9 O3 E2 {  豐富的資源:Cydia上本身就不少,更何況任何格式的安裝包都可以轉換為deb。 * h! X: K+ H2 T& _( ]4 V

/ J" D0 q; i! r2 I( {9 R0 v1 M4 `( @  相對方便的線上購買模式:CydiaStore,不過儘管沒有AppStore的5台設備的限制,但對國內用戶來說,付款方式比較困難。 8 T: ^! O/ j( x
6 f: h$ j- R3 K* U
  破解難度較大,沒有使用AppStore的驗證方式,所以必須將驗證和防破解措施加入程式裏面,這樣就比較難破解,對軟體發展者來說是個好事。
3 R& S! x' D) G, p' q) u) C8 @. R# f4 g5 |1 l8 p. x/ J" \
  完善的Unix檔系統支援:無需以命令設置檔的許可權、所有者和用戶組(當然也可以以腳本來設置)
1 n0 A0 f" e2 P1 E, r" b3 S; t# g  o" K
  完善的腳本支援:5個腳本依照安裝和卸載的先後順序執行,可以提供更多選擇。比如備份還原操作,可以在preinst中備份檔案,而在postrm中還原檔 & Z( K+ @" _% H$ f* S/ K- {

9 z' b/ r2 g* B0 c( A  嚴格的依賴關係:deb遵循嚴格的依賴關係(於Depends和Pre-Depends指定),可以確保軟體運行所必需的元件。線上安裝的時候會自動安裝所依賴的套裝軟體。卸載時也很重要,比如套裝軟體A依賴於B,當卸載B的時候會提示A依賴於B,卸載掉B的話會導致A不能用,這樣可以確保系統的完整性和穩定性。
, N+ f" f, U. y3 W
, A0 o, \4 ]" ?8 ~& f5 P9 P0 b  Conflicts、Replaces、Provides等鍵值的存在可以實現衝突提示或替換其他套裝軟體。
/ w! }, T* I6 \% j% f! E- s6 V
( y9 \( Q% A6 X1 Q# b' ?3 r' ?6 F/ v  完全許可權:由於deb必須以最高許可權root的身份運行,deb可以對系統任何位置進行操作,換句話說,deb擁有對整個系統的完全控制,因此deb安裝包軟體可以實現很多ipa不能實現的功能。
. }3 v. N* h# [5 y+ c6 d; ^& m0 C- M2 m9 \
  相對簡單的獲取方式(線上或離線)和安裝方式,也不用擔心在不同機器上同步會刪掉程式的問題。
* \$ w  [: i9 {6 `8 D1 ~2 `# w0 a, t; ~
  安裝相對簡單:其實無論是哪種安裝包,安裝方法都不算很複雜,只不過deb稍微複雜一些。
4 r2 r" [. N# c2 I# S2 z4 T5 `# B- g# a, [" p. @9 b
  deb的安裝方法大體有5種:
3 v# l0 C  g9 I- Q1 u! t9 N" M1 A' @- Z
  Cydia或同類APT管理軟體線上安裝,這個是最佳的安裝方式,因為通常無需考慮依賴關係,但缺點是對網路的要求比較高;
  |: w; m4 R, N: z6 Z, |8 t
1 N+ _# e" E5 |  命令行中以dpkg-iXXX.deb的形式安裝,好處是可以以通配符一次性安裝多個deb,而且也可以直接看到腳本的運行狀況和安裝成功/失敗的提示資訊,缺點是需要命令行軟體的支援,如Putty/WinSCP的控制臺/iSSH/MobileTerminal,很多人也不熟悉命令行下的操作。另外,安裝完後會不顯示圖示; ! J" A! _2 f, u  H" E6 O

+ [* y" _+ z$ ?$ \  放置於AutoInstall目錄重啟安裝。該方法實際是Cydia提供的一個啟動腳本,在每次系統啟動時以dpkg命令安裝AutoInstall目錄下的deb,好處是不需要命令行操作,缺點是必須要重啟,有些甚至要重啟兩次,也會出現不顯示圖示的情況; 2 m6 Z$ H' }+ A# E
/ c1 V7 L4 @  D7 n7 k
  利用iFile安裝,好處是圖形化操作,桌面會顯示圖示,缺點是不能一次安裝多個deb; : i# ], D! S- T$ L

9 L) w! H0 L3 X6 W  用CyderII等軟體來安裝,其原理是類比一個APT軟體管理器來下載相應的deb檔並傳到設備,然後以前面幾種方式來安裝。 7 B4 u  j. C  {0 z% B1 S

3 Z7 I! B: ?6 K3 P  總體來說,deb的安裝都是依賴於dpkg-i命令來安裝,只不過有些是在命令行下輸入命令,有些是提供了圖形介面。但除了Cydia安裝一種方式之外,其餘幾種安裝方式都存在一些共有的問題:
7 B( [& S5 n: T: E9 G2 T7 ?5 z; k0 B2 k4 A, U, _- Y) l
  不會自行搜索依賴關係,必須手動提供所依賴的deb; ) z3 a) J, E5 E% {" Z! @& D) N
  M" W* x6 V- V/ @
  Cydia會讀取安裝腳本裏的一些特殊語句,比如僅在全新安裝時執行而不在升級時執行,安裝完成後重啟SpringBoard或設備等等。 ( Z  f; L* ?+ _& O
5 C6 E! I* n; ~/ d/ Q
  當然了,deb軟體的卸載也比較簡單,有兩種方式:
( U( R) m  q. ^. d, {* r6 n
7 Z  |$ \/ n7 `2 H0 @( \! A: H  Cydia裏卸載,優點是卸載過程和提示資訊很詳細,全圖形介面操作,同時也提供了重新安裝的選項;
  W4 g$ M- n0 \* }' |0 U' L
1 n8 D! [0 r! r$ q! c  以dpkg-rPackage_ID命令或dpkg-PPackage_ID命令來卸載(詳情後面會說);
1 X5 K0 K, W# ~4 A& Z: r# f' b5 |  l* X; B- l- U3 E
  Cydelete來卸載,優點是可以直接在桌面上卸載有圖示的軟體,但對那些沒有圖示的無能為力。
/ f1 Y* v# t; p2 j  R$ f( V; _6 C* k% k% O" Y, A
  其實,不管是安裝還是刪除,都可以才要全手動的方法。即,解包deb之後,自己將檔放到相應位置,然後設置許可權等並執行腳本。但這樣有必要麼?
( X# z) l) C8 [! P8 h  r' ?7 H5 G. N6 `# `, u6 o
  deb的安裝過程如下: + Z8 ?6 t4 V  {5 [5 C3 ^8 |

5 I# l0 m/ Q/ s) H" Q  讀取資料庫並鎖定,避免同時有兩個安裝程式在運行 9 T3 h4 v& |6 s/ b2 w. B, v; h
' B" q7 X( ?5 U; r: L* _( [6 r
  讀取control中的Package(套裝軟體標識)和版本資訊,並搜索資料庫,若已存在,則卸載之後再安裝; 0 @4 n5 E  w/ u9 C6 f

6 t' Q4 D- \5 M6 q4 v) K  檢查Depends,Pre-Depends,Conflicts和Replaces,如果檢測到已存在Conflicts中存在的軟體,則報錯並終止安裝。如未找到Pre-Depends指定的軟體,則報錯並終止安裝。如找到Replaces中指定的軟體,則卸載之;
4 A. ]& O) k' l8 Z' g5 L" P0 L& y0 Z5 u$ ]) S" \
  將資料寫入/var/lib/dpkg/status檔中;
+ Y, o( _& ?! b& D) P* R. y" {+ I
+ m  h5 C) w, ~; z) [/ d' W/ t' _  執行preinst腳本(如果有); , `8 D5 U" j5 l7 [
2 t0 d' D- V& K* O! U8 Q
  解包data.tar.gz,將檔放置於相應位置,並將檔列表寫入/var/lib/dpkg/info/XXX.list; 1 d& M3 W  e% J2 p6 c; i5 M
8 H3 }9 @/ |1 j& z
  運行postinst和extrainst_腳本(如果有);
8 d0 }, r' s6 \# }6 f
4 Q# A1 X! u- E$ r  如果之前的安裝都沒有出錯,即安裝成功,那麼會在status檔中寫入Status:installokinstalled資訊,否則會寫入其他狀態資料,比如Unpacked(未解包資料)、Failed-config(腳本未能成功執行)、Half-installed(安裝失敗等);
; J4 j7 `; {9 Y! t8 }- j% {+ p: j5 h% P( E6 Q* r
  重新載入資料庫並解除鎖定。
3 R7 ^/ j4 P% g1 k  B9 }0 f
; P1 {( k+ y4 q6 u$ q  deb的卸載過程如下: $ J- t2 `9 P/ d

& w! j6 M: n1 n' J# R0 B7 ~& ]  讀取資料庫並鎖定; * s3 P+ u! B' V- M- E  ^

9 y9 I) b" p( U/ i  e  根據軟體標識搜尋資料庫;
' D/ X' v! i( m2 T  r0 w( u& {# J# ?; O! e+ I
  檢查是否有軟體依賴於待卸載的軟體,如果有則提示,並中斷卸載;
: L2 U1 ^( |+ z  F3 A1 r; k
0 [" }4 p2 K+ M2 {- r# c% U3 `  執行prerm腳本(如果有); + p/ p# o% D) v2 T. L9 a

( |' D3 {  S9 |5 p* r( N  讀取/var/lib/dpkg/info/XXX.list檔,並刪除list檔中記錄的全部檔和非空檔夾;   X2 Z( v# h0 y. a2 m

. u, D7 L+ L* g+ K8 Y! i9 }  p7 e  運行postrm腳本; ' I7 Y4 G% L% D* w

- m2 e& c: N: ?2 a0 h+ ^  如果卸載命令是dpkg-r,則保留status中的記錄並改為Status:Notinstalled;如果卸載命令是dpkg-P,則刪除全部資料; $ c& k. e/ R. \1 _" `* e- G
5 B( y9 X8 P/ _$ r
  如果卸載過程沒有錯誤的話,重新讀取資料庫並解除鎖定。   _' U) [6 [1 Y

3 p* f+ b) m) y  ?' r& {( y0 d  由於deb安裝的軟體可能會在運行時在/var/mobile/Documents下放置存檔檔,或在/var/mobile/Library/Preferences下放置設置檔,而這些檔並沒有記錄在list檔裏,所以卸載的時候不會被刪除。 $ l6 C# D$ {7 s( }

* J$ v$ I8 ^  p( i  .ipa ; h) ^+ L; m* C; c% A
! r6 W) t  j1 W
  豐富的資源:AppStore上那麼多資源,apptrackr等網站也提供了很多破解版。 + H( I/ x; @- B; \

0 x' }2 ~1 E7 b0 v* {: |  完善的更新、後期服務。
7 g: g$ o# x. y4 w2 j
- b- W# j4 b, F+ ~" p! L1 n! |  h9 y; A  只能使用最小許可權,保障安全性。
! g3 L  P0 z3 T5 W" z5 _' [6 e1 G0 b
7 k2 L1 W% p5 [0 |  不涉及系統級的操作,所以一般不容易造成死機或白蘋果(有些是因為資源消耗太大所以卡死)。
& ^1 F+ l- \0 e$ l( g9 T8 p: i4 q5 v7 r
  便捷的安裝方式,無論是直接在設備上用AppStore安裝,還是用iTunes來同步,抑或是用Installous和91這類第三方軟體來安裝,都是很方便快速的安裝方式。
" `# ]# N/ @( s2 Q- k9 P+ j8 f4 V4 c
  超級簡單的卸載方式:還有什麼比只需要點一個X就能卸載更簡單呢?
2 ?& T4 T+ w# u% Y# W5 W& G, c
, i8 i5 f5 F# ~( a# q* H. G$ _* q  完全刪除,不會留下任何垃圾檔(如存檔、設置檔等)
& f0 G( K& j4 A# l& _% A9 `5 C
" u& I/ S* {" Y) w# {  總體來說破解還是比較容易的,但現在越來越多軟體加入了防破解措施。
4 T. _% ^' M1 M, [  W% @
. }& M/ @5 j. w% @$ t$ ]2 F2 o" M- Z  之前提到過,ipa軟體是被安裝在一個類似于沙盒的環境中,除了能對/var/mobile/Media/DCIM目錄(拍照、截圖存放目錄)進行操作,或是調用壁紙、鈴聲、相機等元件,不能對系統進行任何干涉,這樣在最大程度上保證了系統的穩定運行,也不會干擾其他軟體的正常使用。但問題是,由於ipa軟體的許可權很低,想要對系統進行修改,尤其是應用補丁時,ipa就無能為力了。 ' {2 A3 b/ A0 e0 \1 _
& T7 a+ P( o" \' s9 z
  ipa軟體官方的安裝方式有兩種,一是在AppStore這個軟體中下載安裝,二是用iTunes同步。 2 T) b+ H- Z8 _1 _& I9 v
- t1 _4 ?6 o" M8 W% k2 Y$ t0 \
  前者的問題主要是網路問題,網速不好很容易安裝失敗;GPRS之類的上網安裝又很耗流量。後者的問題主要是不能在不同系統下使用(包含不同電腦和同一部電腦上的不同系統),在其他系統上同步會抹掉原有的軟體。當然了,iTunes每次同步時間比較長也是經常被人詬病的。尤其是當安裝軟體比較多的時候,每次同步之前的備份需要很長很長時間,這個很噁心(不過可以直接X掉備份操作)。
* c6 Q8 {! N/ ^( F( f$ O* A7 m  X
. I! v- _" [5 s$ n0 A/ v- K0 s: \  由於以上兩種方式存在一些問題,所以很多人會選擇使用Installous或91來安裝ipa,這也確實是個不錯的選擇。   Y# M0 k1 m* _5 b/ t

: _) J# V4 J/ I, t$ z3 q% \) a" D  Installous一般沒什麼問題,但對部分驗證比較嚴格的ipa處理不是很好。雖然Installous基本能代替iTunes,但畢竟不完全等同。最典型的就是Installous安裝Microsoft官方出的LiveMessenger(正版,非破解版)時不能運行。實際上Installous對很多未破解的正版軟體支援不是很好。
$ G! t% u9 r- g- u) {/ P- `; U+ H4 j( `9 [2 N1 B
  至於91,經常被人批評。91雖然可以安裝ipa,但除了Installous都有的正版軟體的支援問題外,由於91的安裝機制有缺陷,軟體不能實現多語言,只會使用英文介面,而忽略掉zh_CN.lproj,zh_TW.lproj這些語言包。這對那些用希望使用漢化版的人來說實在是一個悲劇。所以通常是要避免使用91來安裝ipa的。 & V; T* a7 p( C( o) I
! F+ q' S2 y$ n
  至於卸載,三種方法: + r! F$ k/ b- c% `/ |# x

& J  e* w" }7 t1 d9 v4 }! y$ X  設備上按住圖示直到開始晃動,點擊圖示左上角的X即可卸載;
- g3 p! O- M; x. J+ N0 |) d; C1 Q. B5 a5 T
  於iTunes中取消選中,然後同步
5 O+ v: {" b$ g2 |8 b
$ H& w  U. @+ a: _" J  找到/var/mobile/Applications下的相應目錄,強行刪除整個檔夾。這個在前面兩種方法無法使用是可以採用(有時候卸載體積太大的軟體,比如超過1G,因為刪除過程太長導致失去回應並刪除失敗。),但這種方法會造成系統的不穩定。除非是確實碰到了問題,否則強烈建議不要使用。
; [, L! Q4 z2 ^% d9 ~/ G) |3 ?# H: _# M1 l/ D0 n" h% `6 x1 G1 {8 h
  .pxl
$ k8 ~4 t. ]" K' B' L- k+ X
# n( {/ ~' \9 t/ d& k  嚴格來說,pxl格式的資源並不算多,但也不少。現在使用pxl格式的絕大多數都是91的用戶。
: M7 j9 I+ U( ?  V, u- u( q4 K3 h' Q! J) {" E2 ^
  從時效性上來說,很多軟體(主要是AppStore上的)一被人破解就馬上會被人轉成pxl格式,這樣來說,pxl格式的更新還是不錯的。 ; ^# r0 E- |5 v8 \! R8 A8 d

# E$ V+ o& q' ?8 X5 i8 x$ X  由於91手機助手沒有iTunes同步會抹掉軟體的問題,加上其他一些比較方便的功能,使得很多新手都是從91開始瞭解並熟悉iPhone/iPodTouch的使用。其結果是,pxl格式依賴于91而生存。 ) W: w5 j& B( w7 t

" N' z% f' x4 \. Q: Q% s) a  pxl格式的流行也不是歷史的遺物,而是符合市場規律的需求。91助手的便捷的軟體管理方式(尤其是支援WiFi管理),加上免費的旗號,使得pxl格式在新手中很受歡迎。
) f- P2 T. A' V; e
; S  u0 Z3 k! D: \1 O1 Y+ B  實際上,pxl格式和deb格式具有的功能完全一樣。雖然pxl不能記錄檔的許可權等資料,但完全可以用腳本來彌補。即是說,pxl格式和deb格式其實是不相伯仲的。而且因為pxl格式的製作並不需要比較少見的Unix環境,尤其是Debian環境,其本身是優於deb格式的。
9 X, Z; W# c( X: A9 x) e
* S7 P6 g  `  Z2 u$ C/ A! W  但為什麼現在很多人都經常在說不要使用pxl呢?我個人認為,原因主要有以下幾個: % X0 }% w1 e. j) j- E, F

4 p5 w. M' [( B3 b  資源的局限性:除了91公司自己開發的幾個軟體之外,其餘所有軟體都是從deb和ipa轉換而來。如果原版軟體沒破解,pxl無能為力(比如Microsoft官方出的LiveMessenger和Cydia上一眾沒被破解的軟體); $ ~& @( F1 U4 W3 r

9 ^* d) E) K4 H; I/ ?  資源時效性:跟上面一點相似,pxl格式大部分是從其他格式轉換而來,跟原版相比總是會慢一些,尤其是當無法破解時,pxl根本就出不來;
4 _& ?1 ~, a. r: e/ T
# ?4 \+ {6 ?) s( S! J  P  打包人水準有限:現在很多人都是直接用91助手來打包pxl。對大部分只有一個XXX.app目錄的程式來說一般不會有問題,但若遇見那些對檔許可權等資料有嚴格要求的軟體(比如可執行檔沒有可執行許可權,或是mobile用戶不能改寫root所有的檔等等),或是需要比較複雜的腳本才能運行的軟體,往往pxl製作者並沒有能力去製作一個完善的pxl出來,這樣也導致了許多安裝使用上的問題; 0 u- X0 T8 ^6 k) K

% A# F. ?" H0 x' W- f" @! a: H7 ~  安全性:絕大部分人在製作pxl的時候都習慣用chmod-R命令來將整個XXX.app目錄及其中的全部檔和子目錄設為755/775/777許可權,而這種行為會造成一定的安全隱患。關於這些數位的意思請自行搜索相關資料。這裏簡單說明一下。644屬性表示僅有該檔的所有人才可以進行改寫操作,其餘任何人都只能讀取,任何人都不能執行這個檔。755和775是在644的基礎上加入了可執行許可權,755是該檔所在的用戶組的所有人都可以改寫。而777許可權則標識任何人都可以改寫並執行。由於mobile本身是受限帳戶,如果使用777許可權的話,有機會通過這個漏洞來獲取整個系統的控制權。只不過因為iPhone系統相對封閉,也不太有機會造成損失。但採用775和777許可權是不應該的;
9 n4 j% W9 Z) t6 @2 F! b, a. O  z4 ~+ m
  ipa轉pxl的存檔問題:不少人都有這樣的經歷,在遊戲A存檔之後再進遊戲B,存檔B之後再進A,發現A的存檔已經不在了。原因在於,ipa轉換成的pxl軟體,存檔全部是放在/var/mobile/Documents目錄下,而正好有兩個軟體的存檔檔案名相同(最常見的就是data.sav或save.data),互相改寫之後導致不能讀取。這種問題也發生在ipa轉deb上,而且無法解決; ; V  D2 d1 T; |4 `% Y6 J0 S+ [7 ?
; |: N: U" X  g- P! d' Q
  無法完整刪除:卸載pxl格式時,不會刪除存檔檔、配置檔、暫存檔案等資料,長期使用會導致可用空間減少;
, O. |( Z# z' V1 @8 m* Z4 L7 C5 K* x* e$ c. x- e
  在部分機型上存在相容問題:有些機器越獄後並沒有將系統分區中的/Applications目錄轉移到/var/stash的用戶分區中。由於系統分區的可用空間很少(默認500MB,通常可用空間不超過50MB),強行往/Applications裏安裝會導致剩餘空間消耗殆盡或安裝失敗。 5 i4 `. G4 ?. N+ F8 h2 ?, y
' ~: S$ f' l6 |1 S. f6 F- _' [$ A
  由此可以看出,pxl格式的問題更多不是pxl本身的問題,而是打包者的問題以及安裝方式的缺陷所致。
# P! `0 V  |# g+ U3 z
1 R! B, m( ?  O  另外要指出的是,pxl最大的提供者,91,經常是轉載他人發佈的軟體(包括網友自己購買破解的,或Cydia上直接下載的)然後當作自己發佈的軟體,對版權問題完全不在意,這樣也引起了很多人,尤其是原發佈者的反感。這種赤裸裸的剽竊行為實在是令人不恥。正因為這樣,很多人是因為不爽91而不爽pxl,這實在是冤枉pxl格式本身了。 2 d- R' x) e: T( c+ g. ?6 ]% Q- g

, K3 E  Y2 G8 J% b4 ]  `' y* n  總結:
3 ?) b' E# u% U- @; E9 ]0 n
7 P7 g$ }' [; d7 Y  一般的軟體還是儘量用ipa格式,不要使用ipa轉換成的deb或pxl格式,這樣可以確保相容性和安全性。而在系統級的程式(如SBSettings和輸入法),ipa是絕無能力的,那麼最好的選擇還是deb。pxl作為快被淘汰的格式,還是果斷的放棄比較好。 8 Y  I: {5 {/ ]1 G7 w# s

( p% v- R' @, i. o! z  至於ipa和deb的安裝方式,ipa的安裝首選iTunes同步和AppStore線上安裝,次選Installous,以保證最佳相容性。deb的安裝首選Cydia線上安裝,次選除91外的其他任何安裝方式。 4 Z6 H* l) T7 ]6 c; }
4 y! y, |3 P* ~; O/ S# y
  任何情況下都不推薦用91來安裝ipa和deb,因為91的安裝機制並不完善,很容易出問題。
' v2 q. Z8 B- t4 n* r
+ @8 p/ H+ w( K, g& K+ i3 J8 k
0 k/ ^8 h& y: s# H* `; N" U2 C本文是原樣轉過來的,甚至字體以及顏色都沒有更改。主要是為了方便機友查閱,也好進行更進一步的操作。感謝威鋒網,感謝作者autopear。
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 18-5-2024 11:56 , Processed in 0.306506 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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