先說我的應用場景囚似,android板子嵌在機器里面闻伶。因為沒有顯示器滨攻,所以版本更新需要用到靜默安裝。先root...
靜默更新流程:
1、服務里定時去檢測是否有新的版本光绕,下載新版本保存在本地
2女嘲、靜默更新,系統(tǒng)簽名
3诞帐、重啟
本篇主要聊第二步靜默更新欣尼,系統(tǒng)更新內(nèi)容:
1、添加更新代碼
// “-r” :替換? ?“-f” :安裝
String result = execCommand("pm","install","-r","/mnt/sdcard/XXXXX.apk");
/*
* m命令可以通過adb在shell中執(zhí)行停蕉,同樣愕鼓,我們可以通過代碼來執(zhí)行
*/
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、添加權(quán)限
3慧起、系統(tǒng)簽名
注意上圖紅框內(nèi)容菇晃,添加上項目會報錯,因為是系統(tǒng)權(quán)限蚓挤,這個可以不用管磺送,接下往下做就好。
(1)接著給項目打不簽名的apk:
項目右鍵 -- Android Tools -- Export Unsigned Application Package..
(2) 打系統(tǒng)簽名包
系統(tǒng)簽名工具:地址
(3)如上圖將未簽名的ShellDemo.apk復制到文件夾下屈尼,接下來就在命令行中打包:
見上圖 進到文件夾 執(zhí)行:java -jar signapk.jar platform.x509.pem platform.pk8 app_unsigned.apk app_signed.apk
ShellDemo_new.apk 即系統(tǒng)簽名的apk.