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格式程序开发实例操作的内容介绍完了,希望本文对你有所帮助。