Work 2.8.0 + Hilt 未初始化工人

问题描述 投票:0回答:2

有很多这样的问题,但我还没有找到对我有帮助的解决方案。

应用程序/build.gradle

    implementation 'androidx.work:work-runtime-ktx:2.8.0'

    implementation "com.google.dagger:hilt-android:2.44"
    implementation "androidx.hilt:hilt-navigation-compose:1.1.0-alpha01"
    implementation 'androidx.hilt:hilt-work:1.0.0'
    kapt "com.google.dagger:hilt-android-compiler:2.44"

AndroidManifest.xml

        <provider
            android:name="androidx.startup.InitializationProvider"
            android:authorities="${applicationId}.androidx-startup"
            tools:node="remove">
        </provider>

申请

@HiltAndroidApp
class MyApp : Application(), Configuration.Provider {
    @Inject
    lateinit var workerFactory: HiltWorkerFactory

// other stuff

    override fun getWorkManagerConfiguration() =
        Configuration.Builder()
            .setMinimumLoggingLevel(Log.VERBOSE)
            .setWorkerFactory(workerFactory)
            .build()
}

我的一名工人

@HiltWorker
class Some @AssistedInject constructor(
    @Assisted appContext: Context,
    @Assisted params: WorkerParameters,
    private val someRepository: SomeRepository,
) : CoroutineWorker(appContext, params) {
}

我使用

WorkManager.getInstance(context)

获取工作管理器实例

Worker 未初始化,出现异常

Could not instantiate some.path.SomeWorker
java.lang.NoSuchMethodException: some.path.SomeWorker.<init> [class android.content.Context, class androidx.work.WorkerParameters]
at java.lang.Class.getConstructor0(Class.java:2363)
at java.lang.Class.getDeclaredConstructor(Class.java:2201)
at androidx.work.WorkerFactory.createWorkerWithDefaultFallback(WorkerFactory.java:95)
at androidx.work.impl.WorkerWrapper.runWorker(WorkerWrapper.java:243)
at androidx.work.impl.WorkerWrapper.run(WorkerWrapper.java:145)
at androidx.work.impl.utils.SerialExecutorImpl$Task.run(SerialExecutorImpl.java:96)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
2023-02-12 22:48:56.505 22235-22316 WM-WorkerWrapper
E  Could not create Worker some.path.SomeWorker

如果我在构造函数中只保留上下文和工作参数,那么它就可以正常工作

android android-workmanager dagger-hilt
2个回答
1
投票

我也遇到了同样的问题,经过 2 天的调查,问题出在 OneSignal 库(One Signal SDK 版本 4.8.6)的初始化上,所以我不得不降级到 4.8.4 并且它起作用了。欲了解更多信息

https://github.com/OneSignal/OneSignal-Android-SDK/issues/1748


0
投票

我也遇到了同样的问题,我花了很多时间试图弄清楚为什么我会得到

NoSuchMethodException
异常,直到我发现我只有
ksp("com.google.dagger:hilt-compiler:")
ksp("androidx.hilt:hilt-compiler:1.2.0")
也是必需的!

因此,如果您也遇到此错误,请务必检查您是否有两者

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.