在做系统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的方法和变量了。
版权声明:本文为hool_wei原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。