使用Kotlin构建AAR库:启动时出现ClassNotFoundException问题
解决Kotlin开发的AAR库引入Java项目后启动崩溃问题
咱一眼就看出来问题出在哪了——你用Kotlin写的库依赖了Kotlin标准库,但你的Java项目压根没把这个依赖带上,系统找不到kotlin.jvm.internal.Intrinsics类才直接崩了。别着急,给你两个靠谱的解决办法:
方案1:让Kotlin库的依赖自动传递(优先推荐)
打开你开发Kotlin库时的Module级build.gradle文件,把Kotlin标准库的依赖从implementation改成api:
dependencies { // 记得替换成你实际使用的Kotlin版本,比如1.8.20 api "org.jetbrains.kotlin:kotlin-stdlib:1.8.20" }
这样一来,当Java项目引入你的AAR时,Gradle会自动把Kotlin标准库作为传递依赖拉取进来,不用在Java项目里额外做配置,省心又不容易出错。
方案2:在Java项目中手动添加Kotlin标准库依赖
如果不想修改Kotlin库的配置,直接在Java项目的Module级build.gradle里加一行依赖:
dependencies { // 版本号必须和你Kotlin库使用的版本保持一致,不然容易出现版本冲突 implementation "org.jetbrains.kotlin:kotlin-stdlib:1.8.20" }
添加完后同步一下Gradle,重新编译运行应该就能正常启动了。
为啥会出现这个报错?
给你简单解释下:Kotlin编译器会自动在生成的字节码里插入对Intrinsics类的调用(比如做参数非空校验、类型检查这些),而这个类是Kotlin标准库的核心类。你的Java项目默认不会引入Kotlin标准库,所以运行时找不到这个类,就直接抛出NoClassDefFoundError崩溃了。
内容的提问来源于stack exchange,提问作者BArtWell
相关产品推荐
相关产品推荐

