二、关于ipa格式
 
使用过MacOS的人可能都知道,Mac下的软件大部分都只有一个.app目录,里面包含了程序全部资源和可执行文件。简单来说,Mac下的软件就像是Windows下的绿色软件一样,解压后即可使用,不需要安装,卸载的话也只用删除程序文件即可(这里不涉及pkg格式安装包)。而ipa格式可以视为这种.app软件的衍生物。
 
ipa文件实质是一个zip压缩包(不是rar或7z包),包含3个组件:payload目录下的.app目录,这个是软件的主程序;
 
iTunesArtwork,实质是一个无后缀名的png图片,用来在iTunes中显示图标;
 
iTunesMetadata.plist,记录购买者信息、售价等数据。
 
由于zip包不能记录权限和所有者等信息,所以苹果规定了ipa的安装方式,即全部ipa都会解包安装在/var/mobile/Applications目录下,全部文件和目录的所有者及用户组均设为mobile(ID为501),主程序(可执行文件)的权限设为0755(所有人都可以执行,但只有所有者可以修改),可执行文件在plist中定义。全部目录权限设为0755,而其它所有文件都设为0644(仅所有者可以修改,其余人只允许读取,全部人都不允许执行)。ipa解包后并非直接放置于Applications目录下,而是放在一串由随机码构成的目录下,其作用在于,只允许这个软件运行在一个特定的沙盒(Sandbox)中,不能干扰其他软件。因此那串随机码目录下,除了ipa本身的三个组件之外,还有三个目录:
 
Library,一般是用了储存设置文件等数据;
 
Documents,存储数据,多用了保存存档;
 
tmp,临时文件夹。
 
由于这个软件只能在这个特定的目录下运行(当然了,部分程序会调用系统的通讯录、相机等组件,但仍然是受限制的),从而保证了整个系统的安全性和稳定性。由于Unix系统下对权限的规定相当严格,所以“越权”的行为是绝对不允许的。举个例子,mobile用户无权删除root所有的文件,因为root的权限高于mobile。所以有些人在修改ipa安装后的文件时,比如进行汉化或者修改存档,发现不能删除干净软件,或不能保存,这是因为删除时不能删除root所有的文件,程序本身也无法对root所有的存档文件进行写入操作。
 
三、关于pxl格式
 
pxl格式在1.x时代是iPhone平台上唯一的安装格式,原因是那时候还没有Cydia这样的APT管理软件,苹果官方也没有推出AppStore。由于在1.x时代积累了大量人气,在接下来的AppStore时代中,pxl格式以其相对简易的打包和安装方式,仍然占据了很大一部分市场。但随着Installer的停止开发,iBrickr等软件停止更新,目前唯一还在坚持使用pxl格式的就只剩下91一家了。
装机