当我想在我的项目中使用@AndroidEntryPoint(它是 hilt 的属性)时,我收到以下警告。
Expected @AndroidEntryPoint to have a value. Did you forget to apply the Gradle Plugin? (dagger.hilt.android.plugin)
Run Code Online (Sandbox Code Playgroud)
当我尝试将 id 'dagger.hilt.android.plugin' 添加到项目的模块级 build.gradle 文件中时,出现以下错误。
org.gradle.api.plugins.UnknownPluginException: Plugin [id: 'dagger.hilt.android.plugin'] was not found in any of the following sources:
Run Code Online (Sandbox Code Playgroud)
我尝试将其添加到项目模块级别的 build.gradle 文件中,如下所示。他们都给出了一个错误。
我尝试将其作为类路径添加到项目级别的 build.gradle 文件中,在这种情况下我仍然收到错误。
当我创建默认项目时,创建了一个settings.gradle结构,如下所示。这是我第一次使用这个版本。我的 Android Studio 版本 Android Studio - Bumblebee | 2021.1.1 金丝雀 13
当我尝试在 Android Studio 中运行或构建应用程序时,我收到此警告。为什么我会得到这个?我需要注意这个警告吗?
The following options were not recognized by any processor: '[dagger.fastInit, kapt.kotlin.generated]'
Run Code Online (Sandbox Code Playgroud) 升级匕首柄后(版本:2.31-alpha
)ApplicationComponent.class
无法找到。Component
类似 RoomDatabase的替代方案是什么?
@Module
@InstallIn(ApplicationComponent::class)
class RoomModule() {
private val DATABASE_NAME = "salat_time"
@Singleton
@Provides
fun provideRoomDatabase(@ApplicationContext appContext: Context) = Room.databaseBuilder(
appContext,
AppDatabase::class.java,
DATABASE_NAME
).createFromAsset("db/$DATABASE_NAME.sqlite").build()
@Singleton
@Provides
fun provideLocalSalatRepository(database: AppDatabase) = LocalSalatRepository(database)
@Singleton
@Provides
fun provideDistrictRepository(database: AppDatabase) = DistrictRepository(database)
}
Run Code Online (Sandbox Code Playgroud) 我想将应用程序上下文注入存储库类以在存储库内创建房间数据库实例。我正在使用 Hilt 进行依赖注入。
我们可以使用 hilt 传递应用程序上下文还是必须手动传递它?
我收到以下错误:
[Dagger/MissingBinding] android.content.Context cannot be provided without an
@Provides-annotated method. public abstract static class ApplicationC
implements ExartApplication_GeneratedInjector
Run Code Online (Sandbox Code Playgroud)
我有谷歌这个问题,但结果对我不起作用。
详情如下。
public final class App extends com.zhixin.wedeep.common.BaseApplication implements androidx.lifecycle.LifecycleOwner {
^
// Expected @HiltAndroidApp to have a value. Did you forget to apply the Gradle Plugin?
Run Code Online (Sandbox Code Playgroud)
应用程序代码。
@HiltAndroidApp
class App : BaseApplication(), LifecycleOwner {
@Inject
lateinit var service: EventService
private val mLifecycleRegistry = LifecycleRegistry(this)
}
Run Code Online (Sandbox Code Playgroud)
此模块 gradle 文件。
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-allopen'
apply plugin: 'androidx.navigation.safeargs.kotlin'
apply plugin: 'dagger.hilt.android.plugin'
dependencies {
implementation rootProject.ext.dependencies["hilt-android"]
implementation rootProject.ext.dependencies["hilt-lifecycle-viewmodel"]
kapt rootProject.ext.kapt["hilt-compiler"]
kapt rootProject.ext.kapt["hilt-android-compiler"]
}
Run Code Online (Sandbox Code Playgroud)
谁有想法?谢谢!
我刚开始在 Android 上使用 Dagger Hilt 进行依赖注入,我在 Android Studio 上收到一条警告说'ApplicationComponent' is deprecated. Deprecated in Java
.
我在谷歌搜索时没有找到与此警告相关的任何内容,它实际上已被弃用还是使用安全?
我还在 Dagger 的网站上注意到他们没有在“迁移到刀柄”指南中的任何地方提及它,他们使用的@InstallIn(SingletonComponent::class)
似乎有效,但我不知道为什么。
在 Dagger Hilt View Model 1.0.0-alpha01 中
implementation "androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha01"
implementation 'com.google.dagger:hilt-android:2.28-alpha'
kapt 'androidx.hilt:hilt-compiler:1.0.0-alpha01'
kapt 'com.google.dagger:hilt-android-compiler:2.28-alpha'
Run Code Online (Sandbox Code Playgroud)
我可以使用下面的
class MyViewModel @ViewModelInject constructor(
private val repository: Repository,
@Assisted private val savedStateHandle: SavedStateHandle
) : ViewModel(), LifecycleObserver {
// Some codes...
}
Run Code Online (Sandbox Code Playgroud)
但是,当我迁移到 Dagger Hilt View Model 1.0.0-alpha03 时
implementation "androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03"
implementation 'com.google.dagger:hilt-android:2.31.2-alpha'
kapt 'androidx.hilt:hilt-compiler:1.0.0-alpha03'
kapt 'com.google.dagger:hilt-android-compiler:2.31.2-alpha'
Run Code Online (Sandbox Code Playgroud)
我收到了警告
'Assisted' is deprecated. Deprecated in Java
'ViewModelInject' is deprecated. Deprecated in Java
'ViewModelInject' is deprecated. Deprecated in Java
'Assisted' is deprecated. Deprecated in Java
Run Code Online (Sandbox Code Playgroud)
有什么新的工作方式?
当我在 android 中使用 Hilt 时 Room
我遇到了这个错误。
完整的日志在这里:
home/someone/Desktop/Calculator/app/build/tmp/kapt3/stubs/debug/com/hamidjonhamidov/calculator/MyApplication.java:7: error: [Hilt]
public class MyApplication extends android.app.Application {
^
Expected @HiltAndroidApp to have a value. Did you forget to apply the Gradle Plugin?
[Hilt] Processing did not complete. See error above for details./home/someone/Desktop/Calculator/app/build/tmp/kapt3/stubs/debug/com/hamidjonhamidov/calculator/ui/main/MainActivity.java:7: error: [Hilt]
Run Code Online (Sandbox Code Playgroud)
任何人都知道解决方案吗?
我将 Kotlin 版本从 1.6.10 更改为 1.7.0。
由此
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.10'
Run Code Online (Sandbox Code Playgroud)
升级到
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.0'
Run Code Online (Sandbox Code Playgroud)
但希尔特抛出了一个错误。我的Hilt版本是2.42。有没有办法解决这个问题而无需再次降级?它在Kotlin 1.6.10和Hilt 2.42中运行良好。但我想通过升级我的 kotlin 版本来使用它。
我刚刚更新我的Android希尔特匕首的依赖关系到1.0.0-alpha03
和我身材ApplicationComponent
被弃用
,取而代之的
,但一旦我在我的代码替换它显示了这个错误我是否需要做别的任何事情,只是用它?SingletonComponent
完全错误
> Task :app:kaptDebugKotlin FAILED
error: [Hilt]
@DefineComponent dagger.hilt.components.SingletonComponent is missing a parent declaration.
Please declare the parent, for example: @DefineComponent(parent = ApplicationComponent.class)
[Hilt] Processing did not complete. See error above for details.error: [Hilt]
@DefineComponent dagger.hilt.components.SingletonComponent is missing a parent declaration.
Please declare the parent, for example: @DefineComponent(parent = ApplicationComponent.class)
[Hilt] Processing did not complete. See error above for details.error: [Hilt]
@DefineComponent dagger.hilt.components.SingletonComponent is missing a parent declaration.
Please declare …
Run Code Online (Sandbox Code Playgroud)