使用 Android 库 (AAR) 时出现 AndroidRuntime 错误 ClassNotFoundException

Posted

技术标签:

【中文标题】使用 Android 库 (AAR) 时出现 AndroidRuntime 错误 ClassNotFoundException【英文标题】:AndroidRuntime error ClassNotFoundException when I use Android Library (AAR) 【发布时间】:2021-09-29 14:30:00 【问题描述】:

我构建了一个 AAR 库并添加到我的 android 项目中。

它编译成功,但是当我运行应用程序时,它显示错误:

... AndroidRuntime: java.lang.ClassNotFoundException: Didn't find class "com.example.application.R.layout"

然后我解压AAR库,class.jar中没有R.Class。

有没有人和我一样的问题?你知道如何在 AAR 库中生成 R.Class 来避免这个问题吗?

【问题讨论】:

请尝试从 lib 中删除此文件并从另一个路径重新导入此 aar 文件,并检查您在 gradle 中正确定义它的位置,如实现文件('libs/xyz.aar')或检查R.layout 的路径与包这个想法可能对你有帮助 @Ghanshyam 谢谢。我确实像你说的那样,清理/重建项目。然后应用程序工作,此错误未显示。但我不知道根本原因是什么。 class.jar 中仍然没有 R.Class,为什么这些类可以相互链接。 R 类未打包在 Jar 中,库项目未生成它们所依赖的 R 类。只有应用程序项目会生成库 R 类以及它们自己的类。我已经在下面的答案中更新了有关此问题的详细解决方案,以帮助其他人,请检查 参考 https***.comquestions34915501aar-support-in-android-mk-the-apk-contain-no-r-java-which-packagename-is-aar 【参考方案1】:

请尝试从 lib 中删除它并从另一个路径再次重新导入此 aar 文件,并检查您在 gradle 中正确定义它的位置,如实现文件('libs/xyz.aar')并清理构建或检查路径R.layout 的包这个想法可能对你有帮助

R 类不再打包在 Library Projects 的 jar 输出中。图书馆项目不会为他们所依赖的图书馆项目生成 R 类。只有主应用程序项目会生成库 R 类以及它们自己的类

请到以下链接

http://tools.android.com/recent/dealingwithdependenciesinandroidprojects

【讨论】:

以上是关于使用 Android 库 (AAR) 时出现 AndroidRuntime 错误 ClassNotFoundException的主要内容,如果未能解决你的问题,请参考以下文章

添加jdplay aar时出现 UnsatisfiedLinkError错误

BindingGenerator - 构建时出现语法错误

Android 完美解决 Direct local .aar file dependencies are not supported when building an AAR.

在模块(android 库)中使用改造 2.4.0 时出现 NoClassDefFoundError

在 android 2.3 上使用 jcifs 库时出现 NoClassDefFound 异常

在 android 中使用 android-support-v7-appcompat 库运行 PopupMenu 时出现 NoClassDefFoundError