开发中,有时须要用到非公开的API,在之前,通常是经过反射去调用隐藏的API,可是这样就会存在性能隐患。这里介绍如何将 framework.jar 导入到 Android Studio 中,以去掉反射java
由于我是作系统应用开发,常常须要编译整个系统源码,因此 framework.jar 能够直接获得。路径:
out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar
app
更名获得 framework.jaride
把 framework.jar 放到 app 模块的 libs 目录下性能
依次打开 File –> Project Structure –> Modules 中找到 app ,在右边选择 Dependencies 选项卡,点击左下角的 + 按钮,选择 File dependency ,在弹出的 Select Path 窗口中选择 libs 中的 framework.jargradle
在新增的 Dependencies 记录的右边,将 Compile 修改成 Provided ,点击 OK 保存修改,Provided 的做用是只参与编译,但不打包到apk中ui
在项目根 build.gradle 中加入如下内容lua
allprojects { repositories { jcenter() } gradle.projectsEvaluated { tasks.withType(JavaCompile) { options.compilerArgs << '-Xbootclasspath/p:app/libs/framework.jar' } } }
按照以上5步修改完成后,就能够写代码了,须要注意的是,隐藏的API依然关联不到,显示红色的,可是能够顺利编译经过。spa
解释一下代码的做用 allprojects 是要做用到全部的子模块上,tasks.withType(JavaCompile) 是在 javac 的 task 中加入一个参数,就是在 Xbootclasspath 增长本身的 jar 包code
做者:菜刀文
连接:http://www.jianshu.com/p/a25a85b6372d
來源:简书
著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。ci