Ошибка: невозможно разрешить супертипы следующих классов. Убедитесь, что у вас есть необходимые зависимости в пути к клаAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка: невозможно разрешить супертипы следующих классов. Убедитесь, что у вас есть необходимые зависимости в пути к кла

Сообщение Anonymous »

Я создаю простое многомодульное приложение и даже не добавил многого, но сталкиваюсь с этой ошибкой при попытке создать приложение.
У меня есть эта базовая реализация ViewModel (которая представляет собой открытый класс), который находится в отдельном модуле под названием core:presentation, а затем у меня есть ViewModel для экрана, который вызывает эту BaseViewModel, которая находится в другом модуле под названием Feature:list:ui. Сначала я покажу ошибку, затем покажу код и соответствующие файлы build.gradle.kts. Я также использую Hilt для DI.
Ошибка
Невозможно разрешить супертипы следующих классов. Убедитесь, что у вас есть необходимые зависимости в пути к классам:
class com.mvitemplate.feature.list.ui.ListScreenViewModel, неразрешенные супертипы: com.mvitemplate.core.presentation.mvi.FlowViewModel
Добавление -Xextended Аргумент -compiler-checks может предоставить дополнительную информацию.
BaseViewModel в базовом модуле представления и его build.gradle.kts

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

import androidx.lifecycle.ViewModel
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.cancel
import kotlinx.coroutines.launch

open class FlowViewModel constructor(
interactor: Interactor,
private val reducer: Reducer,
initialState: ViewState,
private val coroutineScope: CoroutineScope = CoroutineScope(SupervisorJob() +
Dispatchers.Main.immediate)
): ViewModel(), BaseViewModel  {

// Took out some code but doesn't really affect this issue as I still encountered them
even after taking this said code out.

override fun emit(intent: Intent) {
coroutineScope.launch {
// Do something...
}
}

override fun onCleared() {
super.onCleared()
coroutineScope.cancel()
}
}

// Build.gradle.kts

plugins {
alias(libs.plugins.android.library)
alias(libs.plugins.jetbrains.kotlin.android)
alias(libs.plugins.dagger.hilt.android)
alias(libs.plugins.google.devtools.ksp)
}

android {
namespace = "com.mvitemplate.core"
compileSdk = 34

defaultConfig {
minSdk = 24

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles("consumer-rules.pro")
}

buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = "17"
}
}

dependencies {

implementation(libs.androidx.core.ktx)
implementation(libs.androidx.appcompat)
implementation(libs.androidx.compose.runtime)
implementation(libs.material)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)

implementation(libs.kotlinx.coroutines.android)
implementation(libs.kotlinx.coroutines.core)

// hilt
implementation(libs.hilt.android)
ksp(libs.hilt.android.compiler)
}
А затем ListScreenViewModel в модуле Feature:list:ui и его Build.gradle.kts

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

import com.mvitemplate.core.presentation.mvi.FlowViewModel
import com.mvitemplate.core.presentation.mvi.Interactor
import com.mvitemplate.core.presentation.mvi.Reducer
import com.mvitemplate.feature.list.ui.ListScreenContract.Intent
import com.mvitemplate.feature.list.ui.ListScreenContract.Result
import com.mvitemplate.feature.list.ui.ListScreenContract.ViewState
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject

@HiltViewModel
class ListScreenViewModel @Inject constructor(
interactor: Interactor,
reducer: Reducer,
viewState: ViewState
):  FlowViewModel(
interactor = interactor,
reducer = reducer,
initialState = viewState
)

// Build.gradle.kts

plugins {
alias(libs.plugins.android.library)
alias(libs.plugins.jetbrains.kotlin.android)
alias(libs.plugins.dagger.hilt.android)
alias(libs.plugins.google.devtools.ksp)
}

android {
namespace = "com.mvitemplate.feature.list.ui"
compileSdk = 34

defaultConfig {
minSdk = 24

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles("consumer-rules.pro")
}

buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
buildFeatures {
compose = true
}
composeOptions {
kotlinCompilerExtensionVersion = "1.5.1"
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = "17"
freeCompilerArgs += "-Xextended-compiler-checks"
}
}

dependencies {

implementation(project(":core:presentation"))

implementation(libs.androidx.core.ktx)
implementation(libs.androidx.appcompat)
implementation(libs.androidx.activity.compose)
implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.ui)
implementation(libs.androidx.ui.graphics)
implementation(libs.androidx.ui.tooling.preview)
implementation(libs.androidx.material3)
implementation(libs.material)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)

// kotlin coroutines
implementation(libs.kotlinx.coroutines.android)
implementation(libs.kotlinx.coroutines.core)

// navigation
implementation(libs.androidx.navigation.compose)

// hilt
implementation(libs.hilt.android)
ksp(libs.hilt.android.compiler)
}
Я знаю, что по этому заголовку возникает много вопросов, но ни один из них, похоже, не помогает, поскольку природа причины проблемы сильно отличается от моей. Я перепроверил все зависимости и убедился, что модуль List правильно вызывает модуль представления, но все еще сталкивается с этой ошибкой при попытке собрать проект. Надеюсь, кто-нибудь сможет с этим помочь, поскольку кода не так уж и много.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -make-sure
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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