Android Studio使用编译framework.jar
原址
在使用 Android Studio 编译系统应用的时候,有时需要用到非公开的API,在以前,一般是通过反射去调用隐藏的API,但是这样就会存在性能隐患。这里介绍如何将 framework.jar 导入到 Android Studio 中,以去掉反射
1. 准备 framewrok.jar
因为我是做系统应用开发,经常需要编译整个系统源码,所以 framework.jar 可以直接得到。路径:out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar
改名得到 framework.jar
2. 把 framework.jar 放到项目中
把 framework.jar 放到 app 模块的 libs 目录下
3. 添加 app 模块对 framework.jar 的依赖
依次打开 File –> Project Structure –> Modules 中找到 app ,在右边选择 Dependencies 选项卡,点击左下角的 + 按钮,选择 File dependency ,在弹出的 Select Path 窗口中选择 libs 中的 framework.jar
4. 修改 Scope 为 Provided
在新增的 Dependencies 记录的右边,将 Compile 修改为 Provided ,点击 OK 保存修改,Provided 的作用是只参与编译,但不打包到apk中
5. 修改项目根目录的 build.gradle 文件
在项目根 build.gradle 中加入以下内容
allprojects {repositories {jcenter()}gradle.projectsEvaluated {tasks.withType(JavaCompile) {options.compilerArgs << '-Xbootclasspath/p:app/libs/framework.jar'}}
}
6. 编写代码
按照以上5步修改完成后,就可以写代码了,需要注意的是,隐藏的API依然关联不到,显示红色的,但是可以顺利编译通过。
最后
解释一下代码的作用 allprojects
是要作用到所有的子模块上,tasks.withType(JavaCompile)
是在 javac 的 task 中加入一个参数,就是在 Xbootclasspath
增加自己的 jar 包
Android Studio使用编译framework.jar相关推荐
- android eclipse中导入framework.jar以及使用其隐藏类的方法
想使用开关3G的网络数据 ConnectivityManager cm =(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERV ...
- Android Studio(九):引用jar及so文件
Android Studio相关博客: Android Studio(一):介绍.安装.配置 Android Studio(二):快捷键设置.插件安装 Android Studio(三):设置Andr ...
- 编译 framework.jar包
编译 framework.jar包 今天在项目中遇到个非常头疼的问题,主要是因为自己第一次做Framework,对底层编译什么的完全不了解导致的. 情况是这样的,我们需要自己编译Framework运行 ...
- android studio安卓如何导入jar包?
在安卓开发中我们难免遇到需要导入jar的时刻,那我们该如何正确的导入jar包呢? 其实方法很简单,不需要什么繁琐的操作.不说废话了,上图! 首先打开android studio 这是我用的版本 1.将 ...
- 加快Android Studio的编译速度
从Eclipse切换到Android Studio后,感觉Android Studio的build速度比Eclipse慢很多, 以下几个方法可以提高Android Studio的编译速度 使用Grad ...
- android studio ant编译,Android Studio编译cocos2dx项目
一.所需工具 1.Android studio2.3 2.cocos2dx3.10 3.jdk1.8 4.ndkr9d 5.sdk 6.ant 7.python2.7.14 二.配置环境变量 1.sd ...
- 在Android Studio上编译自己的Telegram
在国内的人可能对Telegram了解的不多,因为用的多的还是微信QQ.所以,在开始这篇文章之前,我先引用维基百科上的内容介绍一下telegram. 历史 它在2013年由杜洛夫兄弟正式激活,也就是尼古 ...
- Android Studio Gradle编译异常
Android Studio Gradle编译异常:Address already in use: Cannot bind或者编译失败乱码 这是由于操作系统是 Windows,并且打开了热点,有时会导 ...
- android studio可以反编译吗,android studio反编译教程
android studio反编译教程 [2021-02-13 15:05:33] 简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(& ...
最新文章
- 移动前端开发经验小结
- android7.1.2 user版本打开usb调试功能
- 七十五、SpringBoot 的数据缓存cache(二)
- 2017.3.20上午
- 微型计算机中使用的光盘应属于什么媒体,计算机应用基础练习题
- MTK 驱动(73)--- Kernel Backtrace 无法显示出具体的地址.
- 关于使用C#编写一个简单的日志类
- java json转excel_JSON转EXCEL代码( java)
- 《Redis视频教程》(p8)
- 如何查看Spark日志与排查报错问题
- 超分辨率中PSNR的计算与bicubic插值
- Excel取消自动行高调整(取消自动换行)
- pyinstaller 打包exe启动慢的问题
- 在html中页面不全,网页显示不全,教您网页显示不全怎么办
- 违反唯一约束条件 ORA-00001
- Idea打字变成繁体
- 对finalize的理解
- 初始圈的选择matlab,基于MATLAB的最优算法案例分析——关于徐州潘安湖风景区游览路线设计...
- android 心率计算器,运动状态最佳心率计算器 (Target-Heart-Rate Calculator)
- python爬取豆瓣读书并进行图形化分析