Android4.2自定义升级包
其实之前在4.0上已经做过,半年时间过去了,现在基本上都忘记完了。
系统默认升级包:
而在4.2上使用make otapackage 打出来的是完整的升级包;
使用ota_from_target_files可以打出2种升级包:
- 差分升级包;
- 完整升级包;
由于这两种升级包都有局限性:完整升级包太大;差分升级包限制太多(一旦基础包中的某个文件出现问题将导致升级失败)。
自定义升级包
需求:只对指定的文件或文件夹进行升级。
制作方法
在out\host\linux-x86\framework\目录下找到signapk.jar。
在build\target\product\security目录下找到testkey.pk8和testkey.x509.pem。
新建个目录,目录结构如下:
[shouyong@media online_update]$ tree
.
├── 0.0-0.1
│?? ├── META-INF
│?? │?? └── com
│?? │?? ├── android
│?? │?? │?? ├── metadata
│?? │?? │?? └── otacert
│?? │?? └── google
│?? │?? └── android
│?? │?? ├── update-binary
│?? │?? └── updater-script #(2),升级脚本
│?? ├── per_update.zip #(3) ,所有升级文件打成的包
│?? └── system #(1) ,要升级的文件
│?? ├── app
│?? │?? ├── Settings.apk
│?? │?? └── Home.apk
│?? ├── build.prop
│?? ├── framework
│?? │?? └── abc.jar
│?? └── lib
│?? └── libt2.so
├── mkpkg.bat # (4),制作升级包的脚本
├── signapk.jar #签名
├── testkey.pk8 #key
└── testkey.x509.pem 10 directories, 28 files
[shouyong@media online_update]$
分别对目录做了注解。
制作步骤
如下所示:
(1),准备要升级的文件;
(2),编写升级脚本(通用语法参考http://bbs.hiapk.com/thread-3302232-1-1.html,例子:http://blog.csdn.net/mu0206mu/article/details/7465603);
(3),使用压缩程序打包(可以使用rar或者linux的zip程序),必须是zip格式;
(4),修改脚本,修改“0.0-0.1/per_update.zip”为你自己的路径;
java -jar signapk.jar -w testkey.x509.pem testkey.pk8 0.0-0.1/per_update.zip update.zip
做 了如上修改后,直接运行脚本即可。就可以生产升级包了。
备注
其实updater-script脚本是与他同目录下的update-binary执行的,所以每个源码的updater-script很有可能都不一样具体要看接口实现;接口实现在bootable\recovery和bootable\recovery\updater,源代码搜索关键字:RegisterFunction。
甚至可以自定义接口。