android - Android Hilt:找不到符号 DaggerBaseApplication_HiltComponents_SingletonC.builder()
问题描述
我正在尝试使用 CoroutineWorker 来安排一些工作,在这些工作中我将读取 json 文件并更新首选项管理器。
问题是我收到以下错误:
Hilt_BaseApplication.java:20:错误:找不到符号返回 DaggerBaseApplication_HiltComponents_SingletonC.builder() ^ 符号:变量 DaggerBaseApplication_HiltComponents_SingletonC
BaseApplication: @HiltAndroidApp 类 BaseApplication:Application(),Configuration.Provider {
@Inject
lateinit var workerFactory: HiltWorkerFactory
override fun onCreate() {
super.onCreate()
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
Timber.plant(Timber.DebugTree())
NewsRepository.readNews()
scheduleWorker()
}
private fun scheduleWorker(){
val constraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build()
val checkPatchWR = PeriodicWorkRequestBuilder<CheckPatchWorker>(15, TimeUnit.MINUTES, 10, TimeUnit.MINUTES)
.setConstraints(constraints)
.build()
val reminderWR = PeriodicWorkRequestBuilder<RemindMeToWorkWorker>(2, TimeUnit.HOURS, 30, TimeUnit.MINUTES).build()
WorkManager.getInstance(this).enqueue(checkPatchWR)
WorkManager.getInstance(this).enqueue(reminderWR)
Timber.d("Setup the worker !")
}
override fun getWorkManagerConfiguration(): Configuration = Configuration.Builder().setWorkerFactory(workerFactory).build()
}
CheckPatchWorker:
@HiltWorker
class CheckPatchWorker @AssistedInject constructor
(
@Assisted private val appContext: Context,
@Assisted workerParameters: WorkerParameters,
private val preferenceManager: PreferencesManager
): CoroutineWorker(appContext, workerParameters){
val patchesUrl = "https://ddragon.leagueoflegends.com/api/versions.json"
override suspend fun doWork(): Result {
val patch = readLastPatchNotes()
preferenceManager.patchFlow.collect {
val lastPatch = it.yes
if(!(patch.equals(lastPatch))){
var builder = NotificationCompat.Builder(appContext, Constants.CHANNEL_PATCH_ID)
.setSmallIcon(R.drawable.challenger_1)
.setContentTitle("Patch notes")
.setContentText("A new version of patch notes was released ! Come check it out !")
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setAutoCancel(true)
.setStyle(
NotificationCompat.BigTextStyle()
.bigText("New patch notes $lastPatch !!!! "))
val pendingIntent = NavDeepLinkBuilder(appContext)
.setComponentName(MainActivity::class.java)
.setGraph(R.navigation.navigation_graph)
.setDestination(R.id.newsFragment)
.setArguments(bundleOf("worker" to "News"))
.createPendingIntent()
builder.setContentIntent(pendingIntent)
createNotificationChannel(builder)
preferenceManager.updatePatch(lastPatch)
}
}
return Result.success()
}
private fun readLastPatchNotes(): String {
val jsonArticles = JSONArray(URL(patchesUrl).readText())
return jsonArticles.getString(0)
}
fun createNotificationChannel(builder: NotificationCompat.Builder) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val name = Constants.CHANNEL_PATCH_ID
val descriptionText = "Patch notes"
val importance = NotificationManager.IMPORTANCE_DEFAULT
val channel = NotificationChannel(Constants.CHANNEL_PATCH_ID, name, importance).apply {
description = descriptionText
}
// Register the channel with the system
val notificationManager: NotificationManager = appContext.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.createNotificationChannel(channel)
notificationManager.notify(0, builder.build())
}
}
}
AndroidManifest.xml
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove">
</provider>
build.gradle(项目):
buildscript {
ext.kotlin_version = "1.4.31"
ext.hilt_version = '2.38.1'
repositories {
google()
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.1.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "com.google.dagger:hilt-android-gradle-plugin:$hilt_version"
classpath 'com.google.gms:google-services:4.3.5'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
maven { url "https://jitpack.io" }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
build.gradle - 应用程序(仅相关代码):
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-kapt'
id 'dagger.hilt.android.plugin'
id 'com.google.gms.google-services'
}
implementation "com.google.dagger:hilt-android:$hilt_version"
kapt "com.google.dagger:hilt-compiler:$hilt_version"
implementation 'androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03'
annotationProcessor 'androidx.hilt:hilt-compiler:1.0.0'
解决方案
推荐阅读
- go - 如何在 Golang 中将 float64 转换为 c99 十六进制字符串?
- react-native - react-native 错误 Metro Bundler 无法侦听端口 8081 errorno 11
- vba - Excel VBA - 现有搜索功能的附加搜索条件
- html - HTML/CSS - 让警报在几秒钟后消失
- python - 计算图像中两点之间的白色像素
- xamarin - Xamarin android在启动时挂起
- c++ - std::vector 的前地址是否移动不变?
- c# - 数字到单词程序
- objective-c - 将dismissViewController 与UIAlertController 一起使用
- php - 在 PHP 代码中插入图像