All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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