Невозможно реализовать Hilt с помощью Compose ActivityAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Невозможно реализовать Hilt с помощью Compose Activity

Сообщение Anonymous »

Я пытаюсь реализовать Dagger Hilt в приложении для Android, использующем Jetpack Compose. Раньше я использовал Hilt, но это первый раз с проектом создания.
Это ошибка, которую я получаю, когда пытаюсь запустить приложение:

Код: Выделить всё

java.lang.RuntimeException: Unable to instantiate application com.juegosdemesa.saltaconejo.SaltaConejoApplication: java.lang.ClassNotFoundException: Didn't find class "com.juegosdemesa.saltaconejo.SaltaConejoApplication" on path: DexPathList[[dex file "/data/data/com.juegosdemesa.saltaconejo/code_cache/.overlay/base.apk/classes7.dex", zip file "/data/app/~~fvjcQ4ZxOw99F2GO-9kvnw==/com.juegosdemesa.saltaconejo-DffqHuQR9C6r5HE_rQmgJw==/base.apk"],nativeLibraryDirectories=[/data/app/~~fvjcQ4ZxOw99F2GO-9kvnw==/com.juegosdemesa.saltaconejo-DffqHuQR9C6r5HE_rQmgJw==/lib/x86, /system/lib, /system_ext/lib]]
at android.app.LoadedApk.makeApplication(LoadedApk.java:1244)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6683)
at android.app.ActivityThread.access$1300(ActivityThread.java:237)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1913)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.juegosdemesa.saltaconejo.SaltaConejoApplication" on path: DexPathList[[dex file "/data/data/com.juegosdemesa.saltaconejo/code_cache/.overlay/base.apk/classes7.dex", zip file "/data/app/~~fvjcQ4ZxOw99F2GO-9kvnw==/com.juegosdemesa.saltaconejo-DffqHuQR9C6r5HE_rQmgJw==/base.apk"],nativeLibraryDirectories=[/data/app/~~fvjcQ4ZxOw99F2GO-9kvnw==/com.juegosdemesa.saltaconejo-DffqHuQR9C6r5HE_rQmgJw==/lib/x86, /system/lib, /system_ext/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:207)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at android.app.AppComponentFactory.instantiateApplication(AppComponentFactory.java:76)
at androidx.core.app.CoreComponentFactory.instantiateApplication(CoreComponentFactory.java:51)
at android.app.Instrumentation.newApplication(Instrumentation.java:1158)
at android.app.LoadedApk.makeApplication(LoadedApk.java:1236)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6683) 
at android.app.ActivityThread.access$1300(ActivityThread.java:237) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1913) 
at android.os.Handler.dispatchMessage(Handler.java:106) 
at android.os.Looper.loop(Looper.java:223) 
at android.app.ActivityThread.main(ActivityThread.java:7656) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 
Suppressed: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/juegosdemesa/saltaconejo/Hilt_SaltaConejoApplication;
at java.lang.VMClassLoader.findLoadedClass(Native Method)
at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:738)
at java.lang.ClassLoader.loadClass(ClassLoader.java:363)
... 14 more
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.juegosdemesa.saltaconejo.Hilt_SaltaConejoApplication" on path: DexPathList[[dex file "/data/data/com.juegosdemesa.saltaconejo/code_cache/.overlay/base.apk/classes7.dex", zip file "/data/app/~~fvjcQ4ZxOw99F2GO-9kvnw==/com.juegosdemesa.saltaconejo-DffqHuQR9C6r5HE_rQmgJw==/base.apk"],nativeLibraryDirectories=[/data/app/~~fvjcQ4ZxOw99F2GO-9kvnw==/com.juegosdemesa.saltaconejo-DffqHuQR9C6r5HE_rQmgJw==/lib/x86, /system/lib, /system_ext/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:207)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
...  17 more
[CIRCULAR REFERENCE:java.lang.NoClassDefFoundError: Failed resolution of: Lcom/juegosdemesa/saltaconejo/Hilt_SaltaConejoApplication;]

Я понимаю, что приложение не может найти MainActivity.
Вот код активности:

Код: Выделить всё

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.ui.Modifier
import com.juegosdemesa.saltaconejo.ui.theme.SaltaConejoTheme
import dagger.hilt.android.AndroidEntryPoint

@AndroidEntryPoint
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
SaltaConejoTheme {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
SaltaConejoApp()
}
}
}
}
}
Вот AndroidManisfest: Класс приложения:

Код: Выделить всё

@HiltAndroidApp
class SaltaConejoApplication: Application() {
val applicationScope = CoroutineScope(SupervisorJob())

/**
* AppContainer instance used by the rest of classes to obtain dependencies
*/
lateinit var container:  AppContainer

override fun onCreate() {
super.onCreate()
container = AppDataContainer(this)
}
}
А это build.gradle:

Код: Выделить всё

plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
//For Room substitute for kapt
id("com.google.devtools.ksp")
//For Hilt
id("dagger.hilt.android.plugin")
id("kotlin-kapt")
}

android {
namespace = "com.juegosdemesa.saltaconejo"
compileSdk = 34

defaultConfig {
applicationId = "com.juegosdemesa.saltaconejo"
minSdk = 28
targetSdk = 34
versionCode = 1
versionName = "1.0"

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
useSupportLibrary = true
}
}

buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
buildFeatures {
compose = true
viewBinding = true
}
composeOptions {
kotlinCompilerExtensionVersion = "1.5.1"
}
packaging {
resources {
excludes += "/META-INF/{AL2.0,LGPL2.1}"
}
}
}

dependencies {

implementation("androidx.core:core-ktx:1.12.0")
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2")
implementation("androidx.activity:activity-compose:1.8.2")
implementation(platform("androidx.compose:compose-bom:2023.08.00"))
implementation("androidx.compose.ui:ui")
implementation("androidx.compose.ui:ui-graphics")
implementation("androidx.compose.ui:ui-tooling-preview")
implementation("androidx.compose.material3:material3")
testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.1.5")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
androidTestImplementation(platform("androidx.compose:compose-bom:2023.08.00"))
androidTestImplementation("androidx.compose.ui:ui-test-junit4")
debugImplementation("androidx.compose.ui:ui-tooling")
debugImplementation("androidx.compose.ui:ui-test-manifest")

//Library for tinder like card

implementation ("com.github.AsynctaskCoffee:tinderlikecardstack:1.0")
implementation ("com.google.android.material:material:1.11.0")
implementation ("io.coil-kt:coil-compose:1.3.2")

val navigationVersion = "2.7.6"
implementation ("androidx.navigation:navigation-fragment-ktx:$navigationVersion")

implementation ("com.alexstyl.swipeablecard:swipeablecard:0.1.0")
implementation ("com.google.accompanist:accompanist-systemuicontroller:0.26.1-alpha")

implementation ("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.2")
implementation ("androidx.compose.runtime:runtime-livedata:1.5.4")
implementation ("androidx.navigation:navigation-compose:2.7.6")

val roomVersion = "2.6.1"
//Room
implementation("androidx.room:room-runtime:$roomVersion")
ksp("androidx.room:room-compiler:$roomVersion")
implementation("androidx.room:room-ktx:$roomVersion")

//Hilt
val hiltVersion = 2.44
implementation ("com.google.dagger:hilt-android:$hiltVersion")
ksp ("com.google.dagger:hilt-android-compiler:$hiltVersion")
implementation ("androidx.hilt:hilt-navigation-compose:1.1.0")
}
Грейд верхнего уровня

Код: Выделить всё

// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
id("com.android.application") version "8.2.1" apply false
id("org.jetbrains.kotlin.android") version "1.9.0"  apply false
id("com.google.devtools.ksp") version "1.9.0-1.0.13" apply false
id("com.google.dagger.hilt.android") version "2.44" apply false
}
В качестве примера я использовал предыдущий рабочий проект (правда, без компоновки), но все равно бесполезно.
Также я пытался использовать kapt для Hilt, но в этом случае приложение не работает скомпилирую, и все отзывы, которые я получаю, это java.lang.reflect.InvocationTargetException (нет сообщения об ошибке), что совершенно бесполезно.
В качестве обходного пути я использовал эту кодовую лабораторию в качестве пример, и приложение отлично компилируется и работает https://developer.android.com/codelabs/ ... =es-419#10
Есть идеи, что может произойти?
Заранее спасибо

Подробнее здесь: https://stackoverflow.com/questions/777 ... e-activity
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»