签名流程:

前提: 拿到系统的签名文件platform.x509.pem 和 platform.pk8,同时找到signapk.jar工具包(android源码中有对应类,可以拿到源码后

手动生成jar文件)

具体步骤如下:
1. 将下载完毕的apk文件重新签名,文件签名和系统签名保存一致。
java -jar signapk.jar platform.x509.pem platform.pk8 待签名.apk 已签名.apk
2. 执行"pm", "install", "-r", apkInstallPath。开始安装。
附代码:

/**Android静默安装实现*/public static void silenceInstall(String apkInstallPath) {String[] args = { "pm", "install", "-r", apkInstallPath + "mobile_client_2.1.apk" };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);}baos.write('\n');inIs = process.getInputStream();while ((read = inIs.read()) != -1) {baos.write(read);}byte[] data = baos.toByteArray();result = new String(data);} catch (IOException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();} finally {try {if (errIs != null) errIs.close();if (inIs != null) inIs.close();} catch (IOException e) {e.printStackTrace();}if(process != null) process.destroy();}Log.d("mylog", "执行静默安装后的返回值:" + result);}

================================================================================

在代码中实现签名:

/*** apk文件签名实现* @param apkPrePath   签名前的文件路径* @param apkCurPath    生成签名后的文件路径*/public void signToApk(String apkPrePath, String apkCurPath) {Toast.makeText(MainActivity.this, apkPrePath, Toast.LENGTH_SHORT).show();String[] args = { "java", "-jar", apkPrePath + "signapk.jar", apkPrePath + "platform.x509.pem.pem", apkPrePath + "platform.pk8.pk8", apkPrePath + "mobile_360_client_2.1.apk", apkPrePath + "mobile_360_client_2.1_cur.apk"};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);}baos.write('\n');inIs = process.getInputStream();while ((read = inIs.read()) != -1) {baos.write(read);}byte[] data = baos.toByteArray();result = new String(data);} catch (IOException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();} finally {try {if (errIs != null) errIs.close();if (inIs != null) inIs.close();} catch (IOException e) {e.printStackTrace();}if(process != null) process.destroy();}}

如果是在命令行中生成签名, 则直接在cmd窗口中输入java -jar signapk.jar platform.x509.pem platform.pk8 待签名.apk 已签名.apk即可。

具体细节参见了链接:

http://blog.csdn.net/sodino/article/details/6238818

http://www.eoeandroid.com/thread-71412-1-1.html

Android 实现静默安装相关推荐

  1. android adb 静默安装,Android_如何静默安装

    Android常用代码之普通及系统权限静默安装APK 本文主要介绍程序如何安装apk,包括普通模式安装和系统权限静默安装. 如果是非系统应用请直接查看:Android常用代码之APK root权限静默 ...

  2. Android系统静默安装预置应用宝

    Android系统预置应用宝 如果直接按照常规方案预置应用宝到system/app下的话,会报好多Selinux错误,导致应用闪退 而应用宝又申请了好多并不需要的权限例如su 本来的方案是第一次开机时 ...

  3. android程序自动卸载软件,Android应用静默安装和卸载

    App的静默安装和卸载 Android系统本身提供了安装卸载功能,但是api接口是@hide的,不是公开的接口,所以在应用级别 是无法实现静默安装和卸载的,要实现静默安装和卸载需要是系统应用,要有系统 ...

  4. adb 静默安装_怎么实现Android APP静默安装

    在 Android 中,如果要使用系统限制的权限(比如 android.permission.WRITE_SECURE_SETTINGS),我们需要把程序安装到 /system/app/ 下. 下面以 ...

  5. Android 无需root实现apk的静默安装

    转载请注明出处:http://blog.csdn.net/yyh352091626/article/details/50533137 Android的静默安装似乎是一个很有趣很诱人的东西,但是,用普通 ...

  6. Android 9 P静默安装/卸载App适配终极指南

          Android 9 (P)静默安装/卸载App适配终极指南 Android 9 (P)开发适配指南系列博客目录: Adnroid 9 (P) recovery升级Map of '@/cac ...

  7. Android 静默安装和智能安装的实现方法

    1 简介 最近研究了Android的静默安装和智能安装,于是写博客记录一下. 静默安装就是无声无息的在后台安装apk,没有任何界面提示. 智能安装就是有安装界面,但全部是自动的,不需要用户去点击. 首 ...

  8. 非ROOT实现静默安装的一些思考与体会,AIDL获取IPackageManager,反射ServiceManager,系统签名

    非ROOT实现静默安装的一些思考与体会,AIDL获取IPackageManager,反射ServiceManager,系统签名 最近自家的系统要做一个升级服务,里面有三个功能,第一个是系统升级,也就是 ...

  9. Android采用pm实现静默安装(降级安装)的解决方案

    最近在做一个apk分析器,里面可以解析系统中所有安装app的信息,并提供组内开发的apk文件下载.静默安装(包括降级安装),其中在降级安装中难度较大,在Android4.4与Android 8的解决方 ...

最新文章

  1. python基础常用语句-Python基础6—常用语句
  2. surf三维画图[matlab]
  3. Spring JDBC-Spring对事务管理的支持
  4. php执行dmidecode,Python:Dmidecode系统信息
  5. 迷宫问题---递归解决
  6. Kotlin学习笔记30 补充 作用域函数
  7. 分析redis key大小的几种方法
  8. 20151026作业
  9. CATIA二次开发—遍历结构树
  10. 机器人足球比赛linux,机器人足球实验报告.doc
  11. 手把手教你规划IP地址
  12. Maven笔记 - 第十章
  13. 刷题42-m升水倒入n个杯子(动态规划)
  14. 2019年,个人年终总结
  15. it民工的华丽亦或是失败的转型(一)
  16. 假设今天是2015年3月1号星期日,计算13个月零6天后是星期几?距离现在多少秒?
  17. PeopleSoft 登录页面更换
  18. Python实现云词图效果
  19. opencv 图像拼接和图像融合技术
  20. C++第一课(初识C++)

热门文章

  1. 22. Python 模块2
  2. C中的extern-static-const关键词
  3. struts2的标签中得到JSP脚本的变量值
  4. 关闭window 8.1 的skydrive
  5. 随机生成A~Z的字母CharDemo
  6. 英特尔玩VR有多认真?看看Project Alloy的细节就知道了
  7. 如何隐藏scroll-Y纵向滚动条,并不影响内容滚动的方法
  8. 信息系统项目管理师---运筹学计算
  9. 《iOS应用开发指南——使用HTML5、CSS3和JavaScript》——第1章 变小的巨大影响1.1 移动魔力和掌上电脑...
  10. 一个实用的String实现类(C++)