iPhone應用程式 PXL格式程式開發執行個體操作,首先來瞭解一下PXL,PXL是國內廣泛使用的一種iOS程式安裝包,他只能安裝於破解版的iPhone/iPad等裝置上。和官方的IPA格式相比,pxl格式的程式有他獨特的特點。
1、PXL與IPA格式優缺點比較
IPA作為蘋果官方的安裝包格式,顯然在先天上有他的優勢,他易於安裝和卸載,只要使用iTunes就可以進行安裝、同步和卸載,而其他第三方的助手類軟體一般都支援IPA格式。但是由於是官方的格式,所以存在沙箱特性的限制。也就是說,他只能訪問沙箱下的目錄。
PXL作為國內應用相當廣泛的軟體,他也有自身的優勢。首先,他具有更強的檔案目錄存取範圍。由於PXL是安裝在破解過的機子之上,所以PXL軟體對實現對整個檔案系統訪問,因此如果你想做些和系統相關的軟體,例如安裝其他軟體或者是修改系統配置,IPA是絕對做不到的。
其次,他在安裝和卸載前後具有更強的靈活性。如果你想在安裝前做些準備工作,或者卸載時做些特殊的事情,可以通過PXL的安裝後和卸載前指令碼來完成你的目的。
第三,PXL程式可以獲得更高的許可權,可以通過一些手段,讓你的應用程式具有root的許可權。
而PXL的缺點也是顯而易見的!他僅僅支援破解過的iOS裝置。同時他也會失去IPA軟體所具備的一些特性。
2、PXL軟體開發過程與IPA軟體開發過程的差異性
PXL的開發過程和IPA的開發過程具有一些差異性,不瞭解這些差異性可能對你的軟體運行過程中有些影響。
1、PXL可能會無法擷取Document、Library等IPA必定存在的目錄。
在IPA格式的軟體中,軟體安裝後,他的目錄格式大概如下:
- XXXXXX蘋果產生的GUID目錄)
- |
- |____MyApp.app
- |____Document
- |____Library
- |____tmp
- |____xxxx其他目錄)
而PXL的軟體安裝在破解機後,他的目錄格式如下:
- /Applications
- |
- |____MyApp.app
2、PXL程式中是否可以使用Document、Libarary等目錄?
答案是應該可以。為什麼是應該呢?因為這個可能和機器的破解情況相關。一般情況下,使用系統的API來擷取Document目錄,你將獲得的目錄是:/var/mobile/Document,同樣,Library會指向/var/mobile/Library。基本上的破解機上這些目錄都是存在的!但是_並不保證_這些目錄一定存在,有非常小的機率遇到破解有問題的機器這些目錄不存在。)
那麼使用這些目錄有什麼要注意的事項嗎?
首先,所有pxl軟體的Document目錄都是指向同一個目錄/var/mobile/Document目錄,所以存在可能重名的危險!
其次,軟體在被卸載的時候,你存在Document和Libary下的檔案不會被刪除!
3、PXL程式開發時推薦的資料儲存方式?
那麼在PXL的程式開發過程中,推薦使用什麼樣的方式來儲存資訊呢?
一般而言,採用自己指定目錄的方式,你可以通過NSBundle來擷取你的app的路徑,在你的app目錄下建立一個你的資料存放區目錄當然,可以打包的時候直接帶入,也可以直接放在你的app目錄下也行)。然後將你的資料存放在這個目錄底下。
還有一種情況,就是很有可能你的程式既需要產生ipa,也需要產生pxl,所以你可能需要在程式中對這些情況進行適配。那麼這種情況你該怎麼處理呢?
首先,代碼中應該盡量避免直接使用Document、Libarary這些目錄,在訪問這些目錄前,封裝一下。例如:
- NSString *getMyDocumentPath()
- {
- NSString *path = nil;
- if (isJailBreak)
- {
- path = MyJailBreakPath; //破解版自訂的路徑
- }
- else
- {
- path = DocumentPath; //系統的Document路徑
- }
- }
那麼應該用什麼方式來判斷是否jailBreak呢?一個方法是你打包之前,代碼裡頭直接指定。那麼動態判定的方法呢?其實很簡單,你直接取訪問一個超出沙箱目錄的檔案,如果你能訪問到,那麼他一定是jailBreak過的。
例如:
- BOOL isJailBreak()
- {
- int res = access(”/var/mobile/Library/AddressBook/AddressBook.sqlitedb”, F_OK);
- if (res != 0)
- return NO;
- return YES;
- }
小結:iPhone應用程式 PXL格式程式開發執行個體操作的內容介紹完了,希望本文對你有所協助。