如何制作ROM刷机包

目前有好几种方法来安装软件或是库文件到你的Android手机上。你可以使用市场程序来查找并安装软件,也可以使用adb命令行工具来安装或是发送文件到你的Android文件系统中。这些方法对于操作单个文件来说都挺方便的,但是如果你需要一次性安装多个软件或是库文件时,那么最为方便的方法大概就是使用update.zip(也就是刷机包)文件了。Android系统使用恢复工具(recovery)来安装这个update.zip文件中的软件或库文件到Android文件系统中。而一个ROM或是主题开发者通常都是使用这个方式来发布他们的作品(刷机包)。
 
      创建一个update.zip文件是很简单的事情,你所需要做的就是将文件放置到与Android文件系统中相对应的文件夹中,然后编写一个用来复制这些文件到手机对应位置的update-script文件。作为举例,本文会安装Calculator.apksystem/app文件夹,复制libsec-ril.so文件到system/lib文件夹:
  • 新建一个空文件夹(本文例:C:\goapk)
  • 新建用来放置Calculator.apk的文件夹C:\goapk\system\app以及用来放置libsec-ril.so的文件夹C:\goapk\system\lib
  • 创建用来放置update-script文件的文件夹C:\goapk\META-INF\com\google\android
  • 创建一个名为update-script的文件,其内容如下(高亮部分):
    行1和行5:显示进度条
    行3:复制刷机包中的system文件夹到Android的
    /system
    注意:你应该在文件的最末尾多添加一个空行(也就是行6)
  • C:\goapk压缩中的所有内容压缩为zip包(千万记住:是压缩goapk这个文件夹中的内容,不是goapk文件夹本身)
  • goapk.zip签名
    签名命令:
    java -jar signapk.jar certificate.pem key.pk8 goapk.zip update.zip
  • update.zip文件复制到SD卡中,然后手机进入recovery界面来刷入这个刷机包


进阶学习:(以下仅作参考,因实际情况不同,可能会有一定的出入。但是极度推荐学习本部分
update-script 语法参考(在Android源码的recovery.c文件中定义):
  • copy_dir
    语法:
    copy_dir <源目录> <目标目录> [<时间戳>]
    描述:复制<源目录>中的内容到<目标目录>中。如果<源目录>中没有同名文件进行覆盖,那么<目标目录>中的原始内容会仍然存在不变。
    示例:copy_dir PACKAGE:system SYSTEM:,这个命令会把刷机包中的system文件夹复制到手机的/system文件夹中
  • format
    语法:format <根目录>
    描述:格式化一个分区。
    示例:format SYSTEM:,这个命令会格式化整个/system。注意:格式化时所进行的数据删除操作是不可逆转的。
  • delete
    语法:
    delete  <文件1> [... <文件N>]
    描述:删除文件。
    示例:delete SYSTEM:app/Calculator.apk,这个命令会删除手机system/app文件夹中的Calculator.apk文件。
  • delete_recursive
    语法:
    delete_recursive  <文件或目录1> [... <文件或目录N>]
    描述:删除一个文件或递归删除某个文件夹(也就是包括该文件夹中的所有内容)
    示例:delete_recursive DATA:dalvik-cache,这个命令会删除/data/dalvik-cache文件夹以及该文件夹中的所有内容。
  • run_program
    语法:
    run_program <执行程序> [<参数> ...]
    描述:运行一个刷机包中的外部程序。
    示例:run_program PACKAGE:install_busybox.sh,这个命令会执行刷机包中的install_busybox.sh脚本(命令行)。
  • set_perm本命令中涉及的数值,如有疑惑,请自行Google。uid=user id,gid=group id
    语法:
    set_perm <uid> <gid> <属性> <路径> [... <路径N>]
    描述:设置某个文件或是指定的整个目录树的所有者和权限,就像是一个‘chmod’、‘chown’、以及‘chgrp’命令的集合体。
    示例:set_perm 0 2000 0550 SYSTEM:etc/init.goldfish.sh,这个命令会设置手机上system分区中etc/init.goldfish.sh文件的用户组为:shell;用户为:root;权限为:所有者以及所属用户组成员可以进行读取和执行操作,其他用户无操作权限。
  • set_perm_recursive本命令中涉及的数值,如有疑惑,请自行Google。uid=user id,gid=group id
    语法:
    set_perm_recursive <uid> <gid> <文件夹属性> <文件属性> <路径> [... <路径N>]
    描述:递归设置某个文件夹中所有内容的所有者和权限
    示例:set_perm_recursive 0 0 0755 0644 SYSTEM:app,这个命令会递归设置手机上system/app文件夹以及其所有内容的用户组为:root;用户为:root;app文件夹的权限为:所有者可以进行读、写、执行操作,其他用户可以进行读取和执行操作;app文件夹下的所有文件的权限为:所有者可以进行读写操作,其他用户可以进行读取操作。
  • show_progress
    语法:show_progress <小数> <持续时间>
    描述:为下一个操作在屏幕上显示一个进度条,自动的根据<持续时间>指定的秒数来递增进度条状态(如果实际上进度条的推进是可以确定的,那就会更加迅速)。
    示例:show_progress 0.1 0,这个命令是指,操作完成后,进度条前进0.1(10%)
  • symlink
    语法:symlink <链接目标> <链接所在路径>
    描述:创建一个符合链接(就像是 ‘ln-s’)。<链接所在路径>的格式类似于这样:根目录:路径, 但是<链接目标>则是指目标文件(而且位置可能是相对与链接所在路径的)
    示例:symlink /system/bin/su SYSTEM:xbin/su,这个命令会为/system/bin/su在手机system分区的xbin文件夹下创建一个符号链接,名为su
APP刷机制作工具简介 钛备份是不少刷机用户必备工具,这款应用可以备份自己应用及数据、系统应用数据以及各种系统设置数据,不过有两点会比较麻烦。 第一是,在刷机之后恢复时需要一个一个的确认安装第三方程序,不能无人值守恢复。第二是,如果你刷的ROM和之前ROM不是同一系列,恢复之前的系统数据时容易出问题,比如新刷ROM中某个系统应用与之前ROM相比有过改动,数据不能通用,如果强行恢复就可能造成卡界面、卡加载等等。 我们换一种思路,如果能把第三方应用和数据打制作成一个没有系统文件只是第三方应用和相关数据的update.zip升级,然后通过recovery直接刷到系统里面去,这样就能实现快速无人值守恢复应用,并且保留之前的使用数据和进度等信息。 同理,系统应用和数据也可以通过这种方式进行备份和恢复,会比钛备份的方式更加安全,因为只是涉及系统应用和对应数据的恢复,如果新刷ROM中的系统APP和之前ROM有冲突,刷机方式会直接覆盖这个APP并恢复对应的正确数据。 这种方式的缺点是无法备份系统设置数据,比如WiFi密码、书签等等。 App2zip自制应用刷机就是这样一款新工具,安装之后授予ROOT。程序列表显示为第三方应用和系统应用两种,可以自行选择多选或者全选,然后确认开始打,工具会自动生成update.zip,可以自命名,压之后会自动签名,成功签名的zip才能试用recovery刷入。 目前这款工具刚刚推出,不能保证支持所有设备,所以想使用的用户可以在安装之后进行测试,选择一个不经常使用的软件进行备份,然后删除掉,再进入recovery模式将它刷回来,这样就能确认自己的设备是否可以使用这个工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值