android 添加jar包 编译错误

08:51:06 293 293 hiddenapi.cc:552] Superclass/interface Lkotlin/coroutines/jvm/internal/SuspendLambda; of class Landroidx/window/area/WindowAreaControllerImplrearDisplayStatus1; from dex file "out_sys/soong/.intermediates/frameworks/base/framework-minus-apex/android_common/aligned/framework-minus-apex.jar!classes4.dex" was not found. Either it is missing or it appears later in the classpath spec.

/bin/sh: line 1: 293 Aborted (core dumped) out_sys/host/linux-x86/bin/hiddenapi list --boot-dex=out_sys/soong/.intermediates/packages/modules/IPsec/android.net.ipsec.ike/android_common_com.android.ipsec/aligned/android.net.ipsec.ike.jar --boot-dex=out_sys/soong/.intermediates/external/apache-xml/apache-xml/android_common_apex31/dex-withres-aligned

原因:

Android类加载路径有两个BOOTCLASSPATH,SYSTEMSERVERCLASSPATH,BOOTCLASSPATH先加载。

BOOTCLASSPATH中的jar包如果对SYSTEMSERVERCLASSPATH中的jar包有依赖,则会出现上述错误。

解决办法:

1.将BOOTCLASSPATH中的jar移除,在device.mk中 PRODUCT_BOOT_JARS_EXTRA这个字段中删掉对应模块

2.将SYSTEMSERVERCLASSPATH中的jar包添加到BOOTCLASSPATH,方式如上在PRODUCT_BOOT_JARS_EXTRA中添加

3.将BOOTCLASSPATH中的jar中删除对SYSTEMSERVERCLASSPATH依赖的逻辑

在framework.jar中依赖了其他jar包;添加的jar包又对 SYSTEMSERVERCLASSPATH (services.jar)有依赖。framework.jar是加在了BOOTCLASSPATH路径中的(先加载),所以在编译framework.jar时,在BOOTCLASSPATH路径中找不到services.jar中的类,此时SYSTEMSERVERCLASSPATH中的类还未加载,导致编译报错,这种情况就是无法编译的。

相关推荐
StackNoOverflow1 小时前
MySQL Explain 返回列详解:从入门到实战,附 SQL 与避坑大全
android
CYRUS_STUDIO10 小时前
Frida 检测与对抗实战:进程、maps、线程、符号全特征清除
android·逆向
csj5011 小时前
安卓基础之《(28)—Service组件》
android
lhbian13 小时前
PHP、C++和C语言对比:哪个更适合你?
android·数据库·spring boot·mysql·kafka
catoop14 小时前
Android 最佳实践、分层架构与全流程解析(2025)
android
ZHANG13HAO14 小时前
Android 13 特权应用(Android Studio 开发)调用 AOSP 隐藏 API 完整教程
android·ide·android studio
田梓燊15 小时前
leetcode 142
android·java·leetcode
angerdream15 小时前
Android手把手编写儿童手机远程监控App之JAVA基础
android
菠萝地亚狂想曲16 小时前
Zephyr_01, environment
android·java·javascript
sTone8737516 小时前
跨端框架通信机制全解析:从 URL Schema 到 JSI 到 Platform Channel
android·前端