
un.conventions.1.0.source-code.TestConfig.kt Maven / Gradle / Ivy
import com.android.build.api.dsl.ApplicationExtension
import com.android.build.api.dsl.LibraryExtension
import com.android.build.api.variant.ApplicationAndroidComponentsExtension
import com.android.build.api.variant.LibraryAndroidComponentsExtension
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.findByType
import wing.androidExtension
import wing.androidExtensionComponent
import wing.log
//https://medium.com/androiddevelopers/new-apis-in-the-android-gradle-plugin-f5325742e614
//class CustomSettings: Plugin {
class TestConfig : Plugin {
override fun apply(target: Project) {
// Registers a callback on the application of the Android Application plugin.
// This allows the CustomPlugin to work whether it's applied before or after
// the Android Application plugin.
// target.plugins.withType(AppPlugin::class.java){
// //application
// println("================AppPlugin=============================")
// }
// target.plugins.withType(BasePlugin::class.java){
// //application or library
// println("================BasePlugin=============================")
// }
with(target) {
log("=========================== START【${this@TestConfig}】 =========================")
log("常见构建自定义的即用配方,展示如何使用Android Gradle插件的公共API和DSL:")
log("https://github.com/android/gradle-recipes")
val projectName = name
// ApplicationAndroidComponentsExtension -> ApplicationExtension
// findByType 不存在返回空 getByType 不存在抛异常
println("$projectName ApplicationExtension ===================== ${extensions.findByType()}")
println("$projectName LibraryExtension ========================= ${extensions.findByType()}")
println("$projectName ApplicationAndroidComponentsExtension ==== ${extensions.findByType()}")
println("$projectName LibraryAndroidComponentsExtension ======== ${extensions.findByType()}")
// println("$projectName BaseAppModuleExtension =================== ${extensions.findByType()}")
println("$projectName getByName android ======================== ${extensions.findByName("android")}")
println("$projectName getByName android ======================== ${androidExtension?.javaClass}")
androidExtensionComponent?.apply {
onVariants { variant ->
println("variant.buildType = ${variant.buildType}")
// println("variant.buildConfigFields = ${variant.buildConfigFields.keySet().get().toStr()}")
// println("variant.applicationId = ${variant.applicationId.get()}")
println("variant.name = ${variant.name}")
log("------variant class--------------${variant.javaClass}")
// if (it is ApplicationVariantImpl) {
// log("---------ApplicationVariantImpl--------- ${it.name}")
// }
}
}
log("=========================== END【${this@TestConfig}】 =========================")
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy