Android Studio 优先源码编译的framework.jar(使用系统隐藏的api)

2023-11-04

引言
场景:做系统开发或者想使用隐藏的api时,通常只能使用反射的方式,
缺点:需要使用的api或变量太多时不方便使用。
解决办法:将需要在编译时使用的jar包参与编译,不编译到产品apk里,使app运行时调用的是系统api

步骤(每一步都必须正确)
1、将jar包放入libs目录,如下图(jar包自行编译或到github下载https://github.com/anggrayudi/android-hidden-api)
在这里插入图片描述
2、在app 的build.gradle加入参与编译的jar

dependencies {
   
        compileOnly files('libs/framework.jar')
}

3、调整 .iml里配置的引用库的优先级。
作用是使待使用的jar包优先于android.jar.

在app 的build.gradle加入以下代码,注意App.iml的路径

preBuild {
   
    doLast {
   
        //***需要使用你项目中的App.iml的路径 (不同的项目结构路径不一样,请在自己的项目中找,路径不对就会达不到效果)***
        def imlFile = file("../.idea/modules/App/App.iml")
        println 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Studio 优先源码编译的framework.jar(使用系统隐藏的api) 的相关文章

随机推荐

  • Python入门--关键字

    关键字是Python编程语言中具有特殊含义的保留单词 不能用作变量名 函数名 类名或其他标识符 以下是Python 3 9 0版本中的关键字列表 False None True and as assert async await break
  • 将 varchar 转换为数据类型 numeric 时出现算术溢出错误

    SQL Server 2005 中 如果使用5位以上的字符串转换为numeric时就会出现 将 varchar 转换为数据类型 numeric 时出现算术溢出错误 这样的错误 如果使用5位以下 含5位 的就不会出错
  • Python笔记18-继承&函数重写

    一 继承 重点掌握 1 概念 如果两个或者两个以上的类具有相同的属性和方法 我们可以抽取一个类出来 在抽取出来的类中声明各个类公共的部分 被抽取出来的类 父类 father class 超类 super class 基类 base clas
  • Java List转换成String数组

    实现代码 List
  • Android阿里云推送离线通知集成踩坑之路

    最近因为公司后台服务器买的是阿里云的服务 所以把友盟的推送换成了阿里云推送 首先不得不说 文档写得很差 兼容性和适配做得也不是很好 加了技术支持群 但是里面的同学问一个问题半天才有回复 好了 不扯谈 直接上代码 1 添加依赖 由于公司项目是
  • C++ 计算数组长度

    实现程序如下 include
  • Sublime Text3 BracketHighlighter

    BracketHighlighter 括号匹配插件 修改Preferences gt Package Settings gt BracketHighlighter gt Bracket Settings 修改settings User文件
  • 深入理解Gradle、Maven等JAVA项目的构建工具

    目录 简单概括构建工具的作用 构建工具的具体作用 Gradle和Maven的比较 简单概括构建工具的作用 构建工具用于自动化构建 编译 测试 和打包软件项目极大地简化软件开发的过程 提高开发效率和可靠性 让开发者更加专注于业务逻辑和代码实现
  • 云计算基本概念

    云计算的定义 1 云计算是同时描述一个系统平台或者一类应用程序的术语 云计算平台按需进行动态部署 Provision 部署 Configuration 重新部署 Reconfigure 以及取消服务 Deprovision 等 在云计算平台
  • Reducer buckets have been rebuilt in this iteration.

    在跑torch多GPU报错 Reducer buckets have been rebuilt in this iteration 原因是torch版本问题 torch1 7以上的distributed py发生更改导致报错 这玩意是dis
  • pymysql 重连

    self conn ping reconnect True
  • js给json格式的数组中每一项添加

    for let i 0 i lt this theme length i for let j 0 j lt dayarr length j this theme i day dayarr j
  • DevExpress GridControl复合表头(多行表头)设置

    首先 DevExpress XtraGrid的GridControl复合表头或多行表头的示例 界面如下图所示 实现步骤 1 将DevExpress的GridControl转换为BandedGridView 具体如下图 2 设置显示列及绑定的
  • SpringBoot 整合 kafka 遇到的版本不对应问题

    SpringBoot 整合 kafka 需要在SpringBoot项目里增加kafka的jar 而最为关键的一点是版本要对应好 如果你的SpringBoot是2 0 3版本
  • 国际版阿里云/腾讯云:弹性高性能计算E-HPC入门概述

    入门概述 本文介绍E HPC的运用流程 帮助您快速上手运用弹性高性能核算 下文以创立集群 在集群中安装GROMACS软件并运转水分子算例进行高性能核算为例 介绍弹性高性能核算的运用流程 帮助您快速上手运用弹性高性能核算 运用流程如下图所示
  • Jmeter —— 录制脚本

    1 第一步 添加http代理服务器 在测试计划 添加 非测试元件 http代理服务器 2 第二步 添加线程组 这个线程组是用来放录制的脚本 不添加也可以 就直接放在代理服务器下 测试计划 添加 线程 线程组 顺便讲一下线程组执行顺序 set
  • Idea快捷键(快速开发)

    Idea快捷键 快捷键 功能 Alt Enter 快速修复选择 Alt Insert 生成代码 如set get 构造方法等 Alt 切换到左侧视图 Alt 切换到右侧视图 Shift Shift 搜索文件 Ctrl D 复制当前一行 插入
  • CH8-排序

    文章目录 1 基本概念和排序方法概述 1 1 排序方法的分类 1 2 存储结构 顺序表 2 插入排序 2 1 插入排序的种类 直接插入 折半插入 希尔排序 3 交换排序 3 1 冒泡排序 3 2 快速排序 4 选择排序 4 1 直接排序 4
  • 【Spring Security】UserDetails 接口介绍

    文章目录 UserDetails 的作用 UserDetails 接口中各个方法详解 UserDetails 的作用 UserDetails 在 Spring Security 框架中主要担任获取用户信息的接口 通过该接口就能拿到用户的信息
  • Android Studio 优先源码编译的framework.jar(使用系统隐藏的api)

    引言 场景 做系统开发或者想使用隐藏的api时 通常只能使用反射的方式 缺点 需要使用的api或变量太多时不方便使用 解决办法 将需要在编译时使用的jar包参与编译 不编译到产品apk里 使app运行时调用的是系统api 步骤 每一步都必须