Hilt Activity 必须附加到 @AndroidEntryPoint 应用程序
Hilt Activity must be attached to an @AndroidEntryPoint Application
应用程序在安装后立即崩溃并抛出上述奇怪的错误。
我已经对 activity 及其子片段进行了注释,如下所示。
@AndroidEntryPoint
class HomeActivity : AppCompatActivity() {
companion object{
lateinit var currentUser: User
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_home)
val navController = Navigation.findNavController(this, R.id.home_nav)
val bottomNavigationView: BottomNavigationView = findViewById(R.id.bottom_navigation)
bottomNavigationView.setupWithNavController(navController)
fetchCurrentUser()
}
还附加了应用程序 class,根据文档
,对于每个使用 Hilt 的应用程序都是强制性的
@HiltAndroidApp
class CoreApplication:Application()
和崩溃的logcat
Caused by: java.lang.IllegalStateException: Hilt Activity must be attached to an @AndroidEntryPoint Application. Found: class androidx.multidex.MultiDexApplication
at dagger.hilt.android.internal.managers.ActivityComponentManager.createComponent(ActivityComponentManager.java:82)
at dagger.hilt.android.internal.managers.ActivityComponentManager.generatedComponent(ActivityComponentManager.java:65)
at com.example.vcare.home.Hilt_HomeActivity.generatedComponent(Hilt_HomeActivity.java:43)
at com.example.vcare.home.Hilt_HomeActivity.inject(Hilt_HomeActivity.java:62)
at com.example.vcare.home.Hilt_HomeActivity.onCreate(Hilt_HomeActivity.java:37)
at com.example.vcare.home.HomeActivity.onCreate(HomeActivity.kt:27)
at android.app.Activity.performCreate(Activity.java:7224)
at android.app.Activity.performCreate(Activity.java:7213)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2926)
这个问题的解决方案是:在 AndroidManifest.xml 文件的 <application .../>
标签中声明 android:name = ".CoreApplication"
。
对我来说,解决方案略有不同:在我的主模块中,应用程序 class 只需要 Hilt,所以我只添加了 hilt-android 依赖项:
implementation 'com.google.dagger:hilt-android:2.33-beta'
导致出现上述错误消息。
我忘记的是还要将编译依赖添加到应用程序模块中:
kapt 'com.google.dagger:hilt-compiler:2.33-beta'
这解决了问题,因为我缺少生成的 class。
通过添加以下内容在清单中声明您的应用程序 class:
<application
android:name=".CoreApplication"
....
/>
就我而言,我在将存储库实现到 ViewModel 时遇到了错误 class。
我按照一些修复来解决错误。
- 正在向 activity 添加入口点 class (AndroidEntryPoint)
- 正在向应用程序添加入口点class (HiltAndroidApp)
- 将名称添加到清单应用程序 android:name=".main.BaseApplication"
- 将 @Inject 添加到存储库 class
现在 Hilt 与 MVVM 和干净架构的问题已解决!
在 Manifest Application 标签内添加了字段,如下所示
<application
...
android:name=".core.HiltApplication"
>
</application>
应用程序在安装后立即崩溃并抛出上述奇怪的错误。 我已经对 activity 及其子片段进行了注释,如下所示。
@AndroidEntryPoint
class HomeActivity : AppCompatActivity() {
companion object{
lateinit var currentUser: User
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_home)
val navController = Navigation.findNavController(this, R.id.home_nav)
val bottomNavigationView: BottomNavigationView = findViewById(R.id.bottom_navigation)
bottomNavigationView.setupWithNavController(navController)
fetchCurrentUser()
}
还附加了应用程序 class,根据文档
,对于每个使用 Hilt 的应用程序都是强制性的@HiltAndroidApp
class CoreApplication:Application()
和崩溃的logcat
Caused by: java.lang.IllegalStateException: Hilt Activity must be attached to an @AndroidEntryPoint Application. Found: class androidx.multidex.MultiDexApplication
at dagger.hilt.android.internal.managers.ActivityComponentManager.createComponent(ActivityComponentManager.java:82)
at dagger.hilt.android.internal.managers.ActivityComponentManager.generatedComponent(ActivityComponentManager.java:65)
at com.example.vcare.home.Hilt_HomeActivity.generatedComponent(Hilt_HomeActivity.java:43)
at com.example.vcare.home.Hilt_HomeActivity.inject(Hilt_HomeActivity.java:62)
at com.example.vcare.home.Hilt_HomeActivity.onCreate(Hilt_HomeActivity.java:37)
at com.example.vcare.home.HomeActivity.onCreate(HomeActivity.kt:27)
at android.app.Activity.performCreate(Activity.java:7224)
at android.app.Activity.performCreate(Activity.java:7213)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2926)
这个问题的解决方案是:在 AndroidManifest.xml 文件的 <application .../>
标签中声明 android:name = ".CoreApplication"
。
对我来说,解决方案略有不同:在我的主模块中,应用程序 class 只需要 Hilt,所以我只添加了 hilt-android 依赖项:
implementation 'com.google.dagger:hilt-android:2.33-beta'
导致出现上述错误消息。
我忘记的是还要将编译依赖添加到应用程序模块中:
kapt 'com.google.dagger:hilt-compiler:2.33-beta'
这解决了问题,因为我缺少生成的 class。
通过添加以下内容在清单中声明您的应用程序 class:
<application
android:name=".CoreApplication"
....
/>
就我而言,我在将存储库实现到 ViewModel 时遇到了错误 class。
我按照一些修复来解决错误。
- 正在向 activity 添加入口点 class (AndroidEntryPoint)
- 正在向应用程序添加入口点class (HiltAndroidApp)
- 将名称添加到清单应用程序 android:name=".main.BaseApplication"
- 将 @Inject 添加到存储库 class
现在 Hilt 与 MVVM 和干净架构的问题已解决!
在 Manifest Application 标签内添加了字段,如下所示
<application
...
android:name=".core.HiltApplication"
>
</application>