app静默升级

1 触发方式

app安装时候  进入welcome欢迎界面  然后通过http访问web后端服务

2 下载

此刻将自己的版本号与后端的版本号比对,http返回的是新的版本号,则进行下载

参考链接

  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.0</version>  
    <url>http://192.168.1.103/updatedemo.apk</url>  
    <description>new viersion</description>
</info> 
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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

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;  
    }  
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

其中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"/>
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

并在manifest加入Android:sharedUserId=”android.uid.system” 
这里写图片描述

让然需要root权限,以及app需要系统签名。 
系统签名步骤: 
(1)从Eclipse导出未签名的apk 
这里写图片描述 
(2)在命令行里签名,需要用到一下几个文件 
这里写图片描述 
从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 
这里写图片描述
提示:到相应的目录下去执行命令,不然会提示error:unable to access jarfile

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


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值