倒騰一下午,終於搞定了android的靜默安裝 步驟如下
1、 Manifest 配置
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.INSTALL_PACKAGES" /> <uses-permission android:name="android.permission.DELETE_PACKAGES" /> <uses-permission android:name="android.permission.CLEAR_APP_CACHE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.CLEAR_APP_USER_DATA" />
android:sharedUserId="android.uid.system"
2、安裝代碼
private String install(String apkAbsolutePath) { String[] args = { "pm", "install", "-f", apkAbsolutePath }; String result = ""; ProcessBuilder processBuilder = new ProcessBuilder(args); Process process = null; InputStream errIs = null; InputStream inIs = null; try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); int read = -1; process = processBuilder.start(); errIs = process.getErrorStream(); while ((read = errIs.read()) != -1) { baos.write(read); } inIs = process.getInputStream(); while ((read = inIs.read()) != -1) { baos.write(read); } byte[] data = baos.toByteArray(); result = new String(data); } catch (Exception e) { // TODO: handle exception } return result; }
3 簽名生成apk
4 將生成apk和幾個權限文件放在同一文件夾
用rar打開apk,將META-INF目錄下,將CERT.SF和CERT.RSA這兩個文件刪除掉
5 執行命令
java -jar signapk.jar platform.x509.pem platform.pk8 原apk.apk 目標apk.apk
卸載也是同樣pm uninstall命令
參考:http://blog.sina.com.cn/s/blog_456baf5e0101374i.html
http://bbs.51cto.com/thread-968264-1.html