onS*_*ner 11 android dagger-hilt
开始一个新项目,我遇到以下错误...我尝试过其他解决方案,但似乎已过时
\n我尝试过的步骤:
\n Process: com.example.transfer_tracker, PID: 28953\n java.lang.RuntimeException: Unable to instantiate application com.example.transfer_tracker.CoreApplication package com.example.transfer_tracker: java.lang.ClassNotFoundException: Didn't find class "com.example.transfer_tracker.CoreApplication" on path: DexPathList[[dex file "/data/data/com.example.transfer_tracker/code_cache/.overlay/base.apk/classes4.dex", zip file "/data/app/~~zfKHJdy7wnPYBA_pfwtohQ==/com.example.transfer_tracker-gXT0kIH37Cwb7XaCDmovmg==/base.apk"],nativeLibraryDirectories=[/data/app/~~zfKHJdy7wnPYBA_pfwtohQ==/com.example.transfer_tracker-gXT0kIH37Cwb7XaCDmovmg==/lib/arm64, /system/lib64, /system_ext/lib64]]\n at android.app.LoadedApk.makeApplication(LoadedApk.java:1364)\n at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6686)\n at android.app.ActivityThread.access$1500(ActivityThread.java:247)\n at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2053)\n at android.os.Handler.dispatchMessage(Handler.java:106)\n at android.os.Looper.loopOnce(Looper.java:201)\n at android.os.Looper.loop(Looper.java:288)\n at android.app.ActivityThread.main(ActivityThread.java:7839)\n at java.lang.reflect.Method.invoke(Native Method)\n at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)\n at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)\n Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.transfer_tracker.CoreApplication" on path: DexPathList[[dex file "/data/data/com.example.transfer_tracker/code_cache/.overlay/base.apk/classes4.dex", zip file "/data/app/~~zfKHJdy7wnPYBA_pfwtohQ==/com.example.transfer_tracker-gXT0kIH37Cwb7XaCDmovmg==/base.apk"],nativeLibraryDirectories=[/data/app/~~zfKHJdy7wnPYBA_pfwtohQ==/com.example.transfer_tracker-gXT0kIH37Cwb7XaCDmovmg==/lib/arm64, /system/lib64, /system_ext/lib64]]\n at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:218)\n at java.lang.ClassLoader.loadClass(ClassLoader.java:379)\n at java.lang.ClassLoader.loadClass(ClassLoader.java:312)\n at android.app.AppComponentFactory.instantiateApplication(AppComponentFactory.java:76)\n at androidx.core.app.CoreComponentFactory.instantiateApplication(CoreComponentFactory.java:52)\n at android.app.Instrumentation.newApplication(Instrumentation.java:1177)\n at android.app.LoadedApk.makeApplication(LoadedApk.java:1356)\n at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6686)\xc2\xa0\n at android.app.ActivityThread.access$1500(ActivityThread.java:247)\xc2\xa0\n at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2053)\xc2\xa0\n at android.os.Handler.dispatchMessage(Handler.java:106)\xc2\xa0\n at android.os.Looper.loopOnce(Looper.java:201)\xc2\xa0\n at android.os.Looper.loop(Looper.java:288)\xc2\xa0\n at android.app.ActivityThread.main(ActivityThread.java:7839)\xc2\xa0\n at java.lang.reflect.Method.invoke(Native Method)\xc2\xa0\n at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)\xc2\xa0\n at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)\xc2\xa0\n Suppressed: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/example/transfer_tracker/Hilt_CoreApplication;\n at java.lang.VMClassLoader.findLoadedClass(Native Method)\n at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:738)\n at java.lang.ClassLoader.loadClass(ClassLoader.java:363)\n ... 15 more\n Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.transfer_tracker.Hilt_CoreApplication" on path: DexPathList[[dex file "/data/data/com.example.transfer_tracker/code_cache/.overlay/base.apk/classes4.dex", zip file "/data/app/~~zfKHJdy7wnPYBA_pfwtohQ==/com.example.transfer_tracker-gXT0kIH37Cwb7XaCDmovmg==/base.apk"],nativeLibraryDirectories=[/data/app/~~zfKHJdy7wnPYBA_pfwtohQ==/com.example.transfer_tracker-gXT0kIH37Cwb7XaCDmovmg==/lib/arm64, /system/lib64, /system_ext/lib64]]\n at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:218)\n at java.lang.ClassLoader.loadClass(ClassLoader.java:379)\n at java.lang.ClassLoader.loadClass(ClassLoader.java:312)\n ... 18 more\n [CIRCULAR REFERENCE:java.lang.NoClassDefFoundError: Failed resolution of: Lcom/example/transfer_tracker/Hilt_CoreApplication;]\n
Run Code Online (Sandbox Code Playgroud)\n安卓清单
\n<manifest xmlns:android="http://schemas.android.com/apk/res/android"\n package="com.example.transfer_tracker">\n\n <application\n android:name=".CoreApplication"\n android:allowBackup="true"\n android:fullBackupContent="true"\n android:icon="@mipmap/ic_launcher"\n android:label="@string/app_name"\n android:roundIcon="@mipmap/ic_launcher_round"\n android:supportsRtl="true"\n android:theme="@style/Theme.TransferTracker">\n <activity\n android:name=".login.LauncherActivity"\n android:exported="true">\n <intent-filter>\n <action android:name="android.intent.action.MAIN" />\n\n <category android:name="android.intent.category.LAUNCHER" />\n </intent-filter>\n </activity>\n </application>\n\n</manifest>\n\n
Run Code Online (Sandbox Code Playgroud)\n项目构建.gradle
\nbuildscript {\n repositories {\n google()\n mavenCentral()\n }\n dependencies {\n classpath "com.android.tools.build:gradle:7.0.4"\n classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.20"\n classpath 'com.google.dagger:hilt-android-gradle-plugin:2.40.5'\n // NOTE: Do not place your application dependencies here; they belong\n // in the individual module build.gradle files\n }\n}\n\ntask clean(type: Delete) {\n delete rootProject.buildDir\n}\n
Run Code Online (Sandbox Code Playgroud)\n模块项目.gradle
\nplugins {\n id 'com.android.application'\n id 'kotlin-kapt'\n id 'kotlin-android'\n id 'dagger.hilt.android.plugin'\n}\n\nandroid {\n compileSdk 31\n\n defaultConfig {\n applicationId "com.example.transfer_tracker"\n minSdk 22\n targetSdk 31\n versionCode 1\n versionName "1.0"\n multiDexEnabled true\n testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"\n }\n\n\n buildTypes {\n release {\n minifyEnabled false\n proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'\n }\n }\n compileOptions {\n sourceCompatibility JavaVersion.VERSION_1_8\n targetCompatibility JavaVersion.VERSION_1_8\n }\n kotlinOptions {\n jvmTarget = '1.8'\n }\n}\n\ndependencies {\n implementation 'com.android.support:multidex:1.0.3'\n implementation 'androidx.core:core-ktx:1.7.0'\n implementation 'androidx.appcompat:appcompat:1.4.1'\n implementation 'com.google.android.material:material:1.5.0'\n implementation 'androidx.constraintlayout:constraintlayout:2.1.3'\n implementation 'androidx.legacy:legacy-support-v4:1.0.0'\n implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.4.0'\n implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0'\n testImplementation 'junit:junit:4.+'\n androidTestImplementation 'androidx.test.ext:junit:1.1.3'\n androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'\n\n implementation 'com.google.dagger:hilt-android:2.40.5'\n annotationProcessor 'com.google.dagger:hilt-compiler:2.40.5'\n}\n
Run Code Online (Sandbox Code Playgroud)\n应用类
\npackage com.example.transfer_tracker\n\nimport android.app.Application\nimport androidx.multidex.MultiDexApplication\nimport dagger.hilt.android.HiltAndroidApp\n\n@HiltAndroidApp\nclass CoreApplication : Application()\n
Run Code Online (Sandbox Code Playgroud)\n当使用 kapt 而不是annotationProcessor时
\npublic final class CoreApplication extends android.app.Application {\n ^\n Expected @HiltAndroidApp to have a value. Did you forget to apply the Gradle Plugin? (dagger.hilt.android.plugin)\n See https://dagger.dev/hilt/gradle-setup.html\n [Hilt] Processing did not complete. See error above for details.\n\nFAILURE: Build failed with an exception.\n\n* What went wrong:\nExecution failed for task ':app:kaptDebugKotlin'.\n> A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction\n > java.lang.reflect.InvocationTargetException (no error message)\n\n* Try:\nRun with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.\n
Run Code Online (Sandbox Code Playgroud)\n更新
\n使用 Dagger2 实现错误消失了...也许这是由于 Hilt 库中的错误造成的
\n尝试使用MultiDexApplication扩展CoreApplication类,如下所示:
@HiltAndroidApp
class CoreApplication : MultiDexApplication() {...}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7858 次 |
最近记录: |