【Android源码 栏目提醒】:网学会员Android源码 为您提供Android Rom制作 - 操作系统参考,解决您在Android Rom制作 - 操作系统学习中工作中的难题,参考学习。
目前有好几种方法来安装软件或是库文件到你的
Android 手机上。
你可以使用市场程序来查找并安装软件, 也可以使用 adb 命令行工具来安装或是发送文件到你的
Android 文件系统中。
这些方法对于操作单个文件来说都挺方便的,但是如果你需要一次性安装多个软件或是库文件时,那么最为方便的方法大概就是使用update.zip(也就是刷机包)文件了。
Android 系统使用恢复工具(recovery)来安装这个 update.zip 文件中的软件或库文件到
Android 文件系统中。
而一个ROM 或是主题开发者通常都是使用这个方式来发布他们的作品(刷机包)。
创建一个 update.zip 文件是很简单的事情,你所需要做的就是将文件放置到与
Android 文件系统中相对应的文件夹中, 然后编写一个用来复制这些文件到手机对应位置的 update-script 文件。
作为举例,本文会安装 Calculator.apk到 system/app 文件夹,复制 libsec-ril.so 文件到 system/lib 文件夹:新建一个空文件夹本文例:C:goapk新建用来放置 Calculator.apk 的文件夹 C:goapksystemapp 以及用来放置libsec-ril.so 的文件夹 C:goapksystemlib。
创建用来放置 update-script 文件的文件夹C:goapkMETA-INFcomgoogleandroid。
创建一个名为 update-script 的文件,其内容如下(高亮部分):1 show_progress 0.1 023 copy_dir PACKAGE:system SYSTEM:45 show_progress 0.1 106行 1 和行 5:显示进度条行 3:复制刷机包中的 system 文件夹到
Android 的/system注意:你应该在文件的最末尾多添加一个空行(也就是行 6)将 C:goapk 压缩中的所有内容压缩为 zip 包(千万记住:是压缩 goapk 这个文件夹中的内容,不是 goapk 文件夹本身)为 goapk.zip 签名签名命令:java -jar signapk.jar certificate.pem key.pk8 goapk.zipupdate.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 ... 描述:删除文件。
示例:delete SYSTEM:app/Calculator.apk,这个命令会删除手机 system/app文件夹中的 Calculator.apk 文件。
delete_recursive语法:delete_recursive ... 描述:删除一个文件或递归删除某个文件夹(也就是包括该文件夹中的所有内容)示例:delete_recursive DATA:dalvik-cache,这个命令会删除/data/dalvik-cache 文件夹以及该文件夹中的所有内容。
run_program语法:run_program ...描述:运行一个刷机包中的外部程序。
示例:run_program PACKAGE:install_busybox.sh,这个命令会执行刷机包中的install_busybox.sh 脚本(命令行)。
set_perm(本命令中涉及的数值,如有疑惑,请自行 Google。
uiduser id,gidgroup id)语法:set_perm ... 描述:设置某个文件或是指定的整个目录树的所有者和权限,就像是一个‘chmod’、‘chown’、以及‘chgrp’命令的集合体。
示例:set_perm 0 2000 0550 SYSTEM:etc/init.goldfish.sh,这个命令会设置手机上 system 分区中 etc/init.goldfish.sh 文件的用户组为:shell;用户为:root;权限为:所有者以及所属用户组成员可以进行读取和执行操作,其他用户无操作权限。
(set_perm_recursive 本命令中涉及的数值, 如有疑惑,请自行 Google。
uiduserid,gidgroup id)语法:set_perm_recursive ...描述:递归设置某个文件夹中所有内容的所有者和权限示例: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对于根目录以及分区的定义(在
Android 源代码的 root.c 文件中定义) 文件系根目录: Linux 块设备 /挂载点/ 大小 描述 统BOOT: /dev/mtdblock / RAM Raw 内核、内存盘和引导配置。
用户、系统配置,软件配置以及软件(没有DATA: /dev/mtdblock5 /data/ yaffs2 91904kb 话)CACHE: /dev/mtdblock4 /cache/ yaffs2 30720kb OTA 缓存,recovery/更新配置及临时文件夹MISC: /dev/mtdblock N/A Rawkb (等待添加)PACKAGE: (相对于刷机包) N/A 刷机包的伪文件系统。
recovery 和更新环境的内核和内存盘。
类似RECOVERY: /dev/mtdblock / RAM Rawkb BOOT:。
SDCARD: /dev/mmcblk0p1 /sdcard/ fat32 32MB-32GB TF 卡。
通常刷机包就放在这里。
SYSTEM: /dev/mtdblock3 /system/ yaffs2 92160kb 系统分区,静态且是只读的。
标准的 Linux 临TMP: /tmp/ RAM 在关机/重启时清空。
时文件夹
上一篇:
Eclipse王者归来——如何使用Eclipse调试Android源
下一篇:
7*30m公路预应力混凝土连续梁桥上部结构设计