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

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

[複製鏈接]
發表於 12-9-2010 21:46:02 | 顯示全部樓層 |閱讀模式
作者autopear。
; B! |& g3 g8 M6 E( t* C
4 `5 g$ X3 T1 o: v7 S- Z前言: - H# t1 w' i5 e& g* C' L

  |5 t& Y  {! h  目前iOS平臺上常見的安裝包有三種,deb、ipa和pxl。
% o0 Y/ X: R1 p& [
# b5 J8 U' ^) y# X6 I+ B6 W/ x  其中deb格式是Debian系統(包含Debian和Ubuntu)專屬安裝包格式,配合APT軟體管理系統,成為了當前在Linux下非常流行的一種安裝包。進入2.x時代之後有Cydia作者JayFreeman(saurik)移植到iPhone平臺上,一起的還有APT軟體管理系統。
4 y, A9 Z  t4 A8 _1 S# z, [
! j& N: z+ \5 ?' Y) \# c  而ipa格式則是蘋果在iOS平臺上推出的專屬軟體安裝包,在2.0固件開始才正式使用,是目前iPhone/iPodTouch/iPad平臺上唯一的官方安裝包。
. R& g8 d6 r" J+ a/ c, ~- J; n  I8 k5 b* {* `
  而pxl格式則起源於Mac系統上的pkg安裝包,被廣泛應用於1.x固件時代,曾經是iPhone平臺上唯一的軟體安裝包,現在仍在被91等軟體所使用。 # Z; v$ |5 g) {- M) W( Y: U+ L7 g& o

) F4 E7 G4 A5 B/ l  安裝包格式: * m' _0 {' i) [' z) e% V% q! N
7 c. P; s& C6 a
  .deb : L/ a& M9 ~& f7 Y7 {; C

5 k9 o& V- L) b  deb是Unix系統(其實主要是Linux)下的安裝包,基於tar包,因此本身會記錄檔的許可權(讀/寫/可執行)以及所有者/用戶組。
# C1 e# a9 X# i( H/ }2 d# O1 Q2 p5 m! w& n
  由於Unix類系統對許可權、所有者、組的嚴格要求,而deb格式安裝包又經常會涉及到系統比較底層的操作,所以許可權等的設置尤其重要。
# s/ u9 l! d& [
& j. E! u6 W4 b- N8 G, z  deb包本身有三部分組成:
' @; f1 A2 ]% P1 I6 u. V' u8 H4 R0 Q8 @
  資料包,包含實際安裝的程式資料,檔案名為data.tar.XXX; + f& T: E  Z; F) Y6 \

" e) H& o  W# n; x6 ]5 ?+ T, i  安裝資訊及控制腳本包,包含deb的安裝說明,標識,腳本等,檔案名為control.tar.gz;
% z0 B; `4 f/ A$ f
) ?  l) V1 S+ u: _  最後一個是deb檔的一些二進位資料,包括檔頭等資訊,一般看不到,在某些軟體中打開可以看到。 8 u$ S/ m7 X$ g1 j
+ l0 g1 h& z7 Q( {+ c
  deb本身可以使用不同的壓縮方式。tar格式並不是一種壓縮格式,而是直接把分散的檔和目錄集合在一起,並記錄其許可權等資料資訊。之前提到過的data.tar.XXX,這裏XXX就是經過壓縮後的尾碼名。deb默認使用的壓縮格式為gzip格式,所以最常見的就是data.tar.gz。常有的壓縮格式還有bzip2和lzma,其中lzma壓縮率最高,但壓縮需要的CPU資源和時間都比較長。
) z# b' F* m( Z6 t
( C" f9 A  t. n4 i& d* {9 G  data.tar.gz包含的是實際安裝的程式資料,而在安裝過程中,該包裏的資料會被直接解壓到根目錄(即/),因此在打包之前需要根據檔所在位置設置好相應的檔/目錄樹。 & t# e* j& O! L

% D$ R1 U: w. }# [  而control.tar.gz則包含了一個deb安裝的時候所需要的控制資訊。一般有5個檔: + x! s, d) ~. P$ P  h! c

, n, E4 K$ e+ a# @6 k  control,用了記錄軟體標識,版本號,平臺,依賴資訊等資料; & S( I% n5 a# H! E. i; ?
/ y/ R+ _/ k# |" S3 p# E
  preinst,在解包data.tar.gz前運行的腳本;
) K* ]6 T8 a1 l: P/ \+ l9 c
  N9 Z  g% F/ u' B: f. Y  postinst,在解包資料後運行的腳本;
4 E; y, _6 O7 s! f
: h/ I/ v+ {% u; ]* Q0 l  prerm,卸載時,在刪除檔之前運行的腳本;
& W- }7 j8 Z+ _: q  O9 K
: _7 |6 S- Q3 P: \1 q- D- d  postrm,在刪除檔之後運行的腳本; / j; _, }4 P1 O8 [
, Z+ A( _4 d( a# c
  在Cydia系統中,Cydia的作者Saurik另外添加了一個腳本,extrainst_,作用與postinst類似。
) e) S# N- a* s1 Q2 p4 g* P( O7 Q1 I& H. @8 y7 P& z
  .ipa . _& T& u) [. e5 K9 o% j

+ w+ r* Y: C7 v$ d; `5 k# @  使用過MacOS的人可能都知道,Mac下的軟體大部分都只有一個.app目錄,裏面包含了程式全部資源和可執行檔。簡單來說,Mac下的軟體就像是Windows下的綠色軟體一樣,解壓後即可使用,不需要安裝,卸載的話也只用刪除程式檔即可(這裏不涉及pkg格式安裝包)。而ipa格式可以視為這種.app軟體的衍生物。
0 d' [1 {; |3 }
/ ~) c6 @; H/ p$ l  ipa檔實質是一個zip壓縮包(不是rar或7z包),包含3個元件:
$ P( r- l2 I+ j# {0 e5 r# V1 V5 \: B% j% G6 I
  payload目錄下的.app目錄,這個是軟體的主程序; 0 c/ W- G7 m1 R9 `# _- o, Q1 s! c
: l/ v6 `+ s3 K" x9 x4 P0 |
  iTunesArtwork,實質是一個無尾碼名的png圖片,用來在iTunes中顯示圖示;
+ m9 D, \+ k6 f" W8 C% S! |. G1 M! W2 c; `1 C# `5 H. U
  iTunesMetadata.plist,記錄購買者資訊、售價等資料。
: ~( ^! [2 m7 e$ {7 b: Y
; t2 E9 R$ L7 g+ i& I  由於zip包不能記錄許可權和所有者等資訊,所以蘋果規定了ipa的安裝方式,即全部ipa都會解包安裝在/var/mobile/Applications目錄下,全部檔和目錄的所有者及用戶組均設為mobile(ID為501),主程序(可執行檔)的許可權設為0755(所有人都可以執行,但只有所有者可以修改),可執行檔在plist中定義。全部目錄許可權設為0755,而其他所有檔都設為0644(僅所有者可以修改,其餘人只允許讀取,全部人都不允許執行)。
- s1 f/ `; `3 T3 d+ g, y' T. ~9 S$ x) Q$ ^+ V2 b2 t7 C6 `
  ipa解包後並非直接放置於Applications目錄下,而是放在一串由隨機碼構成的目錄下,其作用在於,只允許這個軟體運行在一個特定的沙盒(Sandbox)中,不能干擾其他軟體。因此那串隨機碼目錄下,除了ipa本身的三個組件之外,還有三個目錄:
: o7 A; V# j+ L3 r2 P7 E9 b9 l7 ?% y6 C
  Library,一般是用了儲存設置檔等資料;
6 `, \- X! q5 _  m/ d+ y7 ?" |$ f. e2 }6 g2 D
  Documents,存儲資料,多用了保存存檔;
3 {) X/ |" _) ~" J3 J6 s  S1 ]+ P& K9 Z$ @8 S8 Y' u
  tmp,暫存檔案夾。 5 j4 ]: c+ r2 F9 H3 Q
. b1 g& j5 Z+ l0 T; ^* C
  由於這個軟體只能在這個特定的目錄下運行(當然了,部分程式會調用系統的通訊錄、相機等元件,但仍然是受限制的),從而保證了整個系統的安全性和穩定性。
- F7 W8 ]: b) O( O
, l$ P7 J4 j9 O. a6 A  由於Unix系統下對許可權的規定相當嚴格,所以“越權”的行為是絕對不允許的。舉個例子,mobile用戶無權刪除root所有的檔,因為root的許可權高於mobile。所以有些人在修改ipa安裝後的檔時,比如進行漢化或者修改存檔,發現不能刪除乾淨軟體,或不能保存,這是因為刪除時不能刪除root所有的檔,程式本身也無法對root所有的存檔檔進行寫入操作。
5 h# m+ i  R5 L8 i+ X) _4 G% p" E  G6 j
  .pxl
. l6 J: C! o: E9 w5 X: E* X$ U( f$ S3 J9 C2 g) [; x" i" ]
  pxl格式在1.x時代是iPhone平臺上唯一的安裝格式,原因是那時候還沒有Cydia這樣的APT管理軟體,蘋果官方也沒有推出AppStore。由於在1.x時代積累了大量人氣,在接下來的AppStore時代中,pxl格式以其相對簡易的打包和安裝方式,仍然佔據了很大一部分市場。但隨著Installer的停止開發,iBrickr等軟體停止更新,目前唯一還在堅持使用pxl格式的就只剩下91一家了。 2 ]  K9 y0 E5 r: d5 ]# F' ^

7 |8 E% I& N7 a! i  pxl安裝包通常包含3個組件:
' B' {2 u: R4 d5 m. L) }9 i9 k4 ]# ]5 e( U  P" H
  PxlPkg.plist記錄程式檔的存放位置、所有者、許可權以及軟體標識等資訊;
9 P) b/ j0 B7 H8 T! ^; d5 O) A$ ^0 d! L3 @) ]% R" K# |
  PkgScript文件夾,存放安裝和卸載腳本;
3 D* B' b; w' g+ ?" V3 ~
8 Y3 |, {8 k/ g' U9 m6 h  程式檔。 : F& e+ i" i( W3 j) |

; e6 v9 R& d0 O% M" |+ v' d4 N  PxlPkg.plist檔的開頭通常是CFBundleIdentifier,記錄著軟體的唯一標識,以和其他軟體進行區分。RDPxlPackageVersion則記錄軟體版本。RDPxlPackageFireware被用來記錄可以運行的固件版本。其餘還有一些鍵值是用來記錄軟體介紹、網址、作者資訊等資料。
3 H) j5 n' h; X1 h5 U( ^( g5 N2 [0 r! ]: S1 v1 q0 O! ^/ E
  除了軟體標識、軟體版本和可用固件版本以外,PxlPkg.plist的核心部分就是RDPxlPackageFiles和RDPxlPackagePostflight兩項。RDPxlPackageFiles記錄了程式檔應該被複製到的路徑,並提供了是否覆蓋的參數:overwrite。而RDPxlPackagePostflight則記錄程式檔應該被賦予的所有者和許可權,分別以chown和chmod命令來實現。另外,對於含有安裝/卸載腳本的pxl來說,還會以sh命令執行相應的腳本Postflight和Preremove。 # x' n& z* f; g  d

* U/ y0 ^4 z" _( `: @( l  PkgScript通常包含兩個檔,安裝後執行的腳本Postflight和卸載前執行的腳本Preremove,這兩個腳本就是標準的LinuxShellScript,以sh命令執行。 ) n) i0 J- B% ~
, Z9 W9 L* K) B; A8 _
  安裝包的特點: / [) D" `% @8 m. S
% X- w$ p/ E( B0 ^
  .deb / w% o3 Y* ^2 Q! t% ?6 q
* e- H( n+ e4 }  M) C. w" n
  豐富的資源:Cydia上本身就不少,更何況任何格式的安裝包都可以轉換為deb。 / ?# E7 n+ Q* p1 G5 q  z
* y* g/ g5 a  S% B! p) t$ v2 w8 _
  相對方便的線上購買模式:CydiaStore,不過儘管沒有AppStore的5台設備的限制,但對國內用戶來說,付款方式比較困難。
8 }0 Z- g9 H+ F4 y& g- L5 _. d8 G; P- T
  破解難度較大,沒有使用AppStore的驗證方式,所以必須將驗證和防破解措施加入程式裏面,這樣就比較難破解,對軟體發展者來說是個好事。
1 I7 [+ ^- }% C" k1 R0 X$ O5 ^% V7 r' _" \
  完善的Unix檔系統支援:無需以命令設置檔的許可權、所有者和用戶組(當然也可以以腳本來設置)
" G3 L5 U9 J& ]" _
8 ]! ?* X& o2 i4 N: g. a+ \" T  `  完善的腳本支援:5個腳本依照安裝和卸載的先後順序執行,可以提供更多選擇。比如備份還原操作,可以在preinst中備份檔案,而在postrm中還原檔
4 p6 {! K4 S5 r4 x; S; \
) [0 I$ k" {1 C  嚴格的依賴關係:deb遵循嚴格的依賴關係(於Depends和Pre-Depends指定),可以確保軟體運行所必需的元件。線上安裝的時候會自動安裝所依賴的套裝軟體。卸載時也很重要,比如套裝軟體A依賴於B,當卸載B的時候會提示A依賴於B,卸載掉B的話會導致A不能用,這樣可以確保系統的完整性和穩定性。 4 d2 \+ \1 Y, R4 _4 R, n

/ q' N. z% i. Z# \, G  Conflicts、Replaces、Provides等鍵值的存在可以實現衝突提示或替換其他套裝軟體。
- e: J8 Z* y3 z- J' C2 T* B3 z4 x! _  w0 q, {; x% v) |0 ^4 V* v
  完全許可權:由於deb必須以最高許可權root的身份運行,deb可以對系統任何位置進行操作,換句話說,deb擁有對整個系統的完全控制,因此deb安裝包軟體可以實現很多ipa不能實現的功能。 2 s1 t% t$ e" u9 ~
7 |* L5 B( o3 d5 c: J0 T( B" I
  相對簡單的獲取方式(線上或離線)和安裝方式,也不用擔心在不同機器上同步會刪掉程式的問題。 7 v7 W5 g5 E, N
; u+ [/ ^% {4 F8 p' R$ ^$ T
  安裝相對簡單:其實無論是哪種安裝包,安裝方法都不算很複雜,只不過deb稍微複雜一些。 9 E8 K+ k9 u7 L  ?2 @) x

) g. F/ m& X5 P3 g" @8 ~2 G5 d+ M  deb的安裝方法大體有5種: / Y/ r7 f# q. Q- \

6 B: Y% O3 n+ E/ d  Cydia或同類APT管理軟體線上安裝,這個是最佳的安裝方式,因為通常無需考慮依賴關係,但缺點是對網路的要求比較高;
% t. {1 C9 f1 e5 s* z
& D4 K5 M7 J  _  命令行中以dpkg-iXXX.deb的形式安裝,好處是可以以通配符一次性安裝多個deb,而且也可以直接看到腳本的運行狀況和安裝成功/失敗的提示資訊,缺點是需要命令行軟體的支援,如Putty/WinSCP的控制臺/iSSH/MobileTerminal,很多人也不熟悉命令行下的操作。另外,安裝完後會不顯示圖示;
! c, n  y+ [" |* v, y4 u) i1 \5 d' j" Y" U& H3 H- W: O8 |- L$ {
  放置於AutoInstall目錄重啟安裝。該方法實際是Cydia提供的一個啟動腳本,在每次系統啟動時以dpkg命令安裝AutoInstall目錄下的deb,好處是不需要命令行操作,缺點是必須要重啟,有些甚至要重啟兩次,也會出現不顯示圖示的情況;
9 j+ f$ C& d5 i- s1 o' J7 k
( Q% q' S; O" b+ b* H! ?  利用iFile安裝,好處是圖形化操作,桌面會顯示圖示,缺點是不能一次安裝多個deb;
: g) G( m& Y" s' b( D' s# r+ J/ J+ N0 p! y& X- V9 ]% M
  用CyderII等軟體來安裝,其原理是類比一個APT軟體管理器來下載相應的deb檔並傳到設備,然後以前面幾種方式來安裝。 . m( V( M' Y8 D3 A

2 O+ J+ d6 |) C$ R8 _; ?. _  總體來說,deb的安裝都是依賴於dpkg-i命令來安裝,只不過有些是在命令行下輸入命令,有些是提供了圖形介面。但除了Cydia安裝一種方式之外,其餘幾種安裝方式都存在一些共有的問題: " C( A: w; t; {% J, Y
9 p% |- o" _& }
  不會自行搜索依賴關係,必須手動提供所依賴的deb; $ K# E+ E( U- i/ [, @, @5 G

8 O% y1 c! j) g: q. N/ l- m  Cydia會讀取安裝腳本裏的一些特殊語句,比如僅在全新安裝時執行而不在升級時執行,安裝完成後重啟SpringBoard或設備等等。
) X3 D& S6 q9 g3 j! }) X, k
7 {; T' z# R3 L2 V7 @; P9 }  當然了,deb軟體的卸載也比較簡單,有兩種方式:
! X- y% F+ V9 _( @- y- F* }
! `( a( n2 Q# a; p3 C  Cydia裏卸載,優點是卸載過程和提示資訊很詳細,全圖形介面操作,同時也提供了重新安裝的選項;
( |6 E( {5 C; N' D/ Z- U! E% A) s
8 f6 D! E/ F: N( _1 z  以dpkg-rPackage_ID命令或dpkg-PPackage_ID命令來卸載(詳情後面會說);
& i- B7 M2 u2 m4 E( R$ Z. T- o. C- O; H. Y( s; E  l
  Cydelete來卸載,優點是可以直接在桌面上卸載有圖示的軟體,但對那些沒有圖示的無能為力。 ; I- M8 p( }( w( }

- V  R# ~4 v6 V  其實,不管是安裝還是刪除,都可以才要全手動的方法。即,解包deb之後,自己將檔放到相應位置,然後設置許可權等並執行腳本。但這樣有必要麼?   L- Y+ v3 E2 j# T7 ^: t$ S6 C
+ b  ^- p1 [: ]# \7 E- B0 b- ^
  deb的安裝過程如下:
4 Z7 Y  b9 E6 j0 A( q$ y  p+ f6 O& f0 h! k7 |
  讀取資料庫並鎖定,避免同時有兩個安裝程式在運行   q+ ^" y. h3 B) c. ~+ w
5 \: w$ T. ^& G6 K/ J1 D. W) |1 }& f
  讀取control中的Package(套裝軟體標識)和版本資訊,並搜索資料庫,若已存在,則卸載之後再安裝;
. d& ^1 C2 U4 r$ |/ Q8 v3 p1 x% J6 x+ J2 J
  檢查Depends,Pre-Depends,Conflicts和Replaces,如果檢測到已存在Conflicts中存在的軟體,則報錯並終止安裝。如未找到Pre-Depends指定的軟體,則報錯並終止安裝。如找到Replaces中指定的軟體,則卸載之; & F+ i# D4 n6 i/ h

/ Q0 X6 r/ e+ n$ f9 z+ s: [  將資料寫入/var/lib/dpkg/status檔中;
8 F6 |5 b8 |  {& B) t/ g* y2 o/ A! z5 u
  執行preinst腳本(如果有); + W4 Q7 A7 ?3 X" |5 S( N; s
/ b4 N8 l" P* ]. u' N3 p( i
  解包data.tar.gz,將檔放置於相應位置,並將檔列表寫入/var/lib/dpkg/info/XXX.list; 3 d0 Q- Y2 E3 q  P0 d# {4 t
5 K: y1 B6 Z5 y: W; G+ D
  運行postinst和extrainst_腳本(如果有);
, A& f$ j% \) d# W# U5 _) ~$ U9 F$ `' \7 o- v1 L
  如果之前的安裝都沒有出錯,即安裝成功,那麼會在status檔中寫入Status:installokinstalled資訊,否則會寫入其他狀態資料,比如Unpacked(未解包資料)、Failed-config(腳本未能成功執行)、Half-installed(安裝失敗等); 2 C; ]& y8 I( a6 P, t7 I
8 w. I& E# R+ y7 _8 o  t# e
  重新載入資料庫並解除鎖定。
, @# v9 R0 m& L/ [4 i7 r3 E- N
) h9 ^* }0 O8 {5 |3 y9 ^+ s! I: F& z  deb的卸載過程如下:
; \  D$ m7 w3 n- U! ]! E5 i$ o
) c: }% s6 @# b; G" J9 k  讀取資料庫並鎖定;
7 [5 h7 f# s; Y! Z- R- e2 h5 a- e7 i% i
  根據軟體標識搜尋資料庫;
3 [: e0 k8 A0 I# l& |0 y6 X" Y4 i
  檢查是否有軟體依賴於待卸載的軟體,如果有則提示,並中斷卸載; 0 W: }7 I, }1 P, l3 G! v0 ~
" i+ |( X- i6 T
  執行prerm腳本(如果有);
' g8 B7 o5 q4 u) E: j: f( B8 N- U: `
  讀取/var/lib/dpkg/info/XXX.list檔,並刪除list檔中記錄的全部檔和非空檔夾;
+ [" F9 `& `: _: F+ Q3 E, |
7 c5 g0 p# G/ q  V  運行postrm腳本; ! x+ o- y9 u0 `; `$ K
9 h! p$ N- Y3 c' c* L% t
  如果卸載命令是dpkg-r,則保留status中的記錄並改為Status:Notinstalled;如果卸載命令是dpkg-P,則刪除全部資料;
. X/ w: k/ N- ]( h& I8 h. Y. j" g8 r4 H: T' C* d" W$ X
  如果卸載過程沒有錯誤的話,重新讀取資料庫並解除鎖定。 9 x5 j2 S' {4 Z& Z# Y+ k7 L
9 D! R* U# c1 [& ~& y2 z) @
  由於deb安裝的軟體可能會在運行時在/var/mobile/Documents下放置存檔檔,或在/var/mobile/Library/Preferences下放置設置檔,而這些檔並沒有記錄在list檔裏,所以卸載的時候不會被刪除。
$ J. ?5 Z* r5 P" R  D0 A3 K' ?# p. S0 v
  .ipa / v- p0 w( c7 Q% c+ N& j# Y2 Q

) e" B$ {0 x" X  豐富的資源:AppStore上那麼多資源,apptrackr等網站也提供了很多破解版。
# d' P2 A2 k) L
6 b; w' T0 M! f% F+ P  完善的更新、後期服務。 / u; W; B  |# D8 a

* U2 Z: r! q. L4 s: q' J, Z  只能使用最小許可權,保障安全性。 2 R/ s9 ?+ _/ O3 g& Y

5 d0 N3 J4 e& U: Y$ x  不涉及系統級的操作,所以一般不容易造成死機或白蘋果(有些是因為資源消耗太大所以卡死)。
4 L& P$ X/ O/ V
5 C: U3 d  C( [) m. O2 [  便捷的安裝方式,無論是直接在設備上用AppStore安裝,還是用iTunes來同步,抑或是用Installous和91這類第三方軟體來安裝,都是很方便快速的安裝方式。 * m$ f1 @: {+ _1 [/ o4 F: g
7 I" O$ v7 N: {. ]0 k- ?  z0 \1 o  ?( Y
  超級簡單的卸載方式:還有什麼比只需要點一個X就能卸載更簡單呢? - G  @* Z& }, y

+ [5 U( a: n% I: q2 K( ^' a* X  u8 `0 H  完全刪除,不會留下任何垃圾檔(如存檔、設置檔等) 2 ^. F' o8 a( |9 I$ V9 M" ?

2 ?: E! v: X# c3 a  ?! q  總體來說破解還是比較容易的,但現在越來越多軟體加入了防破解措施。 " G' ?+ j) P2 Q, A
! R7 K) q' D$ G$ P
  之前提到過,ipa軟體是被安裝在一個類似于沙盒的環境中,除了能對/var/mobile/Media/DCIM目錄(拍照、截圖存放目錄)進行操作,或是調用壁紙、鈴聲、相機等元件,不能對系統進行任何干涉,這樣在最大程度上保證了系統的穩定運行,也不會干擾其他軟體的正常使用。但問題是,由於ipa軟體的許可權很低,想要對系統進行修改,尤其是應用補丁時,ipa就無能為力了。
. N7 G7 U: p# b9 G% `6 U- p0 ^6 j& e( g+ ^! F$ n$ K
  ipa軟體官方的安裝方式有兩種,一是在AppStore這個軟體中下載安裝,二是用iTunes同步。
) C* B; r- k' h- ]& q
" h  j* Z% Y' i$ ~6 ]6 v) @  前者的問題主要是網路問題,網速不好很容易安裝失敗;GPRS之類的上網安裝又很耗流量。後者的問題主要是不能在不同系統下使用(包含不同電腦和同一部電腦上的不同系統),在其他系統上同步會抹掉原有的軟體。當然了,iTunes每次同步時間比較長也是經常被人詬病的。尤其是當安裝軟體比較多的時候,每次同步之前的備份需要很長很長時間,這個很噁心(不過可以直接X掉備份操作)。
0 Z2 \+ T6 u: h4 ~( K' A2 K8 n6 k
! ^  e, K/ M$ U6 s1 _/ R$ F3 o! ?7 `  由於以上兩種方式存在一些問題,所以很多人會選擇使用Installous或91來安裝ipa,這也確實是個不錯的選擇。
% J6 J3 T9 j; q7 w9 Y0 b7 U# Y% |9 V/ `. o% q3 n; y0 H
  Installous一般沒什麼問題,但對部分驗證比較嚴格的ipa處理不是很好。雖然Installous基本能代替iTunes,但畢竟不完全等同。最典型的就是Installous安裝Microsoft官方出的LiveMessenger(正版,非破解版)時不能運行。實際上Installous對很多未破解的正版軟體支援不是很好。
3 ~; I* A* g! `& _2 m. k
4 Z3 ?5 d* a7 l7 N) X+ g  至於91,經常被人批評。91雖然可以安裝ipa,但除了Installous都有的正版軟體的支援問題外,由於91的安裝機制有缺陷,軟體不能實現多語言,只會使用英文介面,而忽略掉zh_CN.lproj,zh_TW.lproj這些語言包。這對那些用希望使用漢化版的人來說實在是一個悲劇。所以通常是要避免使用91來安裝ipa的。
  {; g4 [) r7 I" _7 b' W6 X5 ^8 b' N
' z) l+ ?( s4 R) Q# }0 \  至於卸載,三種方法: 1 T' g# H2 G7 o( `4 U

2 Q5 b4 Z  |+ m: ^+ U& j  設備上按住圖示直到開始晃動,點擊圖示左上角的X即可卸載; " `& L8 W: k/ n9 J/ S5 u- X2 v
: i$ |. d6 h3 B6 M( l2 i; R
  於iTunes中取消選中,然後同步
& V9 |2 K+ C8 b, \' m( o, |# b; \0 v
  找到/var/mobile/Applications下的相應目錄,強行刪除整個檔夾。這個在前面兩種方法無法使用是可以採用(有時候卸載體積太大的軟體,比如超過1G,因為刪除過程太長導致失去回應並刪除失敗。),但這種方法會造成系統的不穩定。除非是確實碰到了問題,否則強烈建議不要使用。 3 n' s7 z' `7 P( j6 U

" f( x/ y- B# p' v( F  .pxl
# `. F% n$ N, o
/ {) J8 v4 j  k& I  嚴格來說,pxl格式的資源並不算多,但也不少。現在使用pxl格式的絕大多數都是91的用戶。
+ H; }: a/ I+ M5 x, H6 h5 |5 u' l6 e% w
  從時效性上來說,很多軟體(主要是AppStore上的)一被人破解就馬上會被人轉成pxl格式,這樣來說,pxl格式的更新還是不錯的。
) m! F6 \, A. a( H& R! y. ^: H. c' j  G( q# s! }9 D
  由於91手機助手沒有iTunes同步會抹掉軟體的問題,加上其他一些比較方便的功能,使得很多新手都是從91開始瞭解並熟悉iPhone/iPodTouch的使用。其結果是,pxl格式依賴于91而生存。 , a, G3 ?5 s" G2 ^
% r" O9 P7 f! U& [+ @6 b
  pxl格式的流行也不是歷史的遺物,而是符合市場規律的需求。91助手的便捷的軟體管理方式(尤其是支援WiFi管理),加上免費的旗號,使得pxl格式在新手中很受歡迎。 , V# p) Q  O9 S& p- {5 U

9 \6 F8 d& D+ }) C7 F8 C6 T  實際上,pxl格式和deb格式具有的功能完全一樣。雖然pxl不能記錄檔的許可權等資料,但完全可以用腳本來彌補。即是說,pxl格式和deb格式其實是不相伯仲的。而且因為pxl格式的製作並不需要比較少見的Unix環境,尤其是Debian環境,其本身是優於deb格式的。
( U* C' n# }9 X5 k% ]; g/ f6 o. i" N
  但為什麼現在很多人都經常在說不要使用pxl呢?我個人認為,原因主要有以下幾個:
: v+ b# J: S3 }# U/ e9 ~8 S2 z+ v& c8 H' ]% \- L- c9 A
  資源的局限性:除了91公司自己開發的幾個軟體之外,其餘所有軟體都是從deb和ipa轉換而來。如果原版軟體沒破解,pxl無能為力(比如Microsoft官方出的LiveMessenger和Cydia上一眾沒被破解的軟體);
, c1 Z7 u0 n, i9 e- X0 r; v4 J7 g; }. R8 o7 J
  資源時效性:跟上面一點相似,pxl格式大部分是從其他格式轉換而來,跟原版相比總是會慢一些,尤其是當無法破解時,pxl根本就出不來; 6 o: E6 f7 U( y+ Z( t7 K5 a" P* [$ G5 p

' M4 _  K7 c0 z6 `4 w  打包人水準有限:現在很多人都是直接用91助手來打包pxl。對大部分只有一個XXX.app目錄的程式來說一般不會有問題,但若遇見那些對檔許可權等資料有嚴格要求的軟體(比如可執行檔沒有可執行許可權,或是mobile用戶不能改寫root所有的檔等等),或是需要比較複雜的腳本才能運行的軟體,往往pxl製作者並沒有能力去製作一個完善的pxl出來,這樣也導致了許多安裝使用上的問題; & J* @3 U, ^( }6 @5 s# ~; K, E

2 j) c$ C) U& `# K) U5 f* E$ `  安全性:絕大部分人在製作pxl的時候都習慣用chmod-R命令來將整個XXX.app目錄及其中的全部檔和子目錄設為755/775/777許可權,而這種行為會造成一定的安全隱患。關於這些數位的意思請自行搜索相關資料。這裏簡單說明一下。644屬性表示僅有該檔的所有人才可以進行改寫操作,其餘任何人都只能讀取,任何人都不能執行這個檔。755和775是在644的基礎上加入了可執行許可權,755是該檔所在的用戶組的所有人都可以改寫。而777許可權則標識任何人都可以改寫並執行。由於mobile本身是受限帳戶,如果使用777許可權的話,有機會通過這個漏洞來獲取整個系統的控制權。只不過因為iPhone系統相對封閉,也不太有機會造成損失。但採用775和777許可權是不應該的;
# R* F& @( k$ q& G; U% q) L! |8 f/ b+ P+ k2 M) Y
  ipa轉pxl的存檔問題:不少人都有這樣的經歷,在遊戲A存檔之後再進遊戲B,存檔B之後再進A,發現A的存檔已經不在了。原因在於,ipa轉換成的pxl軟體,存檔全部是放在/var/mobile/Documents目錄下,而正好有兩個軟體的存檔檔案名相同(最常見的就是data.sav或save.data),互相改寫之後導致不能讀取。這種問題也發生在ipa轉deb上,而且無法解決; * v; E1 M4 Q2 i7 r. n1 x4 W* K* Z+ C

+ y# X( G* f* J, F* o9 \3 c7 D7 _$ {  無法完整刪除:卸載pxl格式時,不會刪除存檔檔、配置檔、暫存檔案等資料,長期使用會導致可用空間減少; ( `8 N3 a+ N' a4 c: P8 w

$ G! c* l) f( ]; j% M( e0 _  在部分機型上存在相容問題:有些機器越獄後並沒有將系統分區中的/Applications目錄轉移到/var/stash的用戶分區中。由於系統分區的可用空間很少(默認500MB,通常可用空間不超過50MB),強行往/Applications裏安裝會導致剩餘空間消耗殆盡或安裝失敗。 : l' I( E6 r- {8 C0 C9 K7 Q
! R" x& F, E! m2 ]
  由此可以看出,pxl格式的問題更多不是pxl本身的問題,而是打包者的問題以及安裝方式的缺陷所致。
0 d+ b7 [% |7 C! i6 n, B9 G
* ^3 L+ f- D5 F/ X9 H: U  另外要指出的是,pxl最大的提供者,91,經常是轉載他人發佈的軟體(包括網友自己購買破解的,或Cydia上直接下載的)然後當作自己發佈的軟體,對版權問題完全不在意,這樣也引起了很多人,尤其是原發佈者的反感。這種赤裸裸的剽竊行為實在是令人不恥。正因為這樣,很多人是因為不爽91而不爽pxl,這實在是冤枉pxl格式本身了。 , b& H$ B6 V' i" Y  V, ?: d/ p

5 P! F; Q3 o2 r  Q5 T4 W0 M  總結: & X% F' i5 g/ q
% b- e3 W+ f) z
  一般的軟體還是儘量用ipa格式,不要使用ipa轉換成的deb或pxl格式,這樣可以確保相容性和安全性。而在系統級的程式(如SBSettings和輸入法),ipa是絕無能力的,那麼最好的選擇還是deb。pxl作為快被淘汰的格式,還是果斷的放棄比較好。 / r7 C5 r; K7 ]

  Q" f2 {3 L7 D6 ?  至於ipa和deb的安裝方式,ipa的安裝首選iTunes同步和AppStore線上安裝,次選Installous,以保證最佳相容性。deb的安裝首選Cydia線上安裝,次選除91外的其他任何安裝方式。 9 X& q# Q3 i2 s5 O# g: k
4 Z: f$ h- b6 f! |. L
  任何情況下都不推薦用91來安裝ipa和deb,因為91的安裝機制並不完善,很容易出問題。 & ~' n) D0 F6 l$ S* K: E) z" i/ |
1 d) Q% g' v6 e) q: R" l

  i3 v0 j4 P2 A; Y! Y本文是原樣轉過來的,甚至字體以及顏色都沒有更改。主要是為了方便機友查閱,也好進行更進一步的操作。感謝威鋒網,感謝作者autopear。
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 23-11-2024 01:33 , Processed in 0.323018 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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