ClassNotFoundException:在路径:DexPathList上找不到类“ androidx.work.Worker”

时间:2019-05-28 23:38:23

标签: android dex androidx aar

当我使用WorkManager的PeriodicWorkRequest时,我一直在尝试制作一个android库。它可以作为主机开发应用程序中的模块正常工作。但是,一旦将其导出为aar文件并在其他应用中使用它,就会出现以下错误,

java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/work/Worker;
.
.
.
Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.work.Worker" on path: DexPathList[[zip file "/data/app/com.example.testapp-0WusKIYjC1qsHRMASLjm1Q==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.testapp-0WusKIYjC1qsHRMASLjm1Q==/lib/arm64, /system/lib64, /vendor/lib64]]

有什么主意我可以解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

AAR本身不会嵌入或以其他方式编码有关传递依赖项的任何内容(例如,您的AAR对WorkManager的依赖),因此,如果您只是将AAR用作local binary dependency,您需要重新声明所有传递依赖。

根据Gradle Declaring Dependencies documentation,适当的依赖关系以Maven存储库的形式存在(本地或远程)。 Maven存储库除了托管AAR本身之外,还包括一个POM file,用于声明您的库所依赖的传递依赖项。这样可以确保您的构建中包含的每个库只有一个版本(因为它可以对多个库中的传递依赖项进行重复数据删除)。

在本地使用项目时不会看到相同的问题,因为那些传递依赖项已包含在构建过​​程中。

答案 1 :(得分:0)

您遇到依赖性错误,正在尝试使用您的库的应用使用 androidx支持库,尝试将WorkManager's依赖性更改为androidx依赖性