Android 4.0.4系统在线升级实现过程中的一些问题总结
2013-02-08 15:44
537 查看
最近有个项目需要自己实现系统升级功能,于是调查了一番,发现网上资料不少,但是比较混乱,花了好一番功夫才实现了这个功能,这里记录一下这个过程中遇到的问题,希望对以后需要自己做系统升级的兄弟姐妹们有所帮助。
总的来说,代码是比较简单的,如果你只是要升级,那么调用RecoverySystem.installPackage()这个函数就行了。如果还想验证升级包的正确性,那就要在RecoverySystem.installPackage()之前调用一下RecoverySystem.verifyPackage()这个函数。
那么问题在哪里呢?
升级包的位置。升级包需要放在/cache目录下;
权限。需要在AndroidManifest.xml里添加
<uses-permission android:name="android.permission.ACCESS_CACHE_FILESYSTEM" />和
<uses-permission android:name="android.permission.REBOOT" />权限,
网上有人说需要添加<uses-permission android:name="android.permission.DELETE_CACHE_FILES" />,这其实是不需要的;
不需要android:sharedUserId="android.uid.system"。系统升级不需要system用户权限,而且加上这个之后,你会发现无法访问/mnt/sdcard下的文件了,即使加上
<uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />,
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />和
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />权限
需要系统签名。apk出来后,需要系统签名。要签名一个没有签名过的APK,可以使用一个叫作Auto-sign的工具。Auto-sign工具实际运行的是一个叫做Sign.bat的批处理命令。用文本编辑器打开这个批处理文件,我们可以发现,实现签名功能的命令主要是这一行命令:
java -jar signapk.jar testkey.x509.pem testkey.pk8 update.apk update_signed.apk
这条命令的意义是:通过signapk.jar这个可执行jar包,以“testkey.x509.pem”这个公钥文件和“testkey.pk8”这个私钥文件对“update.apk”进行签名,签名后的文件保存为“update_signed.apk”。关于签名的详细介绍,请参见《Android签名机制》
其他一些可供参考的资源:
《Android 2.2系统在线升级的移植》
《Android系统Recovery工作原理之使用update.zip升级过程分析》
《android recovery模式及ROM制作》
总的来说,代码是比较简单的,如果你只是要升级,那么调用RecoverySystem.installPackage()这个函数就行了。如果还想验证升级包的正确性,那就要在RecoverySystem.installPackage()之前调用一下RecoverySystem.verifyPackage()这个函数。
那么问题在哪里呢?
升级包的位置。升级包需要放在/cache目录下;
权限。需要在AndroidManifest.xml里添加
<uses-permission android:name="android.permission.ACCESS_CACHE_FILESYSTEM" />和
<uses-permission android:name="android.permission.REBOOT" />权限,
网上有人说需要添加<uses-permission android:name="android.permission.DELETE_CACHE_FILES" />,这其实是不需要的;
不需要android:sharedUserId="android.uid.system"。系统升级不需要system用户权限,而且加上这个之后,你会发现无法访问/mnt/sdcard下的文件了,即使加上
<uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />,
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />和
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />权限
需要系统签名。apk出来后,需要系统签名。要签名一个没有签名过的APK,可以使用一个叫作Auto-sign的工具。Auto-sign工具实际运行的是一个叫做Sign.bat的批处理命令。用文本编辑器打开这个批处理文件,我们可以发现,实现签名功能的命令主要是这一行命令:
java -jar signapk.jar testkey.x509.pem testkey.pk8 update.apk update_signed.apk
这条命令的意义是:通过signapk.jar这个可执行jar包,以“testkey.x509.pem”这个公钥文件和“testkey.pk8”这个私钥文件对“update.apk”进行签名,签名后的文件保存为“update_signed.apk”。关于签名的详细介绍,请参见《Android签名机制》
其他一些可供参考的资源:
《Android 2.2系统在线升级的移植》
《Android系统Recovery工作原理之使用update.zip升级过程分析》
《android recovery模式及ROM制作》
相关文章推荐
- Android 4.0.4系统在线升级实现过程中的一些问题总结
- Android系统Recovery工作原理之使用update.zip升级过程分析(二)---update.zip差分包问题的解决
- Android系统Recovery工作原理之使用update.zip升级过程分析(二)---update.zip差分包问题的解决
- Android系统Recovery工作原理之使用update.zip升级过程分析(二)---update.zip差分包问题的解决
- Android系统Recovery工作原理之使用update.zip升级过程分析(二)---update.zip差分包问题的解决
- Android系统Recovery工作原理之使用update.zip升级过程分析(二)---update.zip差分包问题的解决
- 最近一年做Android项目过程中,对其的一些注意事项(优化)以及问题总结(二)
- Android系统工具之Roblectric 使用过程中问题总结
- Android系统Recovery工作原理之使用update.zip升级过程分析(二)---update.zip差分包问题的解决
- Android系统Recovery工作原理之使用update.zip升级过程分析(二)---update.zip差分包问题的解决
- Android系统Recovery工作原理之使用update.zip升级过程分析(二)---update.zip差分包问题的解决
- Android系统Recovery工作原理之使用update.zip升级过程分析(二)---update.zip差分包问题的解决
- 关于android 系统选图crash问题的一些问题总结
- Android系统Recovery工作原理之使用update.zip升级过程分析(二)---update.zip差分包问题的解决
- Android系统Recovery工作原理之使用update.zip升级过程分析(二)---update.zip差分包问题的解决
- Android系统Recovery工作原理之使用update.zip升级过程分析(二)---update.zip差分包问题的解决
- Android-MediaPlayer实现在线播放网络音频过程中的一些问题
- Android系统Recovery工作原理之使用update.zip升级过程分析(二)---update.zip差分包问题的解决
- 学习《JSP项目开发全程实录》中的企业人力资源管理系统(spring1.2+sturts1.2+hibernate3.0)的一些过程总结之管理员登录ACTION的实现
- Android系统Recovery工作原理之使用update.zip升级过程分析(二)---update.zip差分包问题的解决