Чёт я себя совсем дурачком чувствую.
Хочу завести себе convention plugins для нескольких типов модулей. Допустим, для модуля приложения и модуля библиотеки.
У AGP для этих целей есть плагины com.android.application и com.android.library соответственно.
Оба плагина регистрируют экстеншн android, соответстввенно, типа AppExension и LibraryExtension.
Оба этих типа наследуются от BaseExtension.
Часть конфига у меня общая и для либ, и для аппов, часть специфичная.
Я тут попытался сделать конвеншн плагин
myproject.app, который применяет com.android.application и другой конвеншн плагин myproject.common. Но в myproject.common я, не применяя никаких плагинов (пушта это и для либ, и для апп) не могу, получается, получить доступ к классам BaseExtension, AppExtension, LibraryExtension.
Можно, конечно, не писать коммон плагин, а завести себе просто
fun Project.configureCommonAndroid() {
val android = extensions.getByType(AppExtension::class) ?:
extensions.getByType(LibraryExtension::class)
android?.apply {
...
}
}и вызывать эту фигню вместо эпплая коммон конвеншн плагина.
Есть другие варианты?