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

2019-12-10 19:14:28于海丽

每个版本的系统源码里面的aidl可能会不一样,所以具体调用的方法和参数,还得根据实际情况而定,需要去仔细阅读Pm.java这个文件的源码。
在其他版本可能只需要拷贝这4个文件:PackageManager.java、 IPackageDeleteObserver.aidl 、IPackagerInstallObserver.aidl、 IPackageMoveObserver.aidl
然后,还需在配置清单文件里面添加INSTALL_PACKAGE权限

<uses-permission android:name="android.permission.INSTALL_PACKAGES"/> 

然后把该应用的uid设置为系统级别的,在manifest标签下添加以下属性

android:sharedUserId="android.uid.system" 

仅仅这样的话,还是没法实现静默安装,因为系统并不认为你这个app是系统级别的应用,所以,还应该对该应用的APK进行系统签名(注意:不是那个静默安装的APK,是这个实现静默安装程序的APK)。签名过程如下:
总共需要三个文件:

  • 1、SignApk.jar                      %系统源码%/out/host/linux-x86/framework/signapk.jar
  • 2、platform.x509.pem          %系统源码%/build/target/product/security/platform.x509.pem
  • 3、platform.pk8                    %系统源码%/build/target/product/security/platform.pk8

    打开终端,执行命令 java -jar SignApk.jar platform.x509.pem platform.pk8 未签名APK 签名后APK,例如
    java -jar SignApk.jar platform.x509.pem  platform.pk8 AutoInstall.apk AutoInstall_new.apk