Andorid通过反射实现静默安装

本文讲解通过反射Android pm instal来调用隐藏api, 来静默安装,至于原理什么的,就不多说了,网络上一搜一大把,下面是亲测可行的;
先上Demo,其中的libs文件夹下的class.jar是主角。
本文有一个大前提,那就是你的apk是放在系统/system/priv-app目录下,也就是说,rom是你们自己搞的,手动滑稽=。=
如果你是用AndroidStudio版本的,也是链接中的DemoSilenceInstall
步骤如下:

  • 建一个你自己的工程 ,将class.jar放入到libs目录下。

  • 然后projectStructure(按F4直接进),进入dependence点击+号,选择FileDependence 记得把 scope置为Provided,如下图:


    Andorid通过反射实现静默安装_第1张图片
    1.png
  • 工程目录下的gradle文件修改:
    allprojects {
    repositories {
    jcenter()
    }
    gradle.projectsEvaluated {
    tasks.withType(JavaCompile) {
    options.compilerArgs.add('-Xbootclasspath/p:app\libs\class.jar')
    }
    }
    }

名字,不要眼瞎,后面是你起的jar包的名字,这个名字随意取,两者对应就行.

以上的操作的目的有两个:
  1.就是将class.jar以eclipse中那种userlib的形式导入,
  2.调整jar包的优先级
  • 再将demo中install 包下的代码放到你的工程中.如果这个时候你的PM.java这个文件不报错,那么恭喜,你的操作就算完成了
  • 这个步骤我的代码出现了问题,不知道你的会不会,就是Android中65535问题了,也就是解决这个问题做的操作,AS下好解决,这个不做过多解释。

剩下的,就是将应用打包签名,放到/system/priv-app这个目录下 就ok了,

下面说下Eclipse版本的操作,代码都是一样的,jar包也是一样,就两点,jar包通过userlibrary的形式导入,直接放图吧,多图慎入:


Andorid通过反射实现静默安装_第2张图片
![Uploading 4_049957.png . . .]
Andorid通过反射实现静默安装_第3张图片
3.png
Andorid通过反射实现静默安装_第4张图片
4.png

![

![Uploading 6_086779.png . . .]
](http://upload-images.jianshu.io/upload_images/1453857-e6cde6675deb959b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

Andorid通过反射实现静默安装_第5张图片
6.png
Andorid通过反射实现静默安装_第6张图片
7.png
Andorid通过反射实现静默安装_第7张图片
8.png
Andorid通过反射实现静默安装_第8张图片
9.png
Andorid通过反射实现静默安装_第9张图片
![Uploading 10_162291.png . . .]
Andorid通过反射实现静默安装_第10张图片
11.png

至此,,搞定了,╮(╯▽╰)╭,继续搬砖。如果你要问这个class怎么来的,你找做rom的大神们给你编译一份源码就行,反正我不会。OTZ.... 然而这个地方在我写完文章后又出现了一个实战问题,那就是用multydex分包处理后,还是会出现 Too many classes in --main-dex-list, main dex capacity exceeded,,目前一个最简单暴力的方法就是把minsdkversion 调成21+,我在想想办法,,,,解决了更新文章。

(⊙o⊙)…,暂时没解决,不过上了一个新版本,用aidl实现的,也是可以用这里的...东西都差不多,jar包换了个精简的,然后改用aidl实现的注意,aidl的包名不要动,,,然后配置下gradle里面的aidl

你可能感兴趣的:(Andorid通过反射实现静默安装)