当我使用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]]
有什么主意我可以解决这个问题吗?
答案 0 :(得分:1)
AAR本身不会不嵌入或以其他方式编码有关传递依赖项的任何内容(例如,您的AAR对WorkManager的依赖),因此,如果您只是将AAR用作local binary dependency,您需要重新声明所有传递依赖。
根据Gradle Declaring Dependencies documentation,适当的依赖关系以Maven存储库的形式存在(本地或远程)。 Maven存储库除了托管AAR本身之外,还包括一个POM file,用于声明您的库所依赖的传递依赖项。这样可以确保您的构建中包含的每个库只有一个版本(因为它可以对多个库中的传递依赖项进行重复数据删除)。
在本地使用项目时不会看到相同的问题,因为那些传递依赖项已包含在构建过程中。
答案 1 :(得分:0)
您遇到依赖性错误,正在尝试使用您的库的应用使用 androidx支持库,尝试将WorkManager's
依赖性更改为androidx
依赖性