Android 4.0.4系统在线升级实现过程中的一些问题总结

转载 2013年12月02日 01:29:00
最近有个项目需要自己实现系统升级功能,于是调查了一番,发现网上资料不少,但是比较混乱,花了好一番功夫才实现了这个功能,这里记录一下这个过程中遇到的问题,希望对以后需要自己做系统升级的兄弟姐妹们有所帮助。

       总的来说,代码是比较简单的,如果你只是要升级,那么调用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签名机制

 其他一些可供参考的资源:

搭建服务器过程中遇到的问题总结

1.  要用自己电脑搭建个服务器,   则需要一个服务器的环境,  用的是个开源的集成的软件  WAMP, 安装好后  ,打开 localhost可能打不开,  原因则是 它默认使用的80端口被电脑里...
  • softuse
  • softuse
  • 2015年10月27日 17:12
  • 275

Android实现在线更新的过程案例

一、更新软件的准备 在线更新软件的话需要我们有签名的应用,我们需要把签过名之后的软件放入到服务器中,我的如下: 其中apk是有签名的更新版本! updateinfo.html...
  • u010870518
  • u010870518
  • 2015年03月15日 20:50
  • 2728

尝试编译android-4.0.4_r2.1

这几天第一次尝试编译andorid,顺利编译了android-4.0.4_r2.1和android-2.3.7_r1,这两个分别是4.0和2.3的最后版本。 也尝试编译最新的android-4.1....
  • niyufeng
  • niyufeng
  • 2012年10月04日 19:11
  • 4723

通过MCU实现Altera FPGA在线升级

一.问题背景  在实际工程应用中,我们时常会遇到为解决某个老产品的BUG,需要在工程现场更新设备的FPGA代码,或者参加电信测试时需要现场升级设备FPGA程序以便于调试。公司现阶段所用的Altera...
  • hpu11
  • hpu11
  • 2017年04月27日 15:11
  • 978

Android OTA在线升级二

http://lhc180.blog.51cto.com/316940/757347  Android OTA空中升级的文档不少。但是多是介绍原理的和分析代码的。原理我就不说...
  • yanleizhouqing
  • yanleizhouqing
  • 2015年12月09日 11:45
  • 775

ubuntu系统在线升级

目前13.04仍然是beta或alpha测试阶段,所以这意味着它不是完全稳定,并且可能包含错误和问题。您可以尝试在测试机器上的升级,而不是一个正是的生产系统,或等到4月25日13.04最终被释放,然后...
  • chengyuanJJ
  • chengyuanJJ
  • 2014年04月14日 20:56
  • 1930

基于http协议的在线升级系统

  基于http协议的在线升级系统摘要       做了一个省级项目,由于采用了三层的架构(前端pb,java做web服务),从这些年的项目经验上来,这种架构有非常严重的缺陷,首先是维护的成本上,很多...
  • li_xj
  • li_xj
  • 2006年12月01日 17:17
  • 2075

Android4.0有时接收不到开机广播

 经过分析测试发现,如果应用程序安装上始终没有被打开过,那么在Android启动时,该应用无法接收到开机启动广播android.permission.RECEIVE_BOOT...
  • dongsheng186
  • dongsheng186
  • 2015年03月03日 14:22
  • 265

用VC++实现版本在线升级

现在很多共享软件都有"在线升级"功能,比如"Windows 优化大师","超级兔子",所谓在线升级就是一个版本检测程序,通过他,用户可以随时检查有没有新版本程序,以便及时升级,下面我们就在自己的程序里...
  • ice197983
  • ice197983
  • 2007年03月21日 17:13
  • 1694

dsp 28377在线升级 实例总结

使用dsp品台28377d来实现在线升级的功能。 方案 : 升级程序  +  应用程序 升级程序 : 主要的目的是将上位机发送过来的应用程序数据(ccs编译生成的.bin文件)烧写到指定位置,...
  • taiyangshenniao
  • taiyangshenniao
  • 2017年01月03日 14:57
  • 1631
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 4.0.4系统在线升级实现过程中的一些问题总结
举报原因:
原因补充:

(最多只允许输入30个字)