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的源码目录,依次执行

bash 复制代码
. build/envsetup.sh 
breakfast blueline 
make sdk 

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

c 复制代码
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目录下执行命令打包

bash 复制代码
jar -cvfM android.jar .

最后得到android.jar

三、替换验证

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

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

相关推荐
hqxstudying2 小时前
Java异常处理
java·开发语言·安全·异常
我命由我123454 小时前
Kotlin 数据容器 - List(List 概述、创建 List、List 核心特性、List 元素访问、List 遍历)
java·开发语言·jvm·windows·java-ee·kotlin·list
zepcjsj08015 小时前
简单实现支付密码的页面及输入效果
android
小阳睡不醒6 小时前
小白成长之路-部署Zabbix7(二)
android·运维
武子康7 小时前
Java-80 深入浅出 RPC Dubbo 动态服务降级:从雪崩防护到配置中心秒级生效
java·分布式·后端·spring·微服务·rpc·dubbo
mmoyula8 小时前
【RK3568 PWM 子系统(SG90)驱动开发详解】
android·linux·驱动开发
YuTaoShao9 小时前
【LeetCode 热题 100】131. 分割回文串——回溯
java·算法·leetcode·深度优先
源码_V_saaskw10 小时前
JAVA图文短视频交友+自营商城系统源码支持小程序+Android+IOS+H5
java·微信小程序·小程序·uni-app·音视频·交友
超浪的晨10 小时前
Java UDP 通信详解:从基础到实战,彻底掌握无连接网络编程
java·开发语言·后端·学习·个人开发
双力臂40410 小时前
Spring Boot 单元测试进阶:JUnit5 + Mock测试与切片测试实战及覆盖率报告生成
java·spring boot·后端·单元测试