ClassNotFoundException:在路径上找不到 class "androidx.work.Worker":DexPathList
ClassNotFoundException: Didn't find class "androidx.work.Worker" on path: DexPathList
我一直在尝试创建一个 android 库,当时我正在使用 WorkManager 的 PeriodicWorkRequest。它作为主机开发应用程序中的模块完美运行。但是,一旦我将它导出为 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]]
知道如何解决这个问题吗?
你有一个依赖错误,你正在尝试使用你的库的应用程序使用 androidx 支持库,尝试将 WorkManager's
依赖更改为 androidx
依赖性
AAR 本身 不会 嵌入或以其他方式编码有关传递依赖项的任何内容(例如您的 AAR 对 WorkManager 的依赖项),因此如果您只是使用 AAR 作为 local binary dependency 您需要重新声明所有传递依赖项。
根据声明您的库所依赖的传递依赖项的 Gradle Declaring Dependencies documentation, a proper dependency is in the form of a maven repository (either local or remote). A maven repository, besides hosting the AAR itself, also includes a POM file。这可确保您的构建中仅包含每个库的一个版本(因为它可以消除跨多个库的传递依赖项的重复数据)。
在本地使用项目时,您不会看到同样的问题,因为这些传递依赖项包含在构建过程中。
我一直在尝试创建一个 android 库,当时我正在使用 WorkManager 的 PeriodicWorkRequest。它作为主机开发应用程序中的模块完美运行。但是,一旦我将它导出为 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]]
知道如何解决这个问题吗?
你有一个依赖错误,你正在尝试使用你的库的应用程序使用 androidx 支持库,尝试将 WorkManager's
依赖更改为 androidx
依赖性
AAR 本身 不会 嵌入或以其他方式编码有关传递依赖项的任何内容(例如您的 AAR 对 WorkManager 的依赖项),因此如果您只是使用 AAR 作为 local binary dependency 您需要重新声明所有传递依赖项。
根据声明您的库所依赖的传递依赖项的 Gradle Declaring Dependencies documentation, a proper dependency is in the form of a maven repository (either local or remote). A maven repository, besides hosting the AAR itself, also includes a POM file。这可确保您的构建中仅包含每个库的一个版本(因为它可以消除跨多个库的传递依赖项的重复数据)。
在本地使用项目时,您不会看到同样的问题,因为这些传递依赖项包含在构建过程中。