原址

在使用 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相关推荐

  1. android eclipse中导入framework.jar以及使用其隐藏类的方法

    想使用开关3G的网络数据 ConnectivityManager cm =(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERV ...

  2. Android Studio(九):引用jar及so文件

    Android Studio相关博客: Android Studio(一):介绍.安装.配置 Android Studio(二):快捷键设置.插件安装 Android Studio(三):设置Andr ...

  3. 编译 framework.jar包

    编译 framework.jar包 今天在项目中遇到个非常头疼的问题,主要是因为自己第一次做Framework,对底层编译什么的完全不了解导致的. 情况是这样的,我们需要自己编译Framework运行 ...

  4. android studio安卓如何导入jar包?

    在安卓开发中我们难免遇到需要导入jar的时刻,那我们该如何正确的导入jar包呢? 其实方法很简单,不需要什么繁琐的操作.不说废话了,上图! 首先打开android studio 这是我用的版本 1.将 ...

  5. 加快Android Studio的编译速度

    从Eclipse切换到Android Studio后,感觉Android Studio的build速度比Eclipse慢很多, 以下几个方法可以提高Android Studio的编译速度 使用Grad ...

  6. 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 ...

  7. 在Android Studio上编译自己的Telegram

    在国内的人可能对Telegram了解的不多,因为用的多的还是微信QQ.所以,在开始这篇文章之前,我先引用维基百科上的内容介绍一下telegram. 历史 它在2013年由杜洛夫兄弟正式激活,也就是尼古 ...

  8. Android Studio Gradle编译异常

    Android Studio Gradle编译异常:Address already in use: Cannot bind或者编译失败乱码 这是由于操作系统是 Windows,并且打开了热点,有时会导 ...

  9. android studio可以反编译吗,android studio反编译教程

    android studio反编译教程 [2021-02-13 15:05:33]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(& ...

最新文章

  1. 移动前端开发经验小结
  2. android7.1.2 user版本打开usb调试功能
  3. 七十五、SpringBoot 的数据缓存cache(二)
  4. 2017.3.20上午
  5. 微型计算机中使用的光盘应属于什么媒体,计算机应用基础练习题
  6. MTK 驱动(73)--- Kernel Backtrace 无法显示出具体的地址.
  7. 关于使用C#编写一个简单的日志类
  8. java json转excel_JSON转EXCEL代码( java)
  9. 《Redis视频教程》(p8)
  10. 如何查看Spark日志与排查报错问题
  11. 超分辨率中PSNR的计算与bicubic插值
  12. Excel取消自动行高调整(取消自动换行)
  13. pyinstaller 打包exe启动慢的问题
  14. 在html中页面不全,网页显示不全,教您网页显示不全怎么办
  15. 违反唯一约束条件 ORA-00001
  16. Idea打字变成繁体
  17. 对finalize的理解
  18. 初始圈的选择matlab,基于MATLAB的最优算法案例分析——关于徐州潘安湖风景区游览路线设计...
  19. android 心率计算器,运动状态最佳心率计算器 (Target-Heart-Rate Calculator)
  20. python爬取豆瓣读书并进行图形化分析

热门文章

  1. 故障解决:三块300GSAS硬盘 一块硬盘状态灯为红色
  2. zabbix专题:第六章 动作Actions、告警方式Medias
  3. 每天一个linux命令(47):iostat命令
  4. 两种不同编码规则的查询
  5. windows 下rsync
  6. 通用for_each清理容器模板函数
  7. Screens的开发一
  8. Godot 2D 和 3D 游戏引擎
  9. nodejs 批处理执行 app.js
  10. win10安装pytorch很慢,如何解决?