Android 4.0.4系统在线升级实现过程中的一些问题总结
来源:互联网 发布:淘宝快递代发 编辑:程序博客网 时间:2024/06/13 14:30
最近有个项目需要自己实现系统升级功能,于是调查了一番,发现网上资料不少,但是比较混乱,花了好一番功夫才实现了这个功能,这里记录一下这个过程中遇到的问题,希望对以后需要自己做系统升级的兄弟姐妹们有所帮助。
总的来说,代码是比较简单的,如果你只是要升级,那么调用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 4.0.4系统在线升级实现过程中的一些问题总结
- Android SDK Tools 升级到15,Android 4.0(API 14) 过程中的一些问题
- Android-MediaPlayer实现在线播放网络音频过程中的一些问题
- N2N配置过程中的一些问题总结
- StreamCompressor实现过程中的一些问题
- Android开发过程中的一些小问题
- Android开发过程中的问题及总结
- android软件在线升级的实现
- 总结yourphp应用过程中的一些问题及解决方法
- 实现string类过程中的一些疑问和总结
- 学习过程中的一些总结
- android系统增量升级问题
- android系统增量升级问题
- 开发过程一些问题总结
- 配置过程中的一些问题
- C#实现在线升级
- Android系统工具之Roblectric 使用过程中问题总结
- 初探JVM-ClassLoader源码
- Ubuntu(Linux) 下 zip 命令使用详
- UVa 10473 Simple Base Conversion (两句话实现进制转换)
- .c 文件和 .h 文件的区别 以及 链接出错的问题(四)
- 冒泡法排序8086汇编语言实现
- Android 4.0.4系统在线升级实现过程中的一些问题总结
- 关于ubuntu1204下安装samba的几点记录
- ****** 如何使Android应用程序获取系统权限
- 文献检索与阅读技巧:如何高效的阅读和学习论文文献
- xaml中VisualState的使用
- ajaxFileUpload上传文件时传参 返回json
- 从epoll构建muduo-11 单线程Reactor网络模型成型
- 使用Ajax来自动帮用户填写信息
- Django DateField DateTimeField TimeField