Hilt DI конфликтует с новейшими версиями плагина Android GradleAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Hilt DI конфликтует с новейшими версиями плагина Android Gradle

Сообщение Anonymous »

В моем приложении для Android я использую последнюю версию (2.52) hilt

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

[versions]
hilt = "2.52"
[libraries]
hilt-android = { group = "com.google.dagger", name = "hilt-android", version.ref = "hilt" }
hilt-android-compiler = { group = "com.google.dagger", name = "hilt-android-compiler", version.ref = "hilt" }
Также я использую старую версию плагина Android Gradle (agp)

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

[versions]
agp = "8.2.2"
[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }
android-library = { id = "com.android.library", version.ref = "agp" }
gradle-wrapper.properties:

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

distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
Эта настройка работает нормально. Я могу без проблем собрать свои пакеты релизов и опубликовать их.
Но время идет, и мне нужно обновить свой AGP, чтобы избежать проблем в будущем, когда новые технологии потребуют новейшей версии AGP. Итак, я обновил AGP до 8.7.2, как предложила моя IDE:
Изображение

Теперь мои версии выглядят так:

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

[versions]
agp = "8.7.2"

distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
После этого я по-прежнему могу запускать свои приложения в режиме DEBUG, но когда я пытаюсь собрать релизную версию, я получаю сообщение об ошибке от Hilt:

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

error: ComponentProcessingStep was unable to process 'com.ilyin.projectfillword.GooglePlayApplication_HiltComponents.SingletonC' because 'com.ilyin.billing.showcase.ShowCase' could not be resolved.

Dependency trace:
=> element (CLASS): com.ilyin.core.di.GameBillingModule
=> element (METHOD): provideFillwordShowcase(com.ilyin.billing.showcase.ShowCase,android.telephony.TelephonyManager)
=> type (EXECUTABLE method): (com.ilyin.billing.showcase.ShowCase,android.telephony.TelephonyManager)com.ilyin.core.feature.billing.showcase.FillwordShowcase
=> type (ERROR parameter type): com.ilyin.billing.showcase.ShowCase

If type 'com.ilyin.billing.showcase.ShowCase' is a generated type, check above for compilation errors that may have prevented the type from being generated. Otherwise, ensure that type 'com.ilyin.billing.showcase.ShowCase' is on your classpath.
Я почти уверен, что ShowCase не является сгенерированным типом. Кроме того, он успешно импортирован и доступен.
Вот как выглядит GameBillingModule:

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

package com.ilyin.core.di

import android.telephony.TelephonyManager
import com.ilyin.billing.showcase.ShowCase
import com.ilyin.core.feature.billing.showcase.FillwordShowcase
import com.ilyin.core.feature.billing.showcase.FillwordShowcaseImpl
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import javax.inject.Singleton

@Module
@InstallIn(SingletonComponent::class)
class GameBillingModule {

@Singleton
@Provides
fun provideFillwordShowcase(
generalShowCase: ShowCase,
telephonyManager: TelephonyManager,
): FillwordShowcase {
return FillwordShowcaseImpl(
generalShowCase = generalShowCase,
telephonyManager = telephonyManager,
)
}
}

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

GameBillingModule
находится в основном модуле, а ShowCase — в модуле биллинга. Вот как я включил биллинг в ядро:

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

implementation(project(":billing"))
Почему Hilt показывает ошибки после обновления AGP? Как это решить?

Подробнее здесь: https://stackoverflow.com/questions/791 ... dle-plugin
Ответить

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

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

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

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

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