Android 静默更新apk

任务:打开App检查服务器有无更新,有则下载,然后静默安装更新。
(1)下载更新app
(2)静默安装
参考链接

  1. http://blog.csdn.net/jiangwei0910410003/article/details/36427963

  2. http://blog.csdn.net/furongkang/article/details/6886526

内容:关于以上两个任务,网上已经有很多实例以及文字说明了,这里只是记录一下自己参考他们的博客后而写的代码demo。基本上参考上面两个链接就能完全实现改功能了。

(1)检测有无更新并下载
在服务器上放一个保存版本的update.xml文件,以及更新app
1.update.xml

<?xml version="1.0" encoding="utf-8"?>  <info>      <version>3.0version>      <url>http://192.168.1.103/updatedemo.apkurl>      <description>new viersiondescription>info> 

表示版本号,下载链接,说明

2.下载http://blog.csdn.net/furongkang/article/details/6886526
注意添加权限

3.静默安装(pm install -r XXX.apx)

调用 String result= execCommand("pm","install","-r",file.getPath());public static String execCommand(String ...command)  {          Process process=null;          InputStream errIs=null;          InputStream inIs=null;          String result="";          try {              process=new ProcessBuilder().command(command).start();              ByteArrayOutputStream baos = new ByteArrayOutputStream();              int read = -1;              errIs=process.getErrorStream();                       while((read=errIs.read())!=-1){                  baos.write(read);              }              inIs=process.getInputStream();              while((read=inIs.read())!=-1){                  baos.write(read);              }              result=new String(baos.toByteArray());              if(inIs!=null)                  inIs.close();              if(errIs!=null)                  errIs.close();              process.destroy();          } catch (IOException e) {              result = e.getMessage();          }          return result;      }  

其中apk的权限如下:

    <uses-permission android:name="android.permission.INTERNET"/>    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS">uses-permission>    <uses-permission android:name="android.permission.INSTALL_PACKAGES" />    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

并在manifest加入android:sharedUserId=”android.uid.system”
Android 静默更新apk_第1张图片

让然需要root权限,以及app需要系统签名。
系统签名步骤:
(1)从Eclipse导出未签名的apk
Android 静默更新apk_第2张图片
(2)在命令行里签名,需要用到一下几个文件
Android 静默更新apk_第3张图片
从android源码获取,build/target/product/security,./out/host/linux-x86/framework/
或者直接用find命令找,find -name “signapk.jar”
(3)签名
把待签名的apk和上面三个文件放在同一个文件夹下
java -jar signapk.jar platform.x509.pem platform.pk8 updatedemo.apk updatedemo_sign.apk
Android 静默更新apk_第4张图片
提示:到相应的目录下去执行命令,不然会提示error:unable to access jarfile

应该就完成了任务。更新的app也要同样签名!

demo运行环境:4412板子 android4.2.2
demo:代码

更多相关文章

  1. Linux下 解包/打包 Android 映像文件 system.img, boot.img, ram
  2. android 权限明细
  3. AndroidManifest.xml 配置文件
  4. Android 部分内容设置颜色、字体、超链接、图片
  5. Android Permission denied 错误(附Android权限大全)
  6. (Android)处理图片成圆形
  7. android判断应用是否有某个权限
  8. android:动态申请权限(一)
  9. Android 判断通知栏权限的问题

随机推荐

  1. Android(安卓)特殊用法
  2. android 自定义对话框
  3. Android(安卓)SDK Manager无法更新解决方
  4. 几个android实用网站
  5. Android(安卓)ListView滑动加载
  6. android简单的天气预报例子和XML解析
  7. Android: Android(安卓)Touch事件处理
  8. Android入门篇一:Android(安卓)Activity生
  9. 转载 《Android程序运行过程,Android》
  10. android基础(开发环境搭建)