🤯Dagger Hilt блокирует переход на AGP 9.0
UPD. 21 января вышел Dagger 2.59 с поддержкой AGP
Android Gradle Plugin 9.0 официально зафиксировал новый стабильный конфигурационный API (вышла стабильная версия с релизом AS Otter FD 3) — это одно из самых значимых изменений в инфраструктуре Android и Kotlin Multiplatform за последние годы. Цели понятны и правильные лучше работа с кэшем и общая скорость сборок. Подробнее про все изменения я писал в отдельном посте
Google несколько релизов подряд аккуратно готовил экосистему к этому переходу, заранее добавив новый API и дав время авторам плагинов адаптироваться. Но на практике всё упирается в плагины.
Я столкнулся с тем, что Gradle-плагин Dagger Hilt до сих пор использует старую модель конфигурации и несовместим с новым DSL из AGP 9.0. В результате проект нельзя перевести на новую версию без отключения Hilt или включения режим совместимости. Иронично, что именно официальный инструмент от Google сейчас становится блокером для обновления.
Да, в AGP оставили compatibility-флаги, позволяющие продолжать сборку по старым правилам. Это спасает проекты от немедленного падения, но полностью отключает все ключевые преимущества AGP 9.0 — configuration cache, ускоренную конфигурацию и новую модель плагинов.
💬 Вы уже пробовали миграцию на AGP 9.0? Что блокирует? Делитесь в комментариях мнением.
UPD. По заявлениям подписчиков также есть проблемы в работе KAPT и KSP
#Android#AndroidDev#Gradle#Dagger#Hilt
🏝Проблемы с порядком Gradle Task при использовании KSP 2.0.2
Продолжаю разработку проекта FrameIO - Kotlin Multiplatform клиента для сервиса frame.io и стоклнулся с падением сборки из-за порядка задач (ниже стек с примером проблемы):
Some problems were found with the configuration of task ':module:kspDebugKotlinAndroid' (type 'KspAATask').
- Gradle detected a problem with the following location: './module'.
Reason: Task ':module:kspDebugKotlinAndroid' uses this output of task ':module:javaPreCompileDebug' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed.
Possible solutions:
1. Declare task ':module:javaPreCompileDebug' as an input of ':module:kspDebugKotlinAndroid'.
2. Declare an explicit dependency on ':module:javaPreCompileDebug' from ':module:kspDebugKotlinAndroid' using Task#dependsOn.
3. Declare an explicit dependency on ':core:user-session:javaPreCompileDebug' from ':module:kspDebugKotlinAndroid' using Task#mustRunAfter.
For more information, please refer to https://docs.gradle.org/8.14.2/userguide/validation_problems.html#implicit_dependency in the Gradle documentation.
Стек для сборки: Gradle 8.14.2, Kotlin 2.2.0, KSP 2.2.0-2.0.2, AGP 8.11.0
Решения проблемы пока нету в KSP (одно из issue), поэтому я задаю порядок Gradle Task сам:
// build.gradle.kts модуля где подключен ksp
afterEvaluate {
android.libraryVariants.forEach { variant ->
val variantCapitalized = variant.name.capitalized()
tasks.named("ksp${variantCapitalized}KotlinAndroid") {
dependsOn(
"${variant.name}AssetsCopyForAGP",
"process${variantCapitalized}Manifest",
"write${variantCapitalized}AarMetadata",
"javaPreCompile${variantCapitalized}",
"merge${variantCapitalized}Assets",
"merge${variantCapitalized}JniLibFolders",
"merge${variantCapitalized}NativeLibs",
"copy${variantCapitalized}JniLibsProjectOnly",
"generate${variantCapitalized}EmptyResourceFiles",
"copy${variantCapitalized}JniLibsProjectAndLocalJars",
"prepare${variantCapitalized}ArtProfile",
"write${variantCapitalized}LintModelMetadata",
"extractProguardFiles",
"prepareLintJarForPublish",
)
}
}
}
#android#kmp#koltin#ksp
🤖Рассказали про Google WearOS 6 на базе Android 16
Ключевые отличия от WearOS 5:
👉 Редизайн на основе Material 3 Expressive
👉 Улучшения времени работы до 10%
👉 Динамическая тема на основе цвета циферблата (будет в Pixel Watch)
👉 Новый лайут для тайлов с 3 слотами для элементов
👉 Компоненты оптимизированы под круглые и большие экраны
👉 Новые возможности кастомизации циферблатов. Будет поддержано в Watch Face Format v4
👉 API для создания магазинов циферблатов
👉 Credential Manager появится на WearOS
👉 Больше возможностей по управлению проигрываемой медиа
#android#wearos#googleio#materi3expressive
#typescript#android#app_framework#expo#framework#frontend#ios#javascript#mobile#native#native_apps#react#react_native#typescript#universal#web#web_framework
Expo is a tool that helps you make apps for Android, iOS, and the web using React and JavaScript. It simplifies the development process by handling complex tasks, allowing you to focus on features. Expo offers fast setup, easy access to native features like the camera, and painless updates without needing store approvals. You can write one codebase and deploy it across multiple platforms, saving time and effort. Expo also has a strong community and flexible workflows, making it easier to find help and customize your app as needed.
https://github.com/expo/expo
🐱Buckwheat (на русском звучит "Гречка") - это приложение с открытым исходным кодом, которое помогает вам тратить деньги разумно. Запись каждой статьи расходов приводит вас в чувства и дает представление о том, сколько и как вы можете потратить.
Стек технологий: Jetpack Compose, KotlinX Coroutines, Room, Dagger + Hilt, Coil
🛒 Вы можете установить приложение из Google Play
#android#opensource#пример#fdroid#compose
📹Яндекс выпустила бесплатный видео курс по DivKit- Backend Drive UI Framework с открытым исходным кодом
Смотреть на 📹YouTube или 📹VK Video
#android#ios#bdui#sdui