androidx.work.impl.WorkManagerInitializer:java.lang.ClassNotFoundException:路径上的“androidx.work.impl.WorkManagerInitializer”:/data/app/app-2.apk

Shi*_*ine 8 android-workmanager androidx

我最近将旧应用程序的后台服务迁移到WorkManager。在最近的设备上(包括 sdk 22),它看起来不错,运行重复的工作单元并按预期在设备重新启动时安排它们。

问题是当我针对旧版本(旧在这里非常相关)进行测试时,Android sdk 14 是我的minSdkVersion. 顺便说一句,也WorkManager应该有相同的:根据doc向后兼容 API 14。如标题所述,我得到的错误是

 java.lang.RuntimeException: Unable to get provider androidx.work.impl.WorkManagerInitializer: java.lang.ClassNotFoundException: Didn't find class "androidx.work.impl.WorkManagerInitializer" on path: /data/app/com.example.myapp.apk
    at android.app.ActivityThread.installProvider(ActivityThread.java:4822)
Run Code Online (Sandbox Code Playgroud)

我没有任何自定义 WorkManager 配置/初始化,我只是添加了

     implementation 'androidx.work:work-runtime:2.2.0'
Run Code Online (Sandbox Code Playgroud)

到我的模块的 gradle 并非常典型地使用它来安排后台操作。

小智 5

我在Android 19遇到了同样的问题

阅读这个这个我解决了使用

摇篮:

multiDexEnabled true
Run Code Online (Sandbox Code Playgroud)

爪哇:

public class MyApp extends Application {

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}
Run Code Online (Sandbox Code Playgroud)


Shi*_*ine 2

问题是由multiDexEnabled true我在 defaultConfig 中出于未知原因引起的。经过一番挖掘和一个问题后我发现了它