在做系统App开发的时候经常需要使用到一些@hide的方法和变量,这就需要引用自己编译的framework.jar
1.从android源码中找到framework.jar
我的源码是android12,framework.jar路径如下
out/soong/.intermediates/frameworks/base/framework-minus-apex/android_common/combined/framework-minus-apex.jar
将 framework-minus-apex.jar重命名为
framework.jar
2.将framework.jar放入app的lib目录
3.在module的build.gradle里面加入依赖
compileOnly files('libs/framework.jar')
在根目录的build.gradle的allprojects节点中加入
gradle.projectsEvaluated { tasks.withType(JavaCompile) { options.compilerArgs << '-Xbootclasspath/p:app/libs/framework.jar' } }
4.接下来的操作有两种做法,
第一种是在module的build.gradle里面和android同级的地方加入
gradle.projectsEvaluated { tasks.withType(JavaCompile) { Set<File> fileSet = options.bootstrapClasspath.getFiles() List<File> newFileList = new ArrayList<>(); //将framework.jarc插入到最前面 newFileList.add(new File("libs/framework.jar")) //最后将原始的数据插入 newFileList.addAll(fileSet) options.bootstrapClasspath = files( newFileList.toArray() ) } }
第二种是插入到根目录build.gradle的allprojects节点中
5.重新build工程就可以引用到@hide的方法和变量了。