有些问题已经被问过,但对我没有用。一开始我使用的是最新版本的 Work Manager,即 2.7 Alpha 3,但我降级了,因为它只与 Android 12 预览 SDK 兼容。但错误仍然存在!
由于这些依赖项包含在 Worker 的构造函数中,它无法实例化该 Worker。在添加它们之前,它是可以工作的,但如果我不能添加它们,那么 Hilt 没有任何好处,所以情况如下:
清单文件中不包含任何与 Work Manager 相关的配置!
应用程序类:
@HiltAndroidApp
class TimelineApp : Application() ,Configuration.Provider{
@Inject
lateinit var workerFactory: HiltWorkerFactory
override fun getWorkManagerConfiguration() =
Configuration.Builder()
.setWorkerFactory(workerFactory)
.build()
}
工人:
@HiltWorker
class DriveSyncWorker @AssistedInject constructor(
@Assisted val context: Context,
@Assisted workerParams: WorkerParameters,
val dependency: StorageHelper,
)
< p > < em > 注意:它没有使用 HiltWorkFactory!
< p > 错误:E/WM-WorkerFactory: Could not instantiate com.wakaztahir.timeline.utils.workers.DriveSyncWorker
java.lang.NoSuchMethodException: com.wakaztahir.timeline.utils.workers.DriveSyncWorker.<init> [class android.content.Context, class androidx.work.WorkerParameters]
at java.lang.Class.getConstructor0(Class.java:2332)
at java.lang.Class.getDeclaredConstructor(Class.java:2170)
at androidx.work.WorkerFactory.createWorkerWithDefaultFallback(WorkerFactory.java:95)
at androidx.work.impl.WorkerWrapper.runWorker(WorkerWrapper.java:244)
at androidx.work.impl.WorkerWrapper.run(WorkerWrapper.java:136)
at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:923)
E/WM-WorkerWrapper: Could not create Worker com.wakaztahir.timeline.utils.workers.DriveSyncWorker
Gradle:
implementation "com.google.dagger:hilt-android:$hilt_version"
kapt "com.google.dagger:hilt-compiler:$hilt_version"
def work_version = "2.6.0-alpha02"
implementation "androidx.work:work-runtime-ktx:$work_version"
implementation 'androidx.hilt:hilt-work:1.0.0-beta01'
implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava'
相关链接:
ksp
而不是kapt
。这导致了问题,因为低于1.1.0版本的hilt-compiler不支持它。这是发布说明的链接:https://developer.android.com/jetpack/androidx/releases/hilt#version_110_2 - undefined