После обновления до Android Studio Jellyfish и обновления плагина Android Gradle 8.4.0 в многомодульном проекте я больше не могу внедрить в свою службу, когда включена минимизация.
После обновлений я потратил немало времени на добавление новых правил в модули, не относящиеся к приложениям (это модули aar). Теперь приложение работает, и большинство функций снова работают. Но я не могу заставить сервис работать. В него добавлено довольно много вещей. Поскольку он работал с предыдущей версией AGP и работает с отладочной сборкой, я предполагаю, что это связано с отсутствием какого-то правила, необходимого для новой версии AGP. Он действительно действует, не видит аннотаций. В этом модуле у меня те же правила хранения аннотаций, что и в других модулях, и они получают свои инъекции.
Я сократил сервис до:@AndroidEntryPoint
open class MyService : Service() {
@Inject
lateinit var test: DTest
override fun onCreate() {
super.onCreate()
Timber.d("onCreate, ${test.test}")
}
override fun onBind(intent: Intent?): IBinder? {
return null
}
}
Где DTest находится в том же модуле и просто:
@InstallIn(SingletonComponent::class)
@Module
object TestModule {
@Provides
@Singleton
fun providesDTestModule(): DTest {
return DTest("TestModule")
}
}
data class DTest(val test: String)
При запуске службы получается такой результат:
E java.lang.RuntimeException: Unable to create service my.package.MyService: kotlin.UninitializedPropertyAccessException: lateinit property test has not been initialized
E at android.app.ActivityThread.handleCreateService(ActivityThread.java:4664)
E at android.app.ActivityThread.-$$Nest$mhandleCreateService(Unknown Source:0)
E at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2264)
E at android.os.Handler.dispatchMessage(Handler.java:106)
E at android.os.Looper.loopOnce(Looper.java:205)
E at android.os.Looper.loop(Looper.java:294)
E at android.app.ActivityThread.main(ActivityThread.java:8177)
E at java.lang.reflect.Method.invoke(Native Method)
E at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
E Caused by: kotlin.UninitializedPropertyAccessException: lateinit property test has not been initialized
E at my.package.MyService.onCreate(SourceFile:8)
E at android.app.ActivityThread.handleCreateService(ActivityThread.java:4651)
E ... 9 more
Подробнее здесь: https://stackoverflow.com/questions/784 ... -a-service
Android AGP 8.4 и внедрение рукоятки в сервис ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1715384752
Anonymous
После обновления до Android Studio Jellyfish и обновления плагина Android Gradle 8.4.0 в многомодульном проекте я больше не могу внедрить в свою службу, когда включена минимизация.
После обновлений я потратил немало времени на добавление новых правил в модули, не относящиеся к приложениям (это модули aar). Теперь приложение работает, и большинство функций снова работают. Но я не могу заставить сервис работать. В него добавлено довольно много вещей. Поскольку он работал с предыдущей версией AGP и работает с отладочной сборкой, я предполагаю, что это связано с отсутствием какого-то правила, необходимого для новой версии AGP. Он действительно действует, не видит аннотаций. В этом модуле у меня те же правила хранения аннотаций, что и в других модулях, и они получают свои инъекции.
Я сократил сервис до:@AndroidEntryPoint
open class MyService : Service() {
@Inject
lateinit var test: DTest
override fun onCreate() {
super.onCreate()
Timber.d("onCreate, ${test.test}")
}
override fun onBind(intent: Intent?): IBinder? {
return null
}
}
Где DTest находится в том же модуле и просто:
@InstallIn(SingletonComponent::class)
@Module
object TestModule {
@Provides
@Singleton
fun providesDTestModule(): DTest {
return DTest("TestModule")
}
}
data class DTest(val test: String)
При запуске службы получается такой результат:
E java.lang.RuntimeException: Unable to create service my.package.MyService: kotlin.UninitializedPropertyAccessException: lateinit property test has not been initialized
E at android.app.ActivityThread.handleCreateService(ActivityThread.java:4664)
E at android.app.ActivityThread.-$$Nest$mhandleCreateService(Unknown Source:0)
E at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2264)
E at android.os.Handler.dispatchMessage(Handler.java:106)
E at android.os.Looper.loopOnce(Looper.java:205)
E at android.os.Looper.loop(Looper.java:294)
E at android.app.ActivityThread.main(ActivityThread.java:8177)
E at java.lang.reflect.Method.invoke(Native Method)
E at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
E Caused by: kotlin.UninitializedPropertyAccessException: lateinit property test has not been initialized
E at my.package.MyService.onCreate(SourceFile:8)
E at android.app.ActivityThread.handleCreateService(ActivityThread.java:4651)
E ... 9 more
Подробнее здесь: [url]https://stackoverflow.com/questions/78462942/android-agp-8-4-and-hilt-injecting-into-a-service[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия