Android Studio编译引用系统@hide api
1.问题叙述
在APP开发中,Android Studio工程无法引用framework.jar带有@hide的api,但是在framework开发中需要引用到系统的@hide接口,为了在AS中开发,需要做如下配置。
2.配置步骤
- 从android源码的如下目录中获取class.jar (这里的class.jar包含了系统中被标注了@hide的api)
out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar
将framework.jar拷贝到APP的工程目录的libs目录下.
配置build.gradle
1 | dependencies { |
- 在根目录build.gradle中加入,
-Xbootclasspath/p:
后面加入framework.jar的路径
1 | allprojects { |
- 然后编译工程。系统hide API在AS中一样是红色的,但是可以正常编译通过运行。
3.编译报错
引入的framework.jar只能用compileOnly,不能用implement,否则会报如下错误,注释掉implementation也是这个原因
1 | Caused by: java.lang.ArrayIndexOutOfBoundsException: 65535 |
此文章版权归Jack Ou所有,如有转载,请註明来自原作者