先说我的应用场景,android板子嵌在机器里面。因为没有显示器,所以版本更新需要用到静默安装。先root...
静默更新流程:
1、服务里定时去检测是否有新的版本,下载新版本保存在本地
2、静默更新,系统签名
3、重启
本篇主要聊第二步静默更新,系统更新内容:
1、添加更新代码
// “-r” :替换 “-f” :安装
String result = execCommand("pm","install","-r","/mnt/sdcard/XXXXX.apk");
/*
* m命令可以通过adb在shell中执行,同样,我们可以通过代码来执行
*/
public static String execCommand(String ...command){
Process process=null;
InputStream errIs=null;
InputStream inIs=null;
String result="";
try{
process=newProcessBuilder().command(command).start();
ByteArrayOutputStream baos =newByteArrayOutputStream();
intread = -1;
errIs=process.getErrorStream();
while((read=errIs.read())!=-1){
baos.write(read);
}
inIs=process.getInputStream();
while((read=inIs.read())!=-1){
baos.write(read);
}
result=newString(baos.toByteArray());
if(inIs!=null)
inIs.close();
if(errIs!=null)
errIs.close();
process.destroy();
}catch(IOException e) {
result = e.getMessage();
}
returnresult;
}
2、添加权限
3、系统签名
注意上图红框内容,添加上项目会报错,因为是系统权限,这个可以不用管,接下往下做就好。
(1)接着给项目打不签名的apk:
项目右键 -- Android Tools -- Export Unsigned Application Package..
(2) 打系统签名包
系统签名工具:地址
(3)如上图将未签名的ShellDemo.apk复制到文件夹下,接下来就在命令行中打包:
见上图 进到文件夹 执行:java -jar signapk.jar platform.x509.pem platform.pk8 app_unsigned.apk app_signed.apk
ShellDemo_new.apk 即系统签名的apk.