iPhone各种软件格式详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关于iphone4各种安装包格式详解。deb、ipa 和 pxl
前言:
虽然有些多,但是完全没有接触过IOS的朋友可以好好看看了解了解。
往后会为大家更新上各种格式之间的转换,
1
目前 iOS 平台上常见的安装包有三种,deb、ipa 和 pxl。
其中 deb 格式是 Debian 系统(包含 Debian 和 Ubuntu )专属安装包格式,配合 APT 软件管理系统,成为了当前在 Linux 下非常流行的一种安装包。
进入 2.x 时代之后有 Cydia 作者 Jay Freeman(saurik)移植到 iPhone 平台上,一起的还有 APT 软件管理系统。
而 ipa 格式则是苹果在 iOS 平台上推出的专属软件安装包,在2.0固件开始才正式使用,是目前 iPhone/iPod Touch/iPad 平台上唯一的官方安装包。
而 pxl 格式则起源于 Mac 系统上的 pkg 安装包,被广泛应用于1.x固件时代,曾经是 iPhone 平台上唯一的软件安装包,现在仍在被91等软件所使用。
2
.deb
丰富的资源:Cydia 上本身就不少,更何况任何格式的安装包都可以转换为deb。
相对方便的在线购买模式:Cydia Store,不过尽管没有 App Store 的5台设备的限制,但对国内用户来说,付款方式比较困难。
XX难度较大,没有使用 App Store 的验证方式,所以必须将验证和防XX措施加入程序里面,这样就比较难XX,对软件开发者来说是个好事。
完善的 Unix 文件系统支持:无需以命令设置文件的权限、所有者和用户组(当然也可以以脚本来设置)
完善的脚本支持:5个脚本依照安装和卸载的先后顺序执行,可以提供更多选择。比如备份还原操作,可以在 preinst 中备份文件,而在 postrm 中还原文件
严格的依赖关系:deb 遵循严格的依赖关系(于 Depends 和 Pre-Depends 指定),可以确保软件运行所必需的组件。在线安装的时候会自动安装所依赖的软件包。
卸载时也很重要,比如软件包 A 依赖于 B,当卸载 B 的时候会提示 A 依赖于B,卸载掉 B 的话会导致 A 不能用,这样可以确保系统的完整性和稳定性。
Conflicts、Replaces、Provides 等键值的存在可以实现冲突提示或替换其它软件包。
完全权限:由于 deb 必须以最高权限 root 的身份运行,deb可以对系统任何位置进行操作,换句话说,deb 拥有对整个系统的完全控制,因此 deb 安装包软件可
以实现很多 ipa 不能实现的功能。
相对简单的获取方式(在线或离线)和安装方式,也不用担心在不同机器上同步会删掉程序的问题。
安装相对简单:其实无论是哪种安装包,安装方法都不算很复杂,只不过 deb 稍微复杂一些。
deb 的安装方法
1.Cydia 或同类 APT 管理软件在线安装,这个是最佳的安装方式,因为通常无需考虑依赖关系,但缺点是对网络的要求比较高;
2.命令行中以dpkg -i XXX.deb 的形式安装,好处是可以以通配符一次性安装多个deb,而且也可以直接看到脚本的运行状况和安装成功/失败的提示信息,缺点是需
要命令行软件的支持,如 Putty/WinSCP的控制台/iSSH/MobileTerminal,很多人也不熟悉命令行下的操作。另外,安装完后会不显示图标;
3.放置于 AutoInstall 目录重启安装。该方法实际是 Cydia 提供的一个启动脚本,在每次系统启动时以 dpkg 命令安装 AutoInstall 目录下的 deb,好处是不需要命
令行操作,缺点是必须要重启,有些甚至要重启两次,也会出现不显示图标的情况;
4.利用 iFile 安装,好处是图形化操作,桌面会显示图标,缺点是不能一次安装多个 deb;
5.用 Cyder II 等软件来安装,其原理是模拟一个 APT 软件管理器来下载相应的 deb 文件并传到设备,然后以前面几种方式来安装。
总体来说,deb 的安装都是依赖于 dpkg -i 命令来安装,只不过有些是在命令行下输入命令,有些是提供了图形界面。但除了 Cydia 安装一种方式之外,其余几种
安装方式都存在一些共有的问题:
不会自行搜索依赖关系,必须手动提供所依赖的 deb;
Cydia 会读取安装脚本里的一些特殊语句,比如仅在全新安装时执行而不在升级时执行,安装完成后重启 SpringBoard 或设备等等。
当然了,deb 软件的卸载也比较简单,有两种方式:
Cydia 里卸载,优点是卸载过程和提示信息很详细,全图形界面操作,同时也提供了重新安装的选项;
以 dpkg -r Package_ID 命令或 dpkg -P Package_ID 命令来卸载(详情后面会说);
Cydelete 来卸载,优点是可以直接在桌面上卸载有图标的软件,但对那些没有图标的无能为力。
其实,不管是安装还是删除,都可以才要全手动的方法。即,解包 deb 之后,
自己将文件放到相应位置,然后设置权限等并执行脚本。但这样有必要么?
deb 的安装过程如下:
读取数据库并锁定,避免同时有两个安装程序在运行
读取 control 中的 Package(软件包标识)和版本信息,并搜索数据库,若已存在,则卸载之后再安装;
检查 Depends, Pre-Depends, Conflicts 和 Replaces,如果检测到已存在Conflicts 中存在的软件,则报错并终止安装。如未找到 Pre-Depends 指定的软件,则报错
并终止安装。如找到 Replaces 中指定的软件,则卸载之;
将数据写入 /var/lib/dpkg/status 文件中;
执行 preinst 脚本(如果有);
解包 data.tar.gz,将文件放置于相应位置,并将文件列表写入
/var/lib/dpkg/info/XXX.list;
运行 postinst 和 extrainst_ 脚本(如果有);
如果之前的安装都没有出错,即安装成功,那么会在 status 文件中写入Status: install ok installed 信息,否则会写入其它状态数据,比如Unpacked (未解包数
据)、Failed-config(脚本未能成功执行)、Half-installed(安装失败等);
重新加载数据库并解除锁定。
deb 的卸载过程如下:
读取数据库并锁定;