倒腾一下午,终于搞定了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