Search code examples
androidkotlindependency-injectionruntime-errorandroid-manifest

Unable to start activity ComponentInfo{app.myProject/app.myProject.ui.screens.home.MainActivity}: java.lang.IllegalStateException


App crash while run the apk at runtime.

Logcat error log

 E/AndroidRuntime: FATAL EXCEPTION: main
    Process: app.myProject, PID: 23589
    java.lang.RuntimeException: Unable to start activity ComponentInfo{app.myProject/app.myProject.ui.screens.home.MainActivity}: java.lang.IllegalStateException: Hilt Activity must be attached to an @HiltAndroidApp Application. Did you forget to specify your Application's class name in your manifest's <application />'s android:name attribute?
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3430)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3614)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:86)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2199)
        at android.os.Handler.dispatchMessage(Handler.java:112)
        at android.os.Looper.loop(Looper.java:216)
        at android.app.ActivityThread.main(ActivityThread.java:7625)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)
     Caused by: java.lang.IllegalStateException: Hilt Activity must be attached to an @HiltAndroidApp Application. Did you forget to specify your Application's class name in your manifest's <application />'s android:name attribute?
        at dagger.hilt.android.internal.managers.ActivityComponentManager.createComponent(ActivityComponentManager.java:76)
        at dagger.hilt.android.internal.managers.ActivityComponentManager.generatedComponent(ActivityComponentManager.java:66)
        at app.myProject.ui.screens.home.Hilt_MainActivity.generatedComponent(Hilt_MainActivity.java:42)
        at app.myProject.ui.screens.home.Hilt_MainActivity.inject(Hilt_MainActivity.java:64)
        at app.myProject.ui.screens.home.Hilt_MainActivity$1.onContextAvailable(Hilt_MainActivity.java:35)
        at androidx.activity.contextaware.ContextAwareHelper.dispatchOnContextAvailable(ContextAwareHelper.java:99)
        at androidx.activity.ComponentActivity.onCreate(ComponentActivity.java:352)
        at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:217)
        at app.myProject.core.BaseActivity.onCreate(BaseActivity.kt:27)
        at android.app.Activity.performCreate(Activity.java:7458)
        at android.app.Activity.performCreate(Activity.java:7448)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1286)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3409)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3614) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:86) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2199) 
        at android.os.Handler.dispatchMessage(Handler.java:112) 
        at android.os.Looper.loop(Looper.java:216) 
        at android.app.ActivityThread.main(ActivityThread.java:7625) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)

 

Already have a application class which have annotation @HiltAndroidApp .and also added it to manifest file as like below :-

Manifest file

 <application
    android:name=".App"
    android:allowBackup="true"
    android:hardwareAccelerated="true"
    android:icon="@drawable/ic_app_icon"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:supportsRtl="true"
    android:theme="@style/AppTheme.ph"
    android:usesCleartextTraffic="true"
    tools:ignore="LockedOrientationActivity">

App.kt file

@HiltAndroidApp
class App : android.app.Application() {

override fun onCreate() {
    super.onCreate()
    if (BuildConfig.DEBUG) {
        Timber.plant(Timber.DebugTree())
    }
    instance = this
    setupServices()

}

private fun setupServices() {
    NetworkService.instance.initializeWithApplicationContext(this)
}

companion object {
    private var instance: App? = null

    @JvmStatic
    fun getInstance(): 
private fun setupServices() {
    NetworkService.instance.initializeWithApplicationContext(this)
}

companion object {
    private var instance: App? = null

    @JvmStatic
    fun getInstance(): App? {
        if (instance == null) {
            instance = App()
        }
        return instance
    }
}? {
        if (instance == null) {
            instance = App()
        }
        return instance
    }
}
}

Dependency i used

implementation("com.google.dagger:hilt-android:2.41")
kapt("com.google.dagger:hilt-android-compiler:2.41")

The app crashes as soon as it gets installed and throws the weird error above. I tried for finding this issue but not getting right solution for this problem .

So can anybody tell me , what the actual problem and what the right solution for resolve this problem .


Solution

  • Make sure you add @AndroidEntryPoint to your MainActivity file.

    Also Add this dependency to build.gradle (app ) file.

    kapt("androidx.hilt:hilt-compiler:1.0.0")
    

    Like this ->

    **//Hilt
    implementation("com.google.dagger:hilt-android:2.41")
    kapt("com.google.dagger:hilt-android-compiler:2.41")
    kapt("androidx.hilt:hilt-compiler:1.0.0")**
    

    Now sync the project ,it worked fine for me.