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中的类还未加载,导致编译报错,这种情况就是无法编译的。

相关推荐
Android-Flutter31 分钟前
android compose BottomNavigation(底部) 使用
android·kotlin
城东米粉儿1 小时前
Android 中的 LayoutInflater.Factory2 笔记
android
钟睿2 小时前
HarmonyOS弹窗+bindSheet半模态+浮层通用解决方案覆盖全业务场景
android·harmonyos
ljt27249606612 小时前
Compose笔记(六十七)--LookaheadScope
android·笔记·android jetpack
Devlive 开源社区2 小时前
技术日报|隐私笔记平台memos登顶日增661星,Docker安卓模拟器持续火热
android·笔记·docker
CHINAHEAO3 小时前
在docker容器中安装octonce以提高beikeshop的效率
android
愤怒的代码3 小时前
简析 Kotlin 内联函数:与inline相关的关键字
android·java·kotlin
太阳之影3 小时前
android6使用termux以及termux-api笔记
android·笔记·termux
胖咕噜的稞达鸭4 小时前
Linux系统编程:文件系统(CHS LBA地址,Block Group 软硬连接,手搓简化版本的FILE结构体)
android·linux·数据库
坚持学习前端日记4 小时前
UniApp APK打包与Android深度集成能力解析
android·vue.js·uni-app