我正在使用 Android 的 WorkManager 执行后台任务,并且一切正常,直到我尝试在缩小版本中使用它。当服务应该被初始化时,我收到以下异常:
Could not instantiate *REDACTED*Worker
java.lang.NoSuchMethodException: *REDACTED*Worker.<init> [class android.content.Context, class androidx.work.WorkerParameters]
at java.lang.Class.getConstructor0(Class.java:2328)
at java.lang.Class.getDeclaredConstructor(Class.java:2167)
at e1.y.b(SourceFile:65)
at f1.j.k(SourceFile:358)
at f1.j.run(SourceFile:17)
at n1.i$a.run(SourceFile:3)
我已按照 Custom WorkManager 配置和初始化 所需的步骤进行操作,但在缩小构建时仍然遇到此问题。
我正在使用 Dagger2(不是 Hilt)和 RxWorker
我正在提供一个自定义的 WorkerFactory 实现。
摇篮:
...
// workVersion is 2.7.1
implementation "androidx.work:work-rxjava2:$workVersion"
implementation "androidx.work:work-runtime-ktx:$workVersion"
<application
>
...
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
android:exported="false"
tools:node="remove" />
我发现一个similar question它指的是旧版本并建议将以下内容添加到proguard文件中:
-keepclassmembers class * extends androidx.work.Worker {
public <init>(android.content.Context,androidx.work.WorkerParameters);
}
但这并不能解决问题。