iOS 平臺(tái)上常見(jiàn)的安裝包有三種:deb ipa pxl
deb格式是 Debian 系統(tǒng)(包含 Debian 和 Ubuntu )專屬安裝包格式,配合 APT 軟件管理系統(tǒng),成為了當(dāng)前在 Linux 下非常流行的一種安裝包。進(jìn)入 2.x 時(shí)代之后有 Cydia 作者 Jay Freeman(saurik) 移植到 iPhone 平臺(tái)上,一起的還有 APT 軟件管理系統(tǒng)。
ipa 格式則是蘋(píng)果在 iOS 平臺(tái)上推出的專屬軟件安裝包,在2.0固件開(kāi)始才正式使用,是目前 iPhone/iPod Touch/iPad 平臺(tái)上唯一的官方安裝包。
pxl格式則起源于 Mac 系統(tǒng)上的 pkg 安裝包,被廣泛應(yīng)用于1.x固件時(shí)代,曾經(jīng)是 iPhone 平臺(tái)上唯一的軟件安裝包,現(xiàn)在仍在被91等軟件所使用。
基本概述
關(guān)于deb格式
deb 是 Unix 系統(tǒng)(其實(shí)主要是 Linux )下的安裝包,基于 tar 包,因此本身會(huì)記錄文件的權(quán)限(讀/寫(xiě)/可執(zhí)行)以及所有者/用戶組。由于 Unix 類系統(tǒng)對(duì)權(quán)限、所有者、組的嚴(yán)格要求,而 deb 格式安裝包又經(jīng)常會(huì)涉及到系統(tǒng)比較底層的操作,所以權(quán)限等的設(shè)置尤其重要。
deb 包本身有三部分組成:
數(shù)據(jù)包,包含實(shí)際安裝的程序數(shù)據(jù),文件名為 data.tar.XXX;
安裝信息及控制腳本包,包含 deb 的安裝說(shuō)明,標(biāo)識(shí),腳本等,文件名為 control.tar.gz;
最后一個(gè)是 deb 文件的一些二進(jìn)制數(shù)據(jù),包括文件頭等信息,一般看不到,在某些軟件中打開(kāi)可以看到。
deb 本身可以使用不同的壓縮方式。tar 格式并不是一種壓縮格式,而是直接把分散的文件和目錄集合在一起,并記錄其權(quán)限等數(shù)據(jù)信息。之前提到過(guò)的 data.tar.XXX,這里 XXX 就是經(jīng)過(guò)壓縮后的后綴名。deb 默認(rèn)使用的壓縮格式為 gzip 格式,所以最常見(jiàn)的就是 data.tar.gz。常有的壓縮格式還有 bzip2 和 lzma,其中 lzma 壓縮率最高,但壓縮需要的 CPU 資源和時(shí)間都比較長(zhǎng)。
data.tar.gz包含的是實(shí)際安裝的程序數(shù)據(jù),而在安裝過(guò)程中,該包里的數(shù)據(jù)會(huì)被直接解壓到根目錄(即 / ),因此在打包之前需要根據(jù)文件所在位置設(shè)置好相應(yīng)的文件/目錄樹(shù)。
而 control.tar.gz 則包含了一個(gè) deb 安裝的時(shí)候所需要的控制信息。一般有 5 個(gè)文件:
control,用了記錄軟件標(biāo)識(shí),版本號(hào),平臺(tái),依賴信息等數(shù)據(jù);
preinst,在解包 data.tar.gz 前運(yùn)行的腳本;
postinst,在解包數(shù)據(jù)后運(yùn)行的腳本;
prerm,卸載時(shí),在刪除文件之前運(yùn)行的腳本;
postrm,在刪除文件之后運(yùn)行的腳本;
在 Cydia 系統(tǒng)中,Cydia 的作者 Saurik 另外添加了一個(gè)腳本,extrainst_,作用與 postinst 類似。
關(guān)于ipa格式
使用過(guò) Mac OS 的人可能都知道,Mac 下的軟件大部分都只有一個(gè) .app 目錄,里面包含了程序全部資源和可執(zhí)行文件。簡(jiǎn)單來(lái)說(shuō),Mac 下的軟件就像是 Windows 下的綠色軟件一樣,解壓后即可使用,不需要安裝,卸載的話也只用刪除程序文件即可(這里不涉及 pkg 格式安裝包)。而 ipa 格式可以視為這種 .app 軟件的衍生物。
ipa 文件實(shí)質(zhì)是一個(gè) zip 壓縮包(不是 rar 或 7z 包),包含 3 個(gè)組件:
payload 目錄下的 .app 目錄,這個(gè)是軟件的主程序;
iTunesArtwork,實(shí)質(zhì)是一個(gè)無(wú)后綴名的 png 圖片,用來(lái)在 iTunes 中顯示圖標(biāo);
iTunesMetadata.plist,記錄購(gòu)買(mǎi)者信息、售價(jià)等數(shù)據(jù)。
由于 zip 包不能記錄權(quán)限和所有者等信息,所以蘋(píng)果規(guī)定了 ipa 的安裝方式,即全部 ipa 都會(huì)解包安裝在 /var/mobile/Applications 目錄下,全部文件和目錄的所有者及用戶組均設(shè)為 mobile(ID 為 501),主程序(可執(zhí)行文件)的權(quán)限設(shè)為 0755 (所有人都可以執(zhí)行,但只有所有者可以修改),可執(zhí)行文件在 plist 中定義。全部目錄權(quán)限設(shè)為 0755,而其它所有文件都設(shè)為 0644(僅所有者可以修改,其余人只允許讀取,全部人都不允許執(zhí)行)。
ipa 解包后并非直接放置于 Applications 目錄下,而是放在一串由隨機(jī)碼構(gòu)成的目錄下,其作用在于,只允許這個(gè)軟件運(yùn)行在一個(gè)特定的沙盒(Sandbox)中,不能干擾其他軟件。因此那串隨機(jī)碼目錄下,除了 ipa 本身的三個(gè)組件之外,還有三個(gè)目錄:
Library,一般是用了儲(chǔ)存設(shè)置文件等數(shù)據(jù);
Documents,存儲(chǔ)數(shù)據(jù),多用了保存存檔;
tmp,臨時(shí)文件夾。
由于這個(gè)軟件只能在這個(gè)特定的目錄下運(yùn)行(當(dāng)然了,部分程序會(huì)調(diào)用系統(tǒng)的通訊錄、相機(jī)等組件,但仍然是受限制的),從而保證了整個(gè)系統(tǒng)的安全性和穩(wěn)定性。
由于 Unix 系統(tǒng)下對(duì)權(quán)限的規(guī)定相當(dāng)嚴(yán)格,所以“越權(quán)”的行為是絕對(duì)不允許的。舉個(gè)例子,mobile 用戶無(wú)權(quán)刪除 root 所有的文件,因?yàn)?root 的權(quán)限高于 mobile。所以有些人在修改 ipa 安裝后的文件時(shí),比如進(jìn)行漢化或者修改存檔,發(fā)現(xiàn)不能刪除干凈軟件,或不能保存,這是因?yàn)閯h除時(shí)不能刪除 root 所有的文件,程序本身也無(wú)法對(duì) root 所有的存檔文件進(jìn)行寫(xiě)入操作。
關(guān)于pxl格式
pxl 格式在1.x時(shí)代是 iPhone 平臺(tái)上唯一的安裝格式,原因是那時(shí)候還沒(méi)有 Cydia 這樣的 APT 管理軟件,蘋(píng)果官方也沒(méi)有推出 App Store。由于在1.x時(shí)代積累了大量人氣,在接下來(lái)的 App Store 時(shí)代中,pxl 格式以其相對(duì)簡(jiǎn)易的打包和安裝方式,仍然占據(jù)了很大一部分市場(chǎng)。但隨著 Installer 的停止開(kāi)發(fā),iBrickr 等軟件停止更新,目前唯一還在堅(jiān)持使用 pxl 格式的就只剩下91一家了。
pxl 安裝包通常包含3個(gè)組件:
PxlPkg.plist 記錄程序文件的存放位置、所有者、權(quán)限以及軟件標(biāo)識(shí)等信息;
PkgScript文 件夾,存放安裝和卸載腳本;
程序文件。
PxlPkg.plist 文件的開(kāi)頭通常是 CFBundleIdentifier,記錄著軟件的唯一標(biāo)識(shí),以和其他軟件進(jìn)行區(qū)分。RDPxlPackageVersion 則記錄軟件版本。RDPxlPackageFireware 被用來(lái)記錄可以運(yùn)行的固件版本。其余還有一些鍵值是用來(lái)記錄軟件介紹、網(wǎng)址、作者信息等數(shù)據(jù)。
除了軟件標(biāo)識(shí)、軟件版本和可用固件版本以外,PxlPkg.plist 的核心部分就是 RDPxlPackageFiles 和 RDPxlPackagePostflight 兩項(xiàng)。RDPxlPackageFiles 記錄了程序文件應(yīng)該被復(fù)制到的路徑,并提供了是否覆蓋的參數(shù): overwrite。而 RDPxlPackagePostflight 則記錄程序文件應(yīng)該被賦予的所有者和權(quán)限,分別以 chown 和 chmod 命令來(lái)實(shí)現(xiàn)。另外,對(duì)于含有安裝/卸載腳本的 pxl 來(lái)說(shuō),還會(huì)以 sh 命令執(zhí)行相應(yīng)的腳本 Postflight 和 Preremove。
PkgScript 通常包含兩個(gè)文件,安裝后執(zhí)行的腳本 Postflight 和卸載前執(zhí)行的腳本 Preremove,這兩個(gè)腳本就是標(biāo)準(zhǔn)的 Linux Shell Script,以 sh 命令執(zhí)行。
2.特點(diǎn)
deb的特點(diǎn)
豐富的資源:Cydia 上本身就不少,更何況任何格式的安裝包都可以轉(zhuǎn)換為 deb。
相對(duì)方便的在線購(gòu)買(mǎi)模式:Cydia Store,不過(guò)盡管沒(méi)有 App Store 的5臺(tái)設(shè)備的限制,但對(duì)國(guó)內(nèi)用戶來(lái)說(shuō),付款方式比較困難。
破解難度較大,沒(méi)有使用 App Store 的驗(yàn)證方式,所以必須將驗(yàn)證和防破解措施加入程序里面,這樣就比較難破解,對(duì)軟件開(kāi)發(fā)者來(lái)說(shuō)是個(gè)好事。
完善的 Unix 文件系統(tǒng)支持:無(wú)需以命令設(shè)置文件的權(quán)限、所有者和用戶組(當(dāng)然也可以以腳本來(lái)設(shè)置)
完善的腳本支持:5個(gè)腳本依照安裝和卸載的先后順序執(zhí)行,可以提供更多選擇。比如備份還原操作,可以在 preinst 中備份文件,而在 postrm 中還原文件
嚴(yán)格的依賴關(guān)系:deb 遵循嚴(yán)格的依賴關(guān)系(于 Depends 和 Pre-Depends 指定),可以確保軟件運(yùn)行所必需的組件。在線安裝的時(shí)候會(huì)自動(dòng)安裝所依賴的軟件包。卸載時(shí)也很重要,比如軟件包 A 依賴于 B,當(dāng)卸載 B 的時(shí)候會(huì)提示 A 依賴于 B,卸載掉 B 的話會(huì)導(dǎo)致 A 不能用,這樣可以確保系統(tǒng)的完整性和穩(wěn)定性。
完全權(quán)限:由于 deb 必須以最高權(quán)限 root 的身份運(yùn)行,deb可以對(duì)系統(tǒng)任何位置進(jìn)行操作,換句話說(shuō),deb 擁有對(duì)整個(gè)系統(tǒng)的完全控制,因此 deb 安裝包軟件可以實(shí)現(xiàn)很多 ipa 不能實(shí)現(xiàn)的功能。
相對(duì)簡(jiǎn)單的獲取方式(在線或離線)和安裝方式,也不用擔(dān)心在不同機(jī)器上同步會(huì)刪掉程序的問(wèn)題。
安裝相對(duì)簡(jiǎn)單:其實(shí)無(wú)論是哪種安裝包,安裝方法都不算很復(fù)雜,只不過(guò) deb 稍微復(fù)雜一些。
deb 的安裝方法大體有 5 種:
Cydia 或同類 APT 管理軟件在線安裝,這個(gè)是最佳的安裝方式,因?yàn)橥ǔo(wú)需考慮依賴關(guān)系,但缺點(diǎn)是對(duì)網(wǎng)絡(luò)的要求比較高;
命令行中以 dpkg -i XXX.deb 的形式安裝,好處是可以以通配符一次性安裝多個(gè) deb,而且也可以直接看到腳本的運(yùn)行狀況和安裝成功/失敗的提示信息,缺點(diǎn)是需要命令行軟件的支持,如 Putty/WinSCP的控制臺(tái)/iSSH/MobileTerminal,很多人也不熟悉命令行下的操作。另外,安裝完后會(huì)不顯示圖標(biāo);
放置于 AutoInstall 目錄重啟安裝。該方法實(shí)際是 Cydia 提供的一個(gè)啟動(dòng)腳本,在每次系統(tǒng)啟動(dòng)時(shí)以 dpkg 命令安裝
AutoInstall 目錄下的 deb,好處是不需要命令行操作,缺點(diǎn)是必須要重啟,有些甚至要重啟兩次,也會(huì)出現(xiàn)不顯示圖標(biāo)的情況;
利用 iFile 安裝,好處是圖形化操作,桌面會(huì)顯示圖標(biāo),缺點(diǎn)是不能一次安裝多個(gè) deb;
用 Cyder II 等軟件來(lái)安裝,其原理是模擬一個(gè) APT 軟件管理器來(lái)下載相應(yīng)的 deb 文件并傳到設(shè)備,然后以前面幾種方式來(lái)安裝。
總體來(lái)說(shuō),deb 的安裝都是依賴于 dpkg -i 命令來(lái)安裝,只不過(guò)有些是在命令行下輸入命令,有些是提供了圖形界面。但除了 Cydia 安裝一種方式之外,其余幾種安裝方式都存在一些共有的問(wèn)題:
不會(huì)自行搜索依賴關(guān)系,必須手動(dòng)提供所依賴的 deb;
Cydia 會(huì)讀取安裝腳本里的一些特殊語(yǔ)句,比如僅在全新安裝時(shí)執(zhí)行而不在升級(jí)時(shí)執(zhí)行,安裝完成后重啟 SpringBoard 或設(shè)備等等。
當(dāng)然了,deb 軟件的卸載也比較簡(jiǎn)單,有三種方式:
Cydia 里卸載,優(yōu)點(diǎn)是卸載過(guò)程和提示信息很詳細(xì),全圖形界面操作,同時(shí)也提供了重新安裝的選項(xiàng);
以 dpkg -r Package_ID 命令或 dpkg -P Package_ID 命令來(lái)卸載(詳情后面會(huì)說(shuō));
Cydelete 來(lái)卸載,優(yōu)點(diǎn)是可以直接在桌面上卸載有圖標(biāo)的軟件,但對(duì)那些沒(méi)有圖標(biāo)的無(wú)能為力。
其實(shí),不管是安裝還是刪除,都可以才要全手動(dòng)的方法。即,解包 deb 之后,自己將文件放到相應(yīng)位置,然后設(shè)置權(quán)限等并執(zhí)行腳本。但這樣有必要么?
deb 的安裝過(guò)程如下:
讀取數(shù)據(jù)庫(kù)并鎖定,避免同時(shí)有兩個(gè)安裝程序在運(yùn)行
讀取 control 中的 Package(軟件包標(biāo)識(shí))和版本信息,并搜索數(shù)據(jù)庫(kù),若已存在,則卸載之后再安裝;
檢查 Depends, Pre-Depends, Conflicts 和 Replaces,如果檢測(cè)到已存在 Conflicts 中存在的軟件,則報(bào)錯(cuò)并終止安裝。如未找到 Pre-Depends 指定的軟件,則報(bào)錯(cuò)并終止安裝。如找到 Replaces 中指定的軟件,則卸載之;
將數(shù)據(jù)寫(xiě)入 /var/lib/dpkg/status 文件中;
執(zhí)行 preinst 腳本(如果有);
解包 data.tar.gz,將文件放置于相應(yīng)位置,并將文件列表寫(xiě)入 /var/lib/dpkg/info/XXX.list;
運(yùn)行 postinst 和 extrainst_ 腳本(如果有);
如果之前的安裝都沒(méi)有出錯(cuò),即安裝成功,那么會(huì)在 status 文件中寫(xiě)入 Status: install ok installed 信息,否則會(huì)寫(xiě)入其它狀態(tài)數(shù)據(jù),比如 Unpacked (未解包數(shù)據(jù))、Failed-config(腳本未能成功執(zhí)行)、Half-installed(安裝失敗等);
重新加載數(shù)據(jù)庫(kù)并解除鎖定。
deb 的卸載過(guò)程如下:
讀取數(shù)據(jù)庫(kù)并鎖定;
根據(jù)軟件標(biāo)識(shí)搜尋數(shù)據(jù)庫(kù);
檢查是否有軟件依賴于待卸載的軟件,如果有則提示,并中斷卸載;
執(zhí)行 prerm 腳本(如果有);
讀取 /var/lib/dpkg/info/XXX.list 文件,并刪除 list 文件中記錄的全部文件和非空文件夾;
運(yùn)行 postrm 腳本;
如果卸載命令是 dpkg -r,則保留 status 中的記錄并改為 Status: Not installed;如果卸載命令是 dpkg -P,則刪除全部數(shù)據(jù);
如果卸載過(guò)程沒(méi)有錯(cuò)誤的話,重新讀取數(shù)據(jù)庫(kù)并解除鎖定。
由于 deb 安裝的軟件可能會(huì)在運(yùn)行時(shí)在 /var/mobile/Documents 下放置存檔文件,或在 /var/mobile/Library/Preferences 下放置設(shè)置文件,而這些文件并沒(méi)有記錄在 list 文件里,所以卸載的時(shí)候不會(huì)被刪除。
ipa的特點(diǎn)
豐富的資源:App Store 上那么多資源,apptrackr 等網(wǎng)站也提供了很多破解版。
完善的更新、后期服務(wù)。
只能使用最小權(quán)限,保障安全性。
不涉及系統(tǒng)級(jí)的操作,所以一般不容易造成死機(jī)或白蘋(píng)果(有些是因?yàn)橘Y源消耗太大所以卡死)。
便捷的安裝方式,無(wú)論是直接在設(shè)備上用App Store安裝,還是用 iTunes 來(lái)同步,抑或是用 Installous 和 91 這類第三方軟件來(lái)安裝,都是很方便快速的安裝方式。
超級(jí)簡(jiǎn)單的卸載方式:還有什么比只需要點(diǎn)一個(gè) X 就能卸載更簡(jiǎn)單呢?
完全刪除,不會(huì)留下任何垃圾文件(如存檔、設(shè)置文件等)
總體來(lái)說(shuō)破解還是比較容易的,但現(xiàn)在越來(lái)越多軟件加入了防破解措施。
之前提到過(guò),ipa 軟件是被安裝在一個(gè)類似于沙盒的環(huán)境中,除了能對(duì) /var/mobile/Media/DCIM 目錄(拍照、截圖存放目錄)進(jìn)行操作,或是調(diào)用壁紙、鈴聲、相機(jī)等組件,不能對(duì)系統(tǒng)進(jìn)行任何干涉,這樣在最大程度上保證了系統(tǒng)的穩(wěn)定運(yùn)行,也不會(huì)干擾其它軟件的正常使用。但問(wèn)題是,由于 ipa 軟件的權(quán)限很低,想要對(duì)系統(tǒng)進(jìn)行修改,尤其是應(yīng)用補(bǔ)丁時(shí),ipa 就無(wú)能為力了。
ipa 軟件官方的安裝方式有兩種,一是在 App Store 這個(gè)軟件中下載安裝,二是用 iTunes 同步。
前者的問(wèn)題主要是網(wǎng)絡(luò)問(wèn)題,網(wǎng)速不好很容易安裝失敗;GPRS之類的上網(wǎng)安裝又很耗流量。后者的問(wèn)題主要是不能在不同系統(tǒng)下使用(包含不同電腦和同一部電腦上的不同系統(tǒng)),在其它系統(tǒng)上同步會(huì)抹掉原有的軟件。當(dāng)然了,iTunes 每次同步時(shí)間比較長(zhǎng)也是經(jīng)常被人詬病的。尤其是當(dāng)安裝軟件比較多的時(shí)候,每次同步之前的備份需要很長(zhǎng)很長(zhǎng)時(shí)間,這個(gè)很惡心(不過(guò)可以直接 X 掉備份操作)。
由于以上兩種方式存在一些問(wèn)題,所以很多人會(huì)選擇使用 Installous 或其他手機(jī)助手來(lái)安裝 ipa,這也確實(shí)是個(gè)不錯(cuò)的選擇。
Installous 一般沒(méi)什么問(wèn)題,但對(duì)部分驗(yàn)證比較嚴(yán)格的 ipa 處理不是很好。雖然 Installous 基本能代替 iTunes,但畢竟不完全等同。最典型的就是 Installous 安裝 Microsoft 官方出的 Live Messenger (正版,非破解版)時(shí)不能運(yùn)行。實(shí)際上 Installous 對(duì)很多未破解的正版軟件支持不是很好。
至于91,經(jīng)常被人批評(píng)。91 雖然可以安裝 ipa,但除了 Installous 都有的正版軟件的支持問(wèn)題外,由于91的安裝機(jī)制有缺陷,軟件不能實(shí)現(xiàn)多語(yǔ)言,只會(huì)使用英文界面,而忽略掉 zh_CN.lproj,zh_TW.lproj 這些語(yǔ)言包。這對(duì)那些用希望使用漢化版的人來(lái)說(shuō)實(shí)在是一個(gè)悲劇。所以通常是要避免使用91來(lái)安裝 ipa 的。
至于ipa文件的卸載,三種方法:
設(shè)備上按住圖標(biāo)直到開(kāi)始晃動(dòng),點(diǎn)擊圖標(biāo)左上角的 X 即可卸載;
于 iTunes 中取消選中,然后同步
找到 /var/mobile/Applications 下的相應(yīng)目錄,強(qiáng)行刪除整個(gè)文件夾。這個(gè)在前面兩種方法無(wú)法使用是可以采用(有時(shí)候卸載體積太大的軟件,比如超過(guò) 1G,因?yàn)閯h除過(guò)程太長(zhǎng)導(dǎo)致失去響應(yīng)并刪除失敗。),但這種方法會(huì)造成系統(tǒng)的不穩(wěn)定。除非是確實(shí)碰到了問(wèn)題,否則強(qiáng)烈建議不要使用。
pxl的特點(diǎn)
嚴(yán)格來(lái)說(shuō),pxl 格式的資源并不算多,但也不少。現(xiàn)在使用 pxl 格式的絕大多數(shù)都是91的用戶。
從時(shí)效性上來(lái)說(shuō),很多軟件(主要是 App Store 上的)一被人破解就馬上會(huì)被人轉(zhuǎn)成 pxl 格式,這樣來(lái)說(shuō),pxl 格式的更新還是不錯(cuò)的。
由于91手機(jī)助手沒(méi)有 iTunes 同步會(huì)抹掉軟件的問(wèn)題,加上其它一些比較方便的功能,使得很多新手都是從91開(kāi)始了解并熟悉 iPhone/iPod Touch 的使用。其結(jié)果是,pxl 格式依賴于91而生存。
pxl 格式的流行也不是歷史的遺物,而是符合市場(chǎng)規(guī)律的需求。91助手的便捷的軟件管理方式(尤其是支持 WiFi 管理),加上免費(fèi)的旗號(hào),使得 pxl 格式在新手中很受歡迎。
實(shí)際上,pxl 格式和 deb 格式具有的功能完全一樣。雖然 pxl 不能記錄文件的權(quán)限等數(shù)據(jù),但完全可以用腳本來(lái)彌補(bǔ)。即是說(shuō),pxl 格式和 deb 格式其實(shí)是不相伯仲的。而且因?yàn)?pxl 格式的制作并不需要比較少見(jiàn)的 Unix 環(huán)境,尤其是 Debian 環(huán)境,其本身是優(yōu)于 deb 格式的。
但為什么現(xiàn)在很多人都經(jīng)常在說(shuō)不要使用 pxl 呢?我個(gè)人認(rèn)為,原因主要有以下幾個(gè):
資源的局限性:除了91公司自己開(kāi)發(fā)的幾個(gè)軟件之外,其余所有軟件都是從 deb 和 ipa 轉(zhuǎn)換而來(lái)。如果原版軟件沒(méi)破解,pxl 無(wú)能為力(比如 Microsoft 官方出的 Live Messenger 和 Cydia 上一眾沒(méi)被破解的軟件);
資源時(shí)效性:跟上面一點(diǎn)相似,pxl 格式大部分是從其它格式轉(zhuǎn)換而來(lái),跟原版相比總是會(huì)慢一些,尤其是當(dāng)無(wú)法破解時(shí),pxl 根本就出不來(lái);
打包人水平有限:現(xiàn)在很多人都是直接用91助手來(lái)打包 pxl。對(duì)大部分只有一個(gè) XXX.app 目錄的程序來(lái)說(shuō)一般不會(huì)有問(wèn)題,但若遇見(jiàn)那些對(duì)文件權(quán)限等數(shù)據(jù)有嚴(yán)格要求的軟件(比如可執(zhí)行文件沒(méi)有可執(zhí)行權(quán)限,或是 mobile 用戶不能改寫(xiě) root 所有的文件等等),或是需要比較復(fù)雜的腳本才能運(yùn)行的軟件,往往 pxl 制作者并沒(méi)有能力去制作一個(gè)完善的 pxl 出來(lái),這樣也導(dǎo)致了許多安裝使用上的問(wèn)題;
安全性:絕大部分人在制作 pxl 的時(shí)候都習(xí)慣用 chmod -R 命令來(lái)將整個(gè) XXX.app 目錄及其中的全部文件和子目錄設(shè)為755/775/777權(quán)限,而這種行為會(huì)造成一定的安全隱患。關(guān)于這些數(shù)字的意思請(qǐng)自行搜索相關(guān)資料。這里簡(jiǎn)單說(shuō)明一下。644屬性表示僅有該文件的所有人才可以進(jìn)行改寫(xiě)操作,其余任何人都只能讀取,任何人都不能執(zhí)行這個(gè)文件。755和775是在644的基礎(chǔ)上加入了可執(zhí)行權(quán)限,755是該文件所在的用戶組的所有人都可以改寫(xiě)。而777權(quán)限則標(biāo)識(shí)任何人都可以改寫(xiě)并執(zhí)行。由于 mobile 本身是受限賬戶,如果使用777權(quán)限的話,有機(jī)會(huì)通過(guò)這個(gè)漏洞來(lái)獲取整個(gè)系統(tǒng)的控制權(quán)。只不過(guò)因?yàn)?iPhone 系統(tǒng)相對(duì)封閉,也不太有機(jī)會(huì)造成損失。但采用775和777權(quán)限是不應(yīng)該的;
ipa 轉(zhuǎn) pxl 的存檔問(wèn)題:不少人都有這樣的經(jīng)歷,在游戲 A 存檔之后再進(jìn)游戲 B,存檔 B 之后再進(jìn) A,發(fā)現(xiàn) A 的存檔已經(jīng)不在了。原因在于,ipa 轉(zhuǎn)換成的 pxl 軟件,存檔全部是放在 /var/mobile/Documents 目錄下,而正好有兩個(gè)軟件的存檔文件名相同(最常見(jiàn)的就是 data.sav 或 save.data),互相改寫(xiě)之后導(dǎo)致不能讀取。這種問(wèn)題也發(fā)生在 ipa 轉(zhuǎn) deb 上,而且無(wú)法解決;
無(wú)法完整刪除:卸載 pxl 格式時(shí),不會(huì)刪除存檔文件、配置文件、臨時(shí)文件等數(shù)據(jù),長(zhǎng)期使用會(huì)導(dǎo)致可用空間減少;
在部分機(jī)型上存在兼容問(wèn)題:有些機(jī)器越獄后并沒(méi)有將系統(tǒng)分區(qū)中的 /Applications 目錄轉(zhuǎn)移到 /var/stash 的用戶分區(qū)中。由于系統(tǒng)分區(qū)的可用空間很少(默認(rèn)500MB,通常可用空間不超過(guò)50MB),強(qiáng)行往 /Applications 里安裝會(huì)導(dǎo)致剩余空間消耗殆盡或安裝失敗。
由此可以看出,pxl 格式的問(wèn)題更多不是 pxl 本身的問(wèn)題,而是打包者的問(wèn)題以及安裝方式的缺陷所致。
另外要指出的是,pxl 最大的提供者91,經(jīng)常是轉(zhuǎn)載他人發(fā)布的軟件(包括 網(wǎng)友自己購(gòu)買(mǎi)破解的,或 Cydia 上直接下載的)然后當(dāng)作自己發(fā)布的軟件,對(duì)版權(quán)問(wèn)題完全不在意,這樣也引起了很多人,尤其是原發(fā)布者的反感。這種赤裸裸的剽竊行為實(shí)在是令人不恥。正因?yàn)檫@樣,很多人是因?yàn)椴凰?1而不爽 pxl,這實(shí)在是冤枉 pxl 格式本身了。
安裝和卸載:
91手機(jī)助手
91百寶箱
pxl 格式曾經(jīng)是1.x時(shí)代唯一的安裝包格式,給我們留下了太多的回憶,對(duì)于 pxl 的貢獻(xiàn),我們還是應(yīng)該緬懷和尊敬的。但隨著時(shí)代的發(fā)展,pxl 已經(jīng)老態(tài)盡顯,就如同 Installer 的退出一樣,pxl 最終會(huì)退出市場(chǎng)而被供奉在殿堂之內(nèi)。
總結(jié)
一般的軟件還是盡量用 ipa 格式,不要使用 ipa 轉(zhuǎn)換成的 deb 或 pxl 格式,這樣可以確保兼容性和安全性。而在系統(tǒng)級(jí)的程序(如 SBSettings 和輸入法),ipa 是絕無(wú)能力的,那么最好的選擇還是 deb。pxl 作為快被淘汰的格式,還是果斷的放棄比較好。至于 ipa 和 deb 的安裝方式,ipa 的安裝首選 iTunes 同步和 App Store 在線安裝,次選 Installous或其他PC助手,以保證最佳兼容性。deb 的安裝首選 Cydia 在線安裝,次選除91外的其它任何安裝方式。