android实现静默升级

                   首先说下项目背景:智能音箱,内置的是安卓系统,然后通过开发的播放器apk来进行音乐播放等其他操作,因为音箱是没有显示屏的所以播放器的apk升级就必须通过静默升级来实现。

                  在网上看了很多别人的实现方法,最终的实现也是借鉴了大家的方法,所以这篇博文算是对大家提供的方法的整合。

                  如果要实现静默安装需要的条件很苛刻,所以如果想在所有rom上实现几乎是不可能的,但是适用于只针对一种rom并且拥有这个源码的项目,像我这次的项目只要在音箱上实现静默升级就可以了,下面来具体说下为什么条件这么苛刻。

                 这次项目音箱的rom是定制的4.0版本,经过这两天的测试总结出要实现静默安装必须通过pm命令来安装apk(install命令),并且被安装的apk必须放在data/app/文件夹下才能安装成功。而要想使用pm命令必须拥有系统级权限,这就是为什么需要rom源码的原因,博主是通过系统签名来获取系统级权限的,所以也注定了这个方法只能在使用此系统签名的rom上使用。由于音箱没有显示屏所以apk需要开机自启动,而android4.0后系统由于安全策略限定只有system/app下的应用以及运行过一次的apk才能接收到系统开机广播,同时获取系统权限的apk不能访问到sd卡里的资源而播放器有大量资源存放在sd卡中,所以就不能通过播放器本身来自启动以及静默升级。博主的解决方法是另起一个守护程序,来实现开机自启动以及静默升级。守护程序很简单,只有一个service,service中启动一个线程每隔两秒就遍历正在运行的程序,看播放器apk是否正在运行(再次吐槽没有显示屏,播放器如果死了整个音箱就废了),如果播放器因为意外情况挂了就把播放器重新启动起来,并且查看升级文件是否存在(升级文件由播放器负责下载),如果升级文件存在就把升级文件复制到data/app/文件夹下,然后卸载当前播放器安装更新版本,并且把播放器重新启动,这样就实现所有的目的了(守护程序经过系统签名并监听了开机广播然后放在system/app下成为系统级应用了)。

   第一次写博文,乱七八糟写了一堆,请见谅!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值