Lineageos 22.1(Android 15) 编译隐藏API的 android.jar

一、前言

有时候会我们开发系统应用需要一些系统的方法或者属性之类的,但是被隐藏导致无法正常显示,因为SDK提供的android.jar被隐藏了,所以只能看到sourcecode,实际上编译是会报错的,比如:
在这里插入图片描述
在这里插入图片描述
一般这种无法是两种,直接添加一个类,同包名同类名,或者依赖framework.jar,可以骗过编译器编译成功.但是都是无法解决这个爆红的问题,我查了很多修改iml的方法,但是高版本的android studio实际上iml已经没啥东西了,所以目前的修改Iml的方法我测试基本实效,现在只能替换sdk目录下的android.jar来实现了。

二、编译android.jar

首先我们进入Lineageos的源码目录,依次执行

. build/envsetup.sh 
breakfast blueline 
make sdk 

然后我们去out目录下面提取3个jar

lineageos/out/target/common/obj/PACKAGING/android_jar_intermediates/android.jar
lineageos/out/target/common/obj/PACKAGING/android_jar_intermediates/android-stubs-src.jar
lineageos/out/target/common/obj/JAVA_LIBRARIES/framework-minus-apex_intermediates/classes-header.jar

提取之后就可以制作我们的android.jar了,步骤如下
1.新建文件夹target
2.提取android.jar到target目录
3.提取class-header.jar同样到target 然后替换合并同名文件
4.在taget目录下执行命令打包

jar -cvfM android.jar .

最后得到android.jar

三、替换验证

我们打开SDK下android-35的目录

在这里插入图片描述
这里我们替换android.jar为我们刚刚生成的文件,然后android-stubs-src.jar为源码编译后提取的jar。然后sync gradle,同步之后可能还会爆红,这时候可以重启一下android studio。这时候可以看到爆红已经解决
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/69987.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Game Maker 0.11:《The Sandbox》创作愿景的全新篇章

开放元宇宙已经到来,用户生成内容(UGC)是其核心。在《The Sandbox》中,我们正在重新定义数字创作,给予新一代创作者工具,打造沉浸式、互动式的游戏和体验,超越传统的短格式内容。在过去的12个月…

(8/100)每日小游戏平台系列

项目地址位于:小游戏导航 新增一个打地鼠游戏! 打地鼠(Whack-a-Mole)是一款经典的休闲游戏,玩家需要点击随机出现的地鼠,以获取分数。游戏时间有限,玩家需要在规定时间内尽可能多地击中地鼠&am…

【动态规划篇】:动态规划中的“双线叙述”--如何用状态转移解决双序列难题

✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨ 个人主页:余辉zmh–CSDN博客 ✨ 文章所属专栏:动态规划篇–CSDN博客 文章目录 一.双序列类DP解题步骤 二.例题1.最长公共子序列2.不相交的…

观察者模式说明(C语言版本)

观察者模式主要是为了实现一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。下面使用C语言实现了一个具体的应用示例,有需要的可以参考…

yolo11s rknn无法detect的bugfix - step by step

1.缘起 上周四下班时,发现在宿主机环境工作良好的既有的pytorch模型,在通过.pt->.onnx->.rknn的转换后无法正常工作。周五下班时,怀疑疑点在两处: 版本匹配问题通道和参数传递问题。 周六,周日,周…

前端JS接口加密攻防实操

前端JS接口加密攻防实操 背景 在爬虫过程中,对数据接口各类加密的经历总结,无头消耗资源效率不高,采用浏览器兜底解密协程并行 青铜版(混淆对称加密|签名nonce等) 解:根据API 调用栈,断点找到request参…

15.3 多线程3

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 15.3.6 线程返回值 如果需要从线程的方法中获得计算的值,可以考虑使用模块级公共变量,在线程对应的方法中最…

同步异步日志系统-日志落地模块的实现

功能:将格式化完成后的日志消息字符串,输出到指定的位置 扩展:支持同时将日志落地到不同的位置 位置分类: 1.标准输出 2.指定文件(时候进行日志分析) 3.滚动文件(文件按照时间/大小进行滚动…

【Kubernetes】k8s 部署指南

1. k8s 入门 1.1 k8s 简介 需要最需要明确的就是:kubernetes(简称 k8s ) 是一个 容器编排平台 ,换句话说就是用来管理容器的,相信学过 Docker 的小伙伴对于容器这个概念并不陌生,打个比方:容器…

Spring AI接入DeepSeek:快速打造微应用

随着DeepSeek-R1的官宣开源,DeepSeek迅速成为AI领域的热门话题,吸引了大量开发者和研究者的关注。这一开源举措不仅推动了技术的普及,也促使更多企业和机构加入到开源生态中。例如,国内大厂X度于2月14日宣布将在未来几个月推出文新…

MyBatis映射文件常用元素详解与示例

引言 MyBatis是一个优秀的持久层框架&#xff0c;它支持定制化SQL、存储过程以及高级映射。MyBatis的配置文件和映射文件分离&#xff0c;映射文件用于定义SQL语句和结果映射。本文将介绍MyBatis映射文件中常用的元素及其示例用法。 一、基础CRUD元素 1. <mapper> 作用…

SqlDbx 是一款数据库管理工具资源分享

SqlDbx_Chs 是 SqlDbx 的中文版本。SqlDbx 是一款数据库管理工具&#xff0c;支持多种数据库系统&#xff0c;如 MySQL、Oracle、SQL Server、PostgreSQL 等&#xff0c;主要用于执行 SQL 查询、管理数据库对象及数据操作。 主要功能 SQL 查询执行&#xff1a;支持编写和运行…

Dav_笔记14:优化程序提示 HINTs -4

指定全局表提示 指定表的提示通常是指发生提示的DELETE&#xff0c;SELECT或UPDATE查询块中的表&#xff0c;而不是指语句引用的任何视图中的表。 如果要为显示在视图中的表指定提示&#xff0c;Oracle建议使用全局提示&#xff0c;而不是在视图中嵌入提示。 您可以使用包含具…

Python 文本探秘:正则表达式的易错迷宫穿越 -- 7. 正则表达式

正则表达式是 Python 中处理文本的强大武器&#xff0c;但它复杂的语法和规则构成了一个易错迷宫。本文深入剖析了正则表达式模式编写的错误、匹配规则的误解、性能优化的忽视等问题。通过大量的文本处理实例&#xff0c;展示了错误的正则表达式使用方式以及正确的解决方案。帮…

PPT工具集

PPT模版 免费下载 爱PPT优品PPTPPT之家第一PPTOfficePlus部分免费 AI生成PPT Kimi秘塔搜索 可以输入内容生成PPT大纲。

rocketmq-netty通信设计-request和response

1、NettyRemotingServer启动分析 org.apache.rocketmq.remoting.netty.NettyRemotingServer#start public void start() {this.defaultEventExecutorGroup new DefaultEventExecutorGroup(nettyServerConfig.getServerWorkerThreads(),new ThreadFactory() {private AtomicI…

Datawhale 数学建模导论二 笔记1

第6章 数据处理与拟合模型 本章主要涉及到的知识点有&#xff1a; 数据与大数据Python数据预处理常见的统计分析模型随机过程与随机模拟数据可视化 本章内容涉及到基础的概率论与数理统计理论&#xff0c;如果对这部分内容不熟悉&#xff0c;可以参考相关概率论与数理统计的…

git如何下载指定版本

要使用Git下载指定版本&#xff0c;可以通过以下步骤进行操作‌&#xff1a; ‌1. 使用Git命令行下载指定版本‌&#xff1a; 1.1 首先&#xff0c;使用git clone命令克隆整个git库到本地。例如&#xff1a;git clone [库的URL]。这将下载最新的代码到本地。‌ 1.2 进入克隆…

安卓基础(持续更新的笔记)

为什么要这样&#xff1a; // 创建请求体RequestBody body RequestBody.create(MediaType.parse("application/json; charsetutf-8"),jsonObject.toString()); jsonObject 就包含了一个 JSON 数据&#xff0c;它其实就是&#xff1a; {"name": "张…

Spring Boot应用开发

一、了解Spring Boot Spring Boot是一个基于Spring框架的开源Java基础框架&#xff0c;它可以帮助我们快速开发独立的、基于生产级的基于Spring框架的应用程序。简单来说&#xff0c;它就像是一个“超级助手”&#xff0c;帮你把很多复杂的配置都简化了&#xff0c;让你能更轻…