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

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

[複製鏈接]
發表於 12-9-2010 21:46:02 | 顯示全部樓層 |閱讀模式
作者autopear。% [- P/ \& z! R/ ?
& F" t# F% |7 O0 @; ^
前言:
2 M1 X; u7 j( R
: ]( ], S; B1 c! J1 [+ z7 N# ?  目前iOS平臺上常見的安裝包有三種,deb、ipa和pxl。 ! [$ J: e" C# ^. V
8 j3 e  f6 p+ ^9 F2 `- ]; k
  其中deb格式是Debian系統(包含Debian和Ubuntu)專屬安裝包格式,配合APT軟體管理系統,成為了當前在Linux下非常流行的一種安裝包。進入2.x時代之後有Cydia作者JayFreeman(saurik)移植到iPhone平臺上,一起的還有APT軟體管理系統。 5 f# ?% I: ?6 u5 h

- _% n; |* `1 W0 S' k( \" C  而ipa格式則是蘋果在iOS平臺上推出的專屬軟體安裝包,在2.0固件開始才正式使用,是目前iPhone/iPodTouch/iPad平臺上唯一的官方安裝包。 8 q& h& z) x. u# Y6 f2 G& E' n, T) U
$ Q( Y% l& Q/ P2 e* w6 b
  而pxl格式則起源於Mac系統上的pkg安裝包,被廣泛應用於1.x固件時代,曾經是iPhone平臺上唯一的軟體安裝包,現在仍在被91等軟體所使用。 5 ^- q( J. D0 w5 {/ t" R
: U* J3 p9 n* k9 I; p# B* d) w. Q7 V# `
  安裝包格式: 3 d  M3 }# X  d8 ?

- C) `& U* C; \) e3 `. P+ O; T$ O  .deb
' Z, C' I5 S4 Y  d- `4 G3 R7 v: K/ {" _
  deb是Unix系統(其實主要是Linux)下的安裝包,基於tar包,因此本身會記錄檔的許可權(讀/寫/可執行)以及所有者/用戶組。 4 G+ W- y+ {' T' j7 V" |  I
9 W# m, V7 k+ Z# ^, I9 }
  由於Unix類系統對許可權、所有者、組的嚴格要求,而deb格式安裝包又經常會涉及到系統比較底層的操作,所以許可權等的設置尤其重要。
0 ]5 N" @/ W# M, S
) E, U; l1 [) B% m3 z7 k: k+ j  deb包本身有三部分組成: 8 T# W. O& q( y% W' ?. ~5 y
( e+ g: c6 j; |, Z
  資料包,包含實際安裝的程式資料,檔案名為data.tar.XXX; 9 e' w4 e% ^4 z4 h: y6 {1 X/ K
2 ^/ V( r4 K4 f
  安裝資訊及控制腳本包,包含deb的安裝說明,標識,腳本等,檔案名為control.tar.gz; 1 P3 _3 q; v# X; z" W
: Z7 v- Q! l$ j, m7 M: A
  最後一個是deb檔的一些二進位資料,包括檔頭等資訊,一般看不到,在某些軟體中打開可以看到。 ' _* `! T; ]0 F: n/ _3 {
" G7 @! ?! Z+ f# V# H
  deb本身可以使用不同的壓縮方式。tar格式並不是一種壓縮格式,而是直接把分散的檔和目錄集合在一起,並記錄其許可權等資料資訊。之前提到過的data.tar.XXX,這裏XXX就是經過壓縮後的尾碼名。deb默認使用的壓縮格式為gzip格式,所以最常見的就是data.tar.gz。常有的壓縮格式還有bzip2和lzma,其中lzma壓縮率最高,但壓縮需要的CPU資源和時間都比較長。 6 R8 G# }& |# v7 {- s5 D
* F* ]- L: r5 t9 [) r* W6 ?
  data.tar.gz包含的是實際安裝的程式資料,而在安裝過程中,該包裏的資料會被直接解壓到根目錄(即/),因此在打包之前需要根據檔所在位置設置好相應的檔/目錄樹。
, u) h! E7 h% {# [1 R/ z6 M1 j
$ m) f% D6 W5 {* w  而control.tar.gz則包含了一個deb安裝的時候所需要的控制資訊。一般有5個檔:
3 R0 X) a1 b3 z: [5 ]6 g2 ]- h$ W7 w6 Q, N/ N; L5 z+ E$ q  W
  control,用了記錄軟體標識,版本號,平臺,依賴資訊等資料; 3 V$ {$ r  j# c( n+ T$ d

- Y1 C& e8 D7 }) o  preinst,在解包data.tar.gz前運行的腳本; - l8 F- w; w7 X$ O% u

$ \( ]  C, u: e- u- C0 l5 o  postinst,在解包資料後運行的腳本;
: A2 @: j7 T  Y& w
. G( P( ]- m0 ~2 \% g8 o  prerm,卸載時,在刪除檔之前運行的腳本; 8 E: ^" ^  l+ c" v
  l7 G! T0 P; W4 _# d$ Q6 L* E+ n
  postrm,在刪除檔之後運行的腳本;
! H* Q( s  w: T+ i' W, K! Q  e7 P& N' T0 t3 A$ m- O
  在Cydia系統中,Cydia的作者Saurik另外添加了一個腳本,extrainst_,作用與postinst類似。 # Y& l: L( T6 n9 }: D; \% ]. _
$ @6 }* b* W5 q! N9 z2 J( ?- a
  .ipa
# J7 L& B: A! y# M: t5 b* t: i6 Q* I" V9 |5 Y
  使用過MacOS的人可能都知道,Mac下的軟體大部分都只有一個.app目錄,裏面包含了程式全部資源和可執行檔。簡單來說,Mac下的軟體就像是Windows下的綠色軟體一樣,解壓後即可使用,不需要安裝,卸載的話也只用刪除程式檔即可(這裏不涉及pkg格式安裝包)。而ipa格式可以視為這種.app軟體的衍生物。 2 _  \5 x: o8 h* m
' s- f% Q% Q; ~
  ipa檔實質是一個zip壓縮包(不是rar或7z包),包含3個元件: $ q( {; T" f7 @$ [9 j

: E5 \- W* i7 I: g4 c" y  payload目錄下的.app目錄,這個是軟體的主程序;
( |7 o' `. l* V7 p- p& Y
: J+ Z! w9 H8 ~  iTunesArtwork,實質是一個無尾碼名的png圖片,用來在iTunes中顯示圖示; ' }7 J0 ?2 D" V3 p$ z: g1 q  E
2 l; c$ g9 L' ?7 P
  iTunesMetadata.plist,記錄購買者資訊、售價等資料。 , ]+ D, D7 v4 k; K2 b

# y: L: ~8 g2 p4 i. }5 W6 c  由於zip包不能記錄許可權和所有者等資訊,所以蘋果規定了ipa的安裝方式,即全部ipa都會解包安裝在/var/mobile/Applications目錄下,全部檔和目錄的所有者及用戶組均設為mobile(ID為501),主程序(可執行檔)的許可權設為0755(所有人都可以執行,但只有所有者可以修改),可執行檔在plist中定義。全部目錄許可權設為0755,而其他所有檔都設為0644(僅所有者可以修改,其餘人只允許讀取,全部人都不允許執行)。   x% S% h1 W) m$ X& g

" G  u! S) r0 k  ipa解包後並非直接放置於Applications目錄下,而是放在一串由隨機碼構成的目錄下,其作用在於,只允許這個軟體運行在一個特定的沙盒(Sandbox)中,不能干擾其他軟體。因此那串隨機碼目錄下,除了ipa本身的三個組件之外,還有三個目錄:
# I" q; W4 |' i( z6 E1 c9 J  e6 `& L6 }
  Library,一般是用了儲存設置檔等資料; ; Z* v" P) ^2 n+ y9 p3 Z) [

$ |4 d9 A. U0 H% D  Documents,存儲資料,多用了保存存檔;
) q; Q6 Y8 M. n7 L9 k$ Y
4 C# j  C2 ^- P  tmp,暫存檔案夾。 * w2 Y9 P3 ~! L. `3 V9 W# D6 f- e

2 }9 x7 V7 _( m2 a! N  由於這個軟體只能在這個特定的目錄下運行(當然了,部分程式會調用系統的通訊錄、相機等元件,但仍然是受限制的),從而保證了整個系統的安全性和穩定性。
9 v0 _+ C- P( k4 U- E6 {9 E
) y6 p3 t( Q* F$ r  由於Unix系統下對許可權的規定相當嚴格,所以“越權”的行為是絕對不允許的。舉個例子,mobile用戶無權刪除root所有的檔,因為root的許可權高於mobile。所以有些人在修改ipa安裝後的檔時,比如進行漢化或者修改存檔,發現不能刪除乾淨軟體,或不能保存,這是因為刪除時不能刪除root所有的檔,程式本身也無法對root所有的存檔檔進行寫入操作。 0 w; }% K$ M0 Q% ^
  b% a7 \1 Q& W
  .pxl ) ?4 P7 n$ J# [; p& q! o

9 v2 c: H2 r3 E# K. g  pxl格式在1.x時代是iPhone平臺上唯一的安裝格式,原因是那時候還沒有Cydia這樣的APT管理軟體,蘋果官方也沒有推出AppStore。由於在1.x時代積累了大量人氣,在接下來的AppStore時代中,pxl格式以其相對簡易的打包和安裝方式,仍然佔據了很大一部分市場。但隨著Installer的停止開發,iBrickr等軟體停止更新,目前唯一還在堅持使用pxl格式的就只剩下91一家了。 . z8 G3 W5 a) q) S& y
$ R! w; a3 D* r2 l# v5 K' e/ F
  pxl安裝包通常包含3個組件: 7 T- a* a" K6 y& W; e* x

) `1 G( j# g; {+ I# D  PxlPkg.plist記錄程式檔的存放位置、所有者、許可權以及軟體標識等資訊; : ]( r5 }7 Y" c( W
! [0 k0 d  b* C0 [% V. K3 V/ m
  PkgScript文件夾,存放安裝和卸載腳本; ) W- E. W% n/ U! Y

) L8 N. c5 Y6 c  程式檔。 " }- ~4 U; r& u7 v! s) R* B6 r2 i
. u* z( [2 {4 d& b" {( ^- ~
  PxlPkg.plist檔的開頭通常是CFBundleIdentifier,記錄著軟體的唯一標識,以和其他軟體進行區分。RDPxlPackageVersion則記錄軟體版本。RDPxlPackageFireware被用來記錄可以運行的固件版本。其餘還有一些鍵值是用來記錄軟體介紹、網址、作者資訊等資料。 9 R9 z* J8 K6 A% |

) k' D" u" T. ^- f$ f% Y6 Y  除了軟體標識、軟體版本和可用固件版本以外,PxlPkg.plist的核心部分就是RDPxlPackageFiles和RDPxlPackagePostflight兩項。RDPxlPackageFiles記錄了程式檔應該被複製到的路徑,並提供了是否覆蓋的參數:overwrite。而RDPxlPackagePostflight則記錄程式檔應該被賦予的所有者和許可權,分別以chown和chmod命令來實現。另外,對於含有安裝/卸載腳本的pxl來說,還會以sh命令執行相應的腳本Postflight和Preremove。 . C1 m6 \4 g  K( J5 K5 P
5 m0 V4 i  z9 |2 {
  PkgScript通常包含兩個檔,安裝後執行的腳本Postflight和卸載前執行的腳本Preremove,這兩個腳本就是標準的LinuxShellScript,以sh命令執行。
( I4 Y: l) z) E' |  w' x
0 y7 D4 ]' i: n1 w1 e  安裝包的特點: $ g7 J. L4 K% m* j( x

6 [+ I: `' s  m" V  .deb
% G& H) @: i+ u# w+ h2 I, x
  n& O7 b* X) l- F  豐富的資源:Cydia上本身就不少,更何況任何格式的安裝包都可以轉換為deb。
4 Z+ d% {) v- x% j1 {+ {* j2 S
  相對方便的線上購買模式:CydiaStore,不過儘管沒有AppStore的5台設備的限制,但對國內用戶來說,付款方式比較困難。
9 |6 [7 C) z" v  p
0 F  ^: V0 C2 d! |7 s" ]  破解難度較大,沒有使用AppStore的驗證方式,所以必須將驗證和防破解措施加入程式裏面,這樣就比較難破解,對軟體發展者來說是個好事。
' v8 T+ Q5 Q2 d; S  r+ ^! a6 v; S+ Z; n8 v. c9 Z
  完善的Unix檔系統支援:無需以命令設置檔的許可權、所有者和用戶組(當然也可以以腳本來設置)
& |# A" t! m! ^5 q5 S- L) ~0 \/ e5 W# z8 O* c% C0 M( ]7 o
  完善的腳本支援:5個腳本依照安裝和卸載的先後順序執行,可以提供更多選擇。比如備份還原操作,可以在preinst中備份檔案,而在postrm中還原檔
9 U" J0 ?7 ~- w+ ^3 A) P  N3 t; j, c9 r0 M' z
  嚴格的依賴關係:deb遵循嚴格的依賴關係(於Depends和Pre-Depends指定),可以確保軟體運行所必需的元件。線上安裝的時候會自動安裝所依賴的套裝軟體。卸載時也很重要,比如套裝軟體A依賴於B,當卸載B的時候會提示A依賴於B,卸載掉B的話會導致A不能用,這樣可以確保系統的完整性和穩定性。
; U2 L6 z9 K( M+ ?" N3 g. X, Q* L' @3 ], C; Y* K! W
  Conflicts、Replaces、Provides等鍵值的存在可以實現衝突提示或替換其他套裝軟體。 $ u. [- D/ E/ K, Y/ h) J( V( T: x2 t
: D& R2 T& H) ]( O, }8 d* O- |
  完全許可權:由於deb必須以最高許可權root的身份運行,deb可以對系統任何位置進行操作,換句話說,deb擁有對整個系統的完全控制,因此deb安裝包軟體可以實現很多ipa不能實現的功能。
6 K/ Q5 C  ?* J8 z) g+ X* E% J! W  }% g' W5 x0 m1 g. @
  相對簡單的獲取方式(線上或離線)和安裝方式,也不用擔心在不同機器上同步會刪掉程式的問題。
) ?& u' R4 Y/ n$ `5 O: r5 f" e' N# h0 b$ X% @5 C' w. m3 H! S
  安裝相對簡單:其實無論是哪種安裝包,安裝方法都不算很複雜,只不過deb稍微複雜一些。
( ?  w! F7 ~2 Y3 v- p8 q: E% A, B  D' F1 }/ b
  deb的安裝方法大體有5種: $ G4 u7 A+ e: ~9 Q, o

$ e2 e4 @1 Y2 r- }& s  Cydia或同類APT管理軟體線上安裝,這個是最佳的安裝方式,因為通常無需考慮依賴關係,但缺點是對網路的要求比較高; % \7 X% T1 B$ }7 i5 ?

6 H6 l4 ~) U/ y# K  命令行中以dpkg-iXXX.deb的形式安裝,好處是可以以通配符一次性安裝多個deb,而且也可以直接看到腳本的運行狀況和安裝成功/失敗的提示資訊,缺點是需要命令行軟體的支援,如Putty/WinSCP的控制臺/iSSH/MobileTerminal,很多人也不熟悉命令行下的操作。另外,安裝完後會不顯示圖示; 6 z+ S/ ^! J% _  o* B' b
1 U% K8 |. x4 A' Y" X
  放置於AutoInstall目錄重啟安裝。該方法實際是Cydia提供的一個啟動腳本,在每次系統啟動時以dpkg命令安裝AutoInstall目錄下的deb,好處是不需要命令行操作,缺點是必須要重啟,有些甚至要重啟兩次,也會出現不顯示圖示的情況; 5 F, L4 _9 r- f  o; n

) v( q6 C" @5 ]! C  利用iFile安裝,好處是圖形化操作,桌面會顯示圖示,缺點是不能一次安裝多個deb; - Z) L$ f* `8 |. q

+ U! t4 A5 n( T  用CyderII等軟體來安裝,其原理是類比一個APT軟體管理器來下載相應的deb檔並傳到設備,然後以前面幾種方式來安裝。 ) C# s0 n0 D0 }0 A) I1 P( N; s

. S+ u/ s% f. K  S  總體來說,deb的安裝都是依賴於dpkg-i命令來安裝,只不過有些是在命令行下輸入命令,有些是提供了圖形介面。但除了Cydia安裝一種方式之外,其餘幾種安裝方式都存在一些共有的問題:
6 r' [6 [0 S1 O) u! W5 o- a0 Q2 ~1 l' @
  不會自行搜索依賴關係,必須手動提供所依賴的deb;   \# K2 p2 q3 I% ^. \8 u, `2 r3 m  A
1 W& a+ i) ^& l8 @
  Cydia會讀取安裝腳本裏的一些特殊語句,比如僅在全新安裝時執行而不在升級時執行,安裝完成後重啟SpringBoard或設備等等。
& v+ O) P  i/ c4 |  j/ ?' @5 y/ J$ v  X' y! p1 C
  當然了,deb軟體的卸載也比較簡單,有兩種方式: $ ]- T$ D& E% v: c7 ]# c6 i8 d$ W

, c3 E: A" [' G" `9 r$ O8 U8 j9 H  Cydia裏卸載,優點是卸載過程和提示資訊很詳細,全圖形介面操作,同時也提供了重新安裝的選項;
! v5 w3 C; A. c3 Q1 R. P- N# c4 y% S7 _, q
  以dpkg-rPackage_ID命令或dpkg-PPackage_ID命令來卸載(詳情後面會說);
6 k- g" r. B0 J9 w5 B
2 g  }% B5 `! p) T+ q  Cydelete來卸載,優點是可以直接在桌面上卸載有圖示的軟體,但對那些沒有圖示的無能為力。
7 Z" d& D/ G9 G0 S% R) P" d6 a# Z! P0 ]( I! m
  其實,不管是安裝還是刪除,都可以才要全手動的方法。即,解包deb之後,自己將檔放到相應位置,然後設置許可權等並執行腳本。但這樣有必要麼?
8 P# I' }4 N* \8 G1 ]0 c
! K4 {! \1 ^; C3 Q7 L  deb的安裝過程如下:
* F+ y# q1 |2 a" U; r. ~! N% h0 t% X; W! m! x
  讀取資料庫並鎖定,避免同時有兩個安裝程式在運行 - V( F- a* P9 |5 X5 O% {
. }2 h+ O0 r# Q  S8 E
  讀取control中的Package(套裝軟體標識)和版本資訊,並搜索資料庫,若已存在,則卸載之後再安裝; # Y# H+ Z$ ^( F7 m

0 V0 k3 s0 n! a1 P  檢查Depends,Pre-Depends,Conflicts和Replaces,如果檢測到已存在Conflicts中存在的軟體,則報錯並終止安裝。如未找到Pre-Depends指定的軟體,則報錯並終止安裝。如找到Replaces中指定的軟體,則卸載之; 4 [3 {  @6 s$ |4 Q% J/ \
' p& r* d. o# E7 r7 T" Q
  將資料寫入/var/lib/dpkg/status檔中;
) `" N& x: ~$ A% n
1 X8 v  A, w1 J; @  執行preinst腳本(如果有);
4 q2 W" A9 ~3 {, [7 E: k
' d$ G! p" V" y% I6 P  解包data.tar.gz,將檔放置於相應位置,並將檔列表寫入/var/lib/dpkg/info/XXX.list;
, W8 Z% z! K' W% ~# S' Q
4 b3 \2 \9 S- q, G5 P  運行postinst和extrainst_腳本(如果有); ; p1 E4 L. D2 @) j; l( W* G
2 S& ~" V: f0 s- `, ^  F
  如果之前的安裝都沒有出錯,即安裝成功,那麼會在status檔中寫入Status:installokinstalled資訊,否則會寫入其他狀態資料,比如Unpacked(未解包資料)、Failed-config(腳本未能成功執行)、Half-installed(安裝失敗等);
5 e8 C" d' O; A' m" v! B  [
0 f% p4 \/ P# ^, p& O  重新載入資料庫並解除鎖定。 2 L9 P% M3 K, Y: B2 W
$ |- C* j9 l* ^" _& N, D
  deb的卸載過程如下:
4 f% I3 J, B4 b1 N& \+ l( q: ~& Y3 o! [
  讀取資料庫並鎖定;
, G3 M/ `& P* ?9 x& \1 j6 `/ z1 ]& i' }" H  }* f
  根據軟體標識搜尋資料庫; - B3 S, n  x- Z2 q" I- ?' ^
2 {6 O! P! M1 b
  檢查是否有軟體依賴於待卸載的軟體,如果有則提示,並中斷卸載;
  E: e" C$ f: d6 x  x; z- Q: r) L+ x
  執行prerm腳本(如果有);
1 r0 {+ ?  [- R' h. `1 p: z' g4 u
* s- S9 f8 B, u$ `+ ^. T" A  讀取/var/lib/dpkg/info/XXX.list檔,並刪除list檔中記錄的全部檔和非空檔夾;
; `) _& Q9 f' V3 h+ u) |4 K( e4 J! C
  運行postrm腳本; ; T# O3 \5 B! D; F# P% K! d9 m

6 f9 N9 s6 A% X* K! ]+ \  如果卸載命令是dpkg-r,則保留status中的記錄並改為Status:Notinstalled;如果卸載命令是dpkg-P,則刪除全部資料; 9 g4 \/ A$ b5 j8 `2 X

; p( ^# B3 C+ d6 a+ O( X  如果卸載過程沒有錯誤的話,重新讀取資料庫並解除鎖定。
, `2 `; F5 A- I8 U+ ^" r' m# |
/ S! @" |6 J' y7 S  由於deb安裝的軟體可能會在運行時在/var/mobile/Documents下放置存檔檔,或在/var/mobile/Library/Preferences下放置設置檔,而這些檔並沒有記錄在list檔裏,所以卸載的時候不會被刪除。 : a9 O3 m! G% p6 A
$ ?, S6 ]2 Z4 F1 ]1 u/ B9 U0 l
  .ipa
) h+ z# [6 }, `5 R% R* n, `- Y
2 S) y4 L" s8 X" R3 ~; t$ g  豐富的資源:AppStore上那麼多資源,apptrackr等網站也提供了很多破解版。 . A6 F5 x" c- v, f+ z6 Q, n* M
4 |, m$ c; c: w( p0 D
  完善的更新、後期服務。 1 T7 |3 j9 _! C% l/ i

( S$ y3 K5 r3 G. P5 S' w  只能使用最小許可權,保障安全性。 + L$ H0 z3 a1 ~4 E# f5 q9 e% |5 f' \& P
9 a9 G% X8 s5 g; Y: E$ B7 l
  不涉及系統級的操作,所以一般不容易造成死機或白蘋果(有些是因為資源消耗太大所以卡死)。
+ f& n$ o* E! _* A+ Z4 V# q+ ]8 {5 \6 C1 ]/ D1 Y  K! V
  便捷的安裝方式,無論是直接在設備上用AppStore安裝,還是用iTunes來同步,抑或是用Installous和91這類第三方軟體來安裝,都是很方便快速的安裝方式。
- K0 o& g) s! z* J, a. E( r0 x; O) H$ @6 c/ C% }
  超級簡單的卸載方式:還有什麼比只需要點一個X就能卸載更簡單呢?
. T3 l) h0 I& M  e/ \& U
# l0 P+ k7 w& E( m% ^4 M3 A  完全刪除,不會留下任何垃圾檔(如存檔、設置檔等) # Y1 K! y6 z4 S: M0 J; n  t6 j

7 ?& M/ }9 Q% L/ o6 z! U  總體來說破解還是比較容易的,但現在越來越多軟體加入了防破解措施。
/ P5 a! h, B: m; a, A" c6 R! E6 V! Z" ]- ?
  之前提到過,ipa軟體是被安裝在一個類似于沙盒的環境中,除了能對/var/mobile/Media/DCIM目錄(拍照、截圖存放目錄)進行操作,或是調用壁紙、鈴聲、相機等元件,不能對系統進行任何干涉,這樣在最大程度上保證了系統的穩定運行,也不會干擾其他軟體的正常使用。但問題是,由於ipa軟體的許可權很低,想要對系統進行修改,尤其是應用補丁時,ipa就無能為力了。
. i: H  M; W8 r' R$ b  F! j) O1 A" d
  ipa軟體官方的安裝方式有兩種,一是在AppStore這個軟體中下載安裝,二是用iTunes同步。 ; ~4 \% `* S1 v+ l$ B" ]  F1 c6 x

1 ^# Z' J5 R% ?; R  前者的問題主要是網路問題,網速不好很容易安裝失敗;GPRS之類的上網安裝又很耗流量。後者的問題主要是不能在不同系統下使用(包含不同電腦和同一部電腦上的不同系統),在其他系統上同步會抹掉原有的軟體。當然了,iTunes每次同步時間比較長也是經常被人詬病的。尤其是當安裝軟體比較多的時候,每次同步之前的備份需要很長很長時間,這個很噁心(不過可以直接X掉備份操作)。 ) c- k& I' K! a" t

7 r$ V0 A9 L9 R. m) \$ D  由於以上兩種方式存在一些問題,所以很多人會選擇使用Installous或91來安裝ipa,這也確實是個不錯的選擇。 ' V1 }- ]- F. b' U- R0 y

% u( O  b. T3 M9 t  Installous一般沒什麼問題,但對部分驗證比較嚴格的ipa處理不是很好。雖然Installous基本能代替iTunes,但畢竟不完全等同。最典型的就是Installous安裝Microsoft官方出的LiveMessenger(正版,非破解版)時不能運行。實際上Installous對很多未破解的正版軟體支援不是很好。 2 ^5 E3 G: ^, v3 E8 g

0 K$ T  x4 v7 [# e) k  至於91,經常被人批評。91雖然可以安裝ipa,但除了Installous都有的正版軟體的支援問題外,由於91的安裝機制有缺陷,軟體不能實現多語言,只會使用英文介面,而忽略掉zh_CN.lproj,zh_TW.lproj這些語言包。這對那些用希望使用漢化版的人來說實在是一個悲劇。所以通常是要避免使用91來安裝ipa的。
% U, h+ u6 {- G$ ?* u# u
; j' U! t3 r% H5 X  至於卸載,三種方法:
4 B& @$ q: ^+ I2 v, s  y- o% C& \3 \5 h
  設備上按住圖示直到開始晃動,點擊圖示左上角的X即可卸載;
/ ?& s; _# ~7 M
/ p8 E9 s8 ~( S, G8 W* w. I0 c  於iTunes中取消選中,然後同步 6 W- G2 A! O9 |0 D; h; V+ w0 F

5 {- u* e$ R: E2 I5 a  找到/var/mobile/Applications下的相應目錄,強行刪除整個檔夾。這個在前面兩種方法無法使用是可以採用(有時候卸載體積太大的軟體,比如超過1G,因為刪除過程太長導致失去回應並刪除失敗。),但這種方法會造成系統的不穩定。除非是確實碰到了問題,否則強烈建議不要使用。
; k3 w0 a4 k0 ^8 s2 N* \! H7 s$ W0 O+ m
  .pxl
' t7 V) q9 V9 w3 P7 P$ f8 T. I8 s9 \0 l' F
  嚴格來說,pxl格式的資源並不算多,但也不少。現在使用pxl格式的絕大多數都是91的用戶。 2 L9 i/ w* g) D/ x
5 I' V  W6 u. b2 C6 m
  從時效性上來說,很多軟體(主要是AppStore上的)一被人破解就馬上會被人轉成pxl格式,這樣來說,pxl格式的更新還是不錯的。
( n6 H5 l1 d6 R, ]+ P6 x2 M7 K0 M& s4 \, p* S. U0 i
  由於91手機助手沒有iTunes同步會抹掉軟體的問題,加上其他一些比較方便的功能,使得很多新手都是從91開始瞭解並熟悉iPhone/iPodTouch的使用。其結果是,pxl格式依賴于91而生存。 5 J( p" _1 G; r9 k' y% J3 y

( V3 W- N" ?+ A! L1 z; o- m  pxl格式的流行也不是歷史的遺物,而是符合市場規律的需求。91助手的便捷的軟體管理方式(尤其是支援WiFi管理),加上免費的旗號,使得pxl格式在新手中很受歡迎。
: x+ u( {" v- R5 ?* l' Q% \7 _
8 G; ], g; n) n; W* K  實際上,pxl格式和deb格式具有的功能完全一樣。雖然pxl不能記錄檔的許可權等資料,但完全可以用腳本來彌補。即是說,pxl格式和deb格式其實是不相伯仲的。而且因為pxl格式的製作並不需要比較少見的Unix環境,尤其是Debian環境,其本身是優於deb格式的。
5 D* A" V4 Q+ _; M5 v7 Y% L' ?( a1 E, C7 I" r8 q2 a6 a7 \
  但為什麼現在很多人都經常在說不要使用pxl呢?我個人認為,原因主要有以下幾個: ( G% z2 T8 t2 e4 k

' g# G+ G8 M% t; W7 C  資源的局限性:除了91公司自己開發的幾個軟體之外,其餘所有軟體都是從deb和ipa轉換而來。如果原版軟體沒破解,pxl無能為力(比如Microsoft官方出的LiveMessenger和Cydia上一眾沒被破解的軟體); ( Q* P8 Q  ?, E' @/ O5 F+ r; R

/ U8 D# b1 z$ m8 G/ s  資源時效性:跟上面一點相似,pxl格式大部分是從其他格式轉換而來,跟原版相比總是會慢一些,尤其是當無法破解時,pxl根本就出不來;
, g0 g+ ]# D0 R% q, U2 q# }4 u4 v8 G# B9 B
  打包人水準有限:現在很多人都是直接用91助手來打包pxl。對大部分只有一個XXX.app目錄的程式來說一般不會有問題,但若遇見那些對檔許可權等資料有嚴格要求的軟體(比如可執行檔沒有可執行許可權,或是mobile用戶不能改寫root所有的檔等等),或是需要比較複雜的腳本才能運行的軟體,往往pxl製作者並沒有能力去製作一個完善的pxl出來,這樣也導致了許多安裝使用上的問題; 5 L" F2 p+ v  @# H: e$ U- b& d. h
8 f6 t# h; G4 D7 E; H
  安全性:絕大部分人在製作pxl的時候都習慣用chmod-R命令來將整個XXX.app目錄及其中的全部檔和子目錄設為755/775/777許可權,而這種行為會造成一定的安全隱患。關於這些數位的意思請自行搜索相關資料。這裏簡單說明一下。644屬性表示僅有該檔的所有人才可以進行改寫操作,其餘任何人都只能讀取,任何人都不能執行這個檔。755和775是在644的基礎上加入了可執行許可權,755是該檔所在的用戶組的所有人都可以改寫。而777許可權則標識任何人都可以改寫並執行。由於mobile本身是受限帳戶,如果使用777許可權的話,有機會通過這個漏洞來獲取整個系統的控制權。只不過因為iPhone系統相對封閉,也不太有機會造成損失。但採用775和777許可權是不應該的;
: k8 G' {; D" o2 A1 Z) J; X4 @8 Z
  ipa轉pxl的存檔問題:不少人都有這樣的經歷,在遊戲A存檔之後再進遊戲B,存檔B之後再進A,發現A的存檔已經不在了。原因在於,ipa轉換成的pxl軟體,存檔全部是放在/var/mobile/Documents目錄下,而正好有兩個軟體的存檔檔案名相同(最常見的就是data.sav或save.data),互相改寫之後導致不能讀取。這種問題也發生在ipa轉deb上,而且無法解決;
3 }! t% L$ l' ?) o8 [
1 U; ?$ {$ O( C, n6 `  無法完整刪除:卸載pxl格式時,不會刪除存檔檔、配置檔、暫存檔案等資料,長期使用會導致可用空間減少;
8 H# S" `; A/ @& G; }
( {' f5 K4 g7 Y$ \/ E  在部分機型上存在相容問題:有些機器越獄後並沒有將系統分區中的/Applications目錄轉移到/var/stash的用戶分區中。由於系統分區的可用空間很少(默認500MB,通常可用空間不超過50MB),強行往/Applications裏安裝會導致剩餘空間消耗殆盡或安裝失敗。
) ~8 H- j6 [: _1 x
, n" z" s% `, A* v; P  由此可以看出,pxl格式的問題更多不是pxl本身的問題,而是打包者的問題以及安裝方式的缺陷所致。 9 J( u* \1 A/ a' l2 [9 D! w

! `5 O* {* S7 G' o) ^( Z; S  另外要指出的是,pxl最大的提供者,91,經常是轉載他人發佈的軟體(包括網友自己購買破解的,或Cydia上直接下載的)然後當作自己發佈的軟體,對版權問題完全不在意,這樣也引起了很多人,尤其是原發佈者的反感。這種赤裸裸的剽竊行為實在是令人不恥。正因為這樣,很多人是因為不爽91而不爽pxl,這實在是冤枉pxl格式本身了。 $ p" [2 W: r0 k: v4 O0 [2 M3 X

+ Y( S% h. ?, f# p# B, o  總結: 7 [' J) p' U5 @2 E/ M7 r
. l+ o- r3 r$ h" v
  一般的軟體還是儘量用ipa格式,不要使用ipa轉換成的deb或pxl格式,這樣可以確保相容性和安全性。而在系統級的程式(如SBSettings和輸入法),ipa是絕無能力的,那麼最好的選擇還是deb。pxl作為快被淘汰的格式,還是果斷的放棄比較好。
4 [, a/ P2 d2 R9 @2 i1 I2 C6 h! v. @
  至於ipa和deb的安裝方式,ipa的安裝首選iTunes同步和AppStore線上安裝,次選Installous,以保證最佳相容性。deb的安裝首選Cydia線上安裝,次選除91外的其他任何安裝方式。
3 X0 U: m+ X" o
* ^3 |# w  _( U; h. z  任何情況下都不推薦用91來安裝ipa和deb,因為91的安裝機制並不完善,很容易出問題。 0 N- Z- A7 ?4 k4 t8 u) A* S) _6 h
; W3 I; ]5 a6 Y/ }+ i8 F
' C, h% Q$ L* C! k% J' c, e% @
本文是原樣轉過來的,甚至字體以及顏色都沒有更改。主要是為了方便機友查閱,也好進行更進一步的操作。感謝威鋒網,感謝作者autopear。
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 14-12-2025 17:04 , Processed in 0.313282 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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