iPhone各种软件格式详解
关于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 的卸载过程如下:
读取数据库并锁定;
根据软件标识搜寻数据库;
检查是否有软件依赖于待卸载的软件,如果有则提示,并中断卸载;
执行 prerm 脚本(如果有);
读取 /var/lib/dpkg/info/XXX.list 文件,并删除 list 文件中记录的全部文件和非空文件夹;
运行 postrm 脚本;
如果卸载命令是 dpkg -r,则保留 status 中的记录并改为 Status: Not installed ;如果卸载命令是 dpkg -P,则删除全部数据;
如果卸载过程没有错误的话,重新读取数据库并解除锁定。
由于 deb 安装的软件可能会在运行时在 /var/mobile/Documents 下放置存档文件,或在 /var/mobile/Library/Preferences 下放置设置文件,而这些文件并没有记录
在 list 文件里,所以卸载的时候不会被删除
——————————————————————————————————————————————————————————————————————
3
.ipa
丰富的资源:App Store 上那么多资源,apptrackr 等网站也提供了很多XX 版。
完善的更新、后期服务。
只能使用最小权限,保障安全性。
不涉及系统级的操作,所以一般不容易造成死机或白苹果(有些是因为资源消
耗太大所以卡死)。
便捷的安装方式,无论是直接在设备上用App Store安装,还是用 iTunes 来同步,抑或是用 Installous 和 91 这类第三方软件来安装,都是很方便快速的安装方式。
超级简单的卸载方式:还有什么比只需要点一个 X 就能卸载更简单呢?
完全删除,不会留下任何垃圾文件(如存档、设置文件等)
总体来说XX 还是比较容易的,但现在越来越多软件加入了防XX 措施。
之前提到过,ipa 软件是被安装在一个类似于沙盒的环境中,除了能对
/var/mobile/Media/DCIM 目录(拍照、截图存放目录)进行操作,或是调用壁纸、铃声、相机等组件,不能对系统进行任何干涉,这样在最大程度上保证了系统的稳定运行,也不会干扰其它软件的正常使用。但问题是,由于 ipa 软件的权限很低,想要对系统进行修改,尤其是应用补丁时,ipa 就无能为力了。
ipa 软件官方的安装方式有两种,一是在 App Store 这个软件中下载安装,二是用 iTunes 同步。
前者的问题主要是网络问题,网速不好很容易安装失败;GPRS 之类的上网安装又很耗流量。后者的问题主要是不能在不同系统下使用(包含不同电脑和同一部电脑上的不同系统),在其它系统上同步会抹掉原有的软件。当然了,
iTunes 每次同步时间比较长也是经常被人诟病的。尤其是当安装软件比较多的时候,每次同步之前的备份需要很长很长时间,这个很恶心(不过可以直接 X 掉备份操作)。
由于以上两种方式存在一些问题,所以很多人会选择使用 Installous 或 91 来安装 ipa,这也确实是个不错的选择。
Installous 一般没什么问题,但对部分验证比较严格的 ipa 处理不是很好。虽然 Installous 基本能代替 iTunes,但毕竟不完全等同。最典型的就是 Installous 安装 Microsoft 官方出的 Live Messenger (正版,非XX 版)时不能运行。实际上 Installous 对很多未XX 的正版软件支持不是很好。
至于91,经常被人批评。91 虽然可以安装 ipa,但除了 Installous 都有的正版软件的支持问题外,由于91的安装机制有缺陷,软件不能实现多语言,只
会使用英文界面,而忽略掉 zh_CN.lproj,zh_TW.lproj 这些语言包。这对那些用希望使用汉化版的人来说实在是一个悲剧。所以通常是要避免使用91来安装 ipa 的。
至于卸载,三种方法:
设备上按住图标直到开始晃动,点击图标左上角的 X 即可卸载;
于 iTunes 中取消选中,然后同步
找到 /var/mobile/Applications 下的相应目录,强行删除整个文件夹。这个在前面两种方法无法使用是可以采用(有时候卸载体积太大的软件,比如超过 1G ,因为
删除过程太长导致失去响应并删除失败。),但这种方法会造成系统的不稳定。除非是确实碰到了问题,否则强烈建议不要使用
——————————————————————————————————————————————————————————————————
4
Pxl
严格来说,pxl 格式的资源并不算多,但也不少。现在使用 pxl 格式的绝大多数都是91的用户。
从时效性上来说,很多软件(主要是 App Store 上的)一被人XX 就马上会被人转成 pxl 格式,这样来说,pxl 格式的更新还是不错的。
由于91手机助手没有 iTunes 同步会抹掉软件的问题,加上其它一些比较方便的功能,使得很多新手都是从91开始了解并熟悉 iPhone/iPod Touch 的使用。其结果是,pxl 格式依赖于91而生存。
pxl 格式的流行也不是历史的遗物,而是符合市场规律的需求。91助手的便捷的软件管理方式(尤其是支持 WiFi 管理),加上免费的旗号,使得 pxl 格式在新手中很受欢迎。
实际上,pxl 格式和 deb 格式具有的功能完全一样。虽然 pxl 不能记录文件的权限等数据,但完全可以用脚本来弥补。即是说,pxl 格式和 deb 格式其实是不相伯仲的。而且因为 pxl 格式的制作并不需要比较少见的 Unix 环境,尤其是 Debian 环境,其本身是优于 deb 格式的。
但为什么现在很多人都经常在说不要使用 pxl 呢?我个人认为,原因主要有以下几个:
资源的局限性:除了91公司自己开发的几个软件之外,其余所有软件都是从 deb 和 ipa 转换而来。如果原版软件没XX ,pxl 无能为力(比如 Microsoft 官方出的 Live Messenger 和 Cydia 上一众没被XX 的软件);
资源时效性:跟上面一点相似,pxl 格式大部分是从其它格式转换而来,跟原版相比总是会慢一些,尤其是当无法XX 时,pxl 根本就出不来;
打包人水平有限:现在很多人都是直接用91助手来打包 pxl。对大部分只有一个 XXX.app 目录的程序来说一般不会有问题,但若遇见那些对文件权限等数据有严格要求的软件(比如可执行文件没有可执行权限,或是 mobile 用户不能改写 root 所有的文件等等),或是需要比较复杂的脚本才能运行的软件,往往 pxl 制作者并没有能力去制作一个完善的 pxl 出来,这样也导致了许多安装使用上的问题;
安全性:绝大部分人在制作 pxl 的时候都习惯用 chmod -R 命令来将整个 XXX.app 目录及其中的全部文件和子目录设为755/775/777权限,而这种行为会造成一定的安全隐患。关于这些数字的意思请自行搜索相关资料。这里简单说明一下。644属性表示仅有该文件的所有人才可以进行改写操作,其余任何人都只能读取,任何人都不能执行这个文件。755和775是在644的基础上加入了可执行权限,755是该文件所在的用户组的所有人都可以改写。而777权限则标识任何人都可以改写并执行。由于 mobile 本身是受限账户,如果使用777权限的话,有机会通过这个漏洞来获取整个系统的控制权。只不过因为 iPhone 系统相对封闭,也不太有机会造成损失。但采用775和777权限是不应该的;
ipa 转 pxl 的存档问题:不少人都有这样的经历,在游戏 A 存档之后再进游戏 B,存档 B 之后再进 A,发现 A 的存档已经不在了。原因在于,ipa 转换成的 pxl 软件,存档全部是放在 /var/mobile/Documents 目录下,而正好有两个软件的存档文件名相同(最常见的就是 data.sav 或 save.data),互相改写之后导致不能读取。这种问题也发生在 ipa 转 deb 上,而且无法解决;
无法完整删除:卸载 pxl 格式时,不会删除存档文件、配置文件、临时文件等数据,长期使用会导致可用空间减少;
在部分机型上存在兼容问题:有些机器越狱后并没有将系统分区中的
/Applications 目录转移到 /var/stash 的用户分区中。由于系统分区的可用空间很少(默认500MB ,通常可用空间不超过50MB ),强行往 /Applications 里安装会导致剩余空间消耗殆尽或安装失败。
由此可以看出,pxl 格式的问题更多不是 pxl 本身的问题,而是打包者的问题以及安装方式的缺陷所致。
另外要指出的是,pxl 最大的提供者,91,经常是转载他人发布的软件(包括 网友自己购买XX 的,或 Cydia 上直接下载的)然后当作自己发布的软件,对版权问题完全不在意,这样也引起了很多人,尤其是原发布者的反感。这种赤*裸裸的剽窃行为实在是令人不耻。正因为这样,很多人是因为不爽91而不爽 pxl ,这实在是冤枉 pxl 格式本身了。
相关文章
- 电子商务设计师历年真题详解(部分)
- 移动办公系统建设方案
- SPSS原理与应用
- 四川省计算机一级考试试题填空题及答案详解
- 连我LINE--免费通话免费短信的应用软件
- android设计规范
- 生产实习报告软件工程11-6
- 卖旧手机不安全?搞定这些技巧手机想卖就卖!
- 科技早点:Plus才1GB!苹果客服证实iPhone6内存容量
电子商务设计师历年真题详解(部分) 电子商务设计师考试属于全国计算机技术与软件专业技术资格考试(简称计算机软件资格考试)中的一个中级考试.考试不设学历与资历条件,也不论年龄和专业,考生可根据自己的技术水平选择合适的级别合适的资格,但一次考试 ...
无锡市北塘区政府移动办公系统 建设方案 2014年11月 目 录 一. 项目概述 . ............................................................................. ...
<SPSS原理与应用>教学大纲 学时:51学时 学分:2 理论学时:17 实验或讨论学时:34学时 适用专业:心理学 大纲执笔人:郭振娟 大纲审定人:心理学系集体审定 一.说明 (一)课程的性质.地位和任务 SPSS是软件英文名 ...
填充题:1. 公式SUM (A3∶A8)/6等效于( ).解答:SUM (A3∶A8)/6的作用是求A3:A8单元格区域的平均值,可以直接用求平均函数AVERAGE(A3:A8)来表示,针对数值型数据还可以使用SUM(A3:A8)/COUN ...
连我 免费通话 免费短信 Line,中文名"连我"是一款跨多平台的通讯软件,可以传文字.图片和将电话,自2011年6月上线后便风靡全球.连我(LINE) 在多达37个国家下载排名第一,受全球230多国家欢迎,全世界超过8 ...
android 人机界面指南 1Android 设计的依据 1.1框架结构及流程 是什么使得android 有着独特的用户体验? 后台处理支持多任务功能 正在进行和事件驱动的提示信息 通过Widgets 和live folders来实现实时 ...
软件工程专业 软件开发实践(生产实习)报告 教学单位 班 级 软件学院 软件工程 11-6 学生姓名 学 号 实习时间 2014-06-23 至 07-18 指导教师 (验收答辩老师) 辽宁工程技术大学软件学院软件工程系制 1 实习时间 2 ...
某女子卖旧手机,被对方盗刷2万元. 小心!卖旧手机前,"恢复出厂设置"并不安全. 旧手机卖出后,总接到"家人"电话要求汇钱. 旧手机换菜刀.脸盆?别换,小心骗子偷你数据. 这样的新闻我想你肯定见过不少 ...
2014-09-18 作者观点 苹果从来都只宣称内存的读取速度快了多少,但是对内存容量上的升级却没有什么兴趣,当然这也和iOS系统优秀的内存管理与后台机制有关系.但是消费者可不管这些,他们就是想要更大的内存容量. 雯子 简介:IT入门者,热 ...