在eclipse上很容易引入自己编译的android framework来使用系统隐藏的API,在android studio上就有点麻烦了,在gradle 1.0以前可以设置Provided编译属性来支持编译但不打包到dex里面,可是在新的gradle版本上是不行的,不知道google为什么会取消这个属性。
那在gradle新版本上要怎么引用framework来编译但又不打包到dex里面呢?我们可以这样设置:
allprojects {
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs.add('-Xbootclasspath/p:android_framework.jar')
}
}
}
可以在最外层的gradle.build里设置,这样在所有工程里面都起作用,至于-Xbootclasspath/p 是什么意思呢?
-Xbootclasspath是设定在指定路径中装载系统运行时类,我们一般不会怎么用,除非我们能写一个自己的运行时,所以我们一般会用到下面两个参数:
-Xbootclasspath/a:path,先搜索缺省路径在搜索path中的路径。
-Xbootclasspath/p:path,先搜索path中的路径在搜索缺省路径。
所以,我们上面的方法其实就是设置java的编译参数而已。