1 触发方式
app安装时候 进入welcome欢迎界面 然后通过http访问web后端服务
2 下载
此刻将自己的版本号与后端的版本号比对,http返回的是新的版本号,则进行下载
参考链接:
-
http://blog.csdn.net/jiangwei0910410003/article/details/36427963
-
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>
表示版本号,下载链接,说明
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"/>
并在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也要同样签名!