Недавно писал, что Google взялся за R8 и пора чистить широкие keep-правила. Теперь есть чем их заменить:
androidx.annotation.keep. Код сам говорит R8, что трогает через рефлексию. Это те же аннотации, что R8 давно держит у себя, только теперь в Jetpack.👉
@UsesReflectionToConstruct, @UsesReflectionToAccessMethod, @UsesReflectionToAccessField сохраняют цель, только если аннотированный код остался в сборке. Умер код — ушёл и keep👉
@UnconditionallyKeep для вызовов извне: JNI, фреймворк👉 ОБЯЗАТЕЛЬНО подключить Gradle-плагин
androidx.annotation.keep, который генерирует правила: в приложении отдаёт их R8, в Android/KMP-библиотеке встраивает в AAR👉 Lint:
ReflectionWithoutKeepAnnotations и MissingKeepAnnotationPluginАртефакт мультиплатформенный: Android, JVM, iOS и другие Kotlin/Native-таргеты.
⚠️ Это первая альфа, а release notes пока пустые.
🐱 Исходники на GitHub
🔗 Release notes
#Android #AndroidDev #R8 #KMP
