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

相关推荐
5***g2981 天前
MySQL 数据库连接池爆满问题排查与解决
android·数据库·mysql
牛奔1 天前
php 8.2 配置安装php-zbarcode扩展
android·开发语言·php
hudawei9961 天前
kotlin协程编译成Android字节码后是什么样的
android·开发语言·kotlin
2501_915106321 天前
iOS 抓不到包怎么办?从 HTTPS 代理排查到 TCP 数据流捕获的全链路解决方案
android·tcp/ip·ios·小程序·https·uni-app·iphone
游戏开发爱好者81 天前
APP上架苹果应用商店经验教训与注意事项
android·ios·小程序·https·uni-app·iphone·webview
s***35301 天前
【MySQL】MySQL用户管理
android·mysql·adb
QING6181 天前
kotlin 协程: GlobalScope 和 Application Scope 选择和使用 —— 新手指南
android·kotlin·android jetpack
霸王大陆1 天前
《零基础学 PHP:从入门到实战》教程-模块四:数组与函数-2
android·开发语言·php
v***43171 天前
springboot3整合knife4j详细版,包会!(不带swagger2玩)
android·前端·后端
h***04771 天前
MySQL 的 INSERT(插入数据)详解
android·数据库·mysql