From caef2e8cdb4e0b1feb237e80122bdd2bf1cec37f Mon Sep 17 00:00:00 2001 From: mchuangatmp Date: Sun, 7 Aug 2022 18:41:47 -0700 Subject: [PATCH 1/2] feat: switch to build.gradle.kts (poc) --- build.gradle | 33 ---------- build.gradle.kts | 20 ++++++ buildSrc/build.gradle.kts | 46 ++++++++++++++ .../com/mparticle/plugins/Dependencies.kt | 36 +++++++++++ .../kotlin/com/mparticle/plugins/Extension.kt | 62 +++++++++++++++++++ .../kotlin/com/mparticle/plugins/KitPlugin.kt | 56 +++++++++++++++++ lib/AndroidManifest.xml | 2 + lib/build.gradle.kts | 27 ++++++++ {src => lib/src}/main/AndroidManifest.xml | 0 .../kotlin/com/mparticle/kits/AppsFlyerKit.kt | 0 .../com/mparticle/kits/AppsflyerKitTests.kt | 0 settings.gradle.kts | 2 +- 12 files changed, 250 insertions(+), 34 deletions(-) delete mode 100644 build.gradle create mode 100644 build.gradle.kts create mode 100644 buildSrc/build.gradle.kts create mode 100644 buildSrc/src/main/kotlin/com/mparticle/plugins/Dependencies.kt create mode 100644 buildSrc/src/main/kotlin/com/mparticle/plugins/Extension.kt create mode 100644 buildSrc/src/main/kotlin/com/mparticle/plugins/KitPlugin.kt create mode 100644 lib/AndroidManifest.xml create mode 100644 lib/build.gradle.kts rename {src => lib/src}/main/AndroidManifest.xml (100%) rename {src => lib/src}/main/kotlin/com/mparticle/kits/AppsFlyerKit.kt (100%) rename {src => lib/src}/test/kotlin/com/mparticle/kits/AppsflyerKitTests.kt (100%) diff --git a/build.gradle b/build.gradle deleted file mode 100644 index c846716..0000000 --- a/build.gradle +++ /dev/null @@ -1,33 +0,0 @@ -buildscript { - ext.kotlin_version = '1.7.10' - if (!project.hasProperty('version') || project.version.equals('unspecified')) { - project.version = '+' - } - - repositories { - google() - mavenLocal() - mavenCentral() - } - dependencies { - classpath 'com.android.tools.build:gradle:7.2.2' - classpath 'com.mparticle:android-kit-plugin:' + project.version - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - -apply plugin: 'com.mparticle.kit' -apply plugin: 'kotlin-android' - -android { - defaultConfig { - minSdkVersion 16 - } -} - -dependencies { - api 'com.appsflyer:af-android-sdk:6.8.0' -} -repositories { - mavenCentral() -} diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..b6d5e44 --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,20 @@ +buildscript { + val kotlinVersion = "1.7.10" + if (!project.hasProperty("version") || project.version == "unspecified") { + project.version = '+' + } + repositories { + google() + mavenLocal() + mavenCentral() + } + dependencies { + classpath("com.android.tools.build:gradle:7.2.2") + classpath("com.mparticle:android-kit-plugin:5.44.0") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.10") + } +} + +tasks.register("clean", Delete::class) { + delete(rootProject.buildDir) +} \ No newline at end of file diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts new file mode 100644 index 0000000..52ea0f2 --- /dev/null +++ b/buildSrc/build.gradle.kts @@ -0,0 +1,46 @@ +import org.gradle.kotlin.dsl.`kotlin-dsl` +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +plugins { + `kotlin-dsl` + `kotlin-dsl-precompiled-script-plugins` +} + +gradlePlugin { + plugins { + register("mparticle-kit-plugin") { + id = "mparticle-kit-plugin" + implementationClass = "com.mparticle.plugins.KitPlugin" + } + } +} + +buildscript { + repositories { + google() + mavenLocal() + mavenCentral() + } + + dependencies { + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.10") + } +} + +repositories { + google() + mavenLocal() + mavenCentral() +} + +val compileKotlin: KotlinCompile by tasks +compileKotlin.kotlinOptions { + languageVersion = "1.5.1" +} + +dependencies { + implementation("com.android.tools.build:gradle:7.2.2") + implementation("com.android.tools.build:gradle-api:7.2.2") +// implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.0") +// implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.31") +} \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/com/mparticle/plugins/Dependencies.kt b/buildSrc/src/main/kotlin/com/mparticle/plugins/Dependencies.kt new file mode 100644 index 0000000..d1c3898 --- /dev/null +++ b/buildSrc/src/main/kotlin/com/mparticle/plugins/Dependencies.kt @@ -0,0 +1,36 @@ +package com.mparticle.plugins + +object Versions { + + // Project + const val kotlin = "1.7.10" + + const val compileSdkVersion = 31 + const val minSdkVersion = 16 + const val targetSdkVersion = 31 + const val applicationId = "com.mparticle.kits.appsflyer" + const val applicationVersionCode = 1 + const val applicationVersionName = "1.0.0" + + // Android + const val appcompat = "1.4.2" + + // Testing + const val junit = "4.13.2" + const val testRunner = "1.1.1" + const val espressoCore = "3.1.1" +} + +object Libraries { + + // Kotlin + const val kotlinStdLib = "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${Versions.kotlin}" + + // Android + const val appcompat = "androidx.appcompat:appcompat:${Versions.appcompat}" + + // Testing + const val junit = "junit:junit:${Versions.junit}" + const val testRunner = "androidx.test:runner:${Versions.testRunner}" + const val espressoCore = "androidx.test.espresso:espresso-core:${Versions.espressoCore}" +} diff --git a/buildSrc/src/main/kotlin/com/mparticle/plugins/Extension.kt b/buildSrc/src/main/kotlin/com/mparticle/plugins/Extension.kt new file mode 100644 index 0000000..17d3b79 --- /dev/null +++ b/buildSrc/src/main/kotlin/com/mparticle/plugins/Extension.kt @@ -0,0 +1,62 @@ +package com.mparticle.plugins + +import com.android.build.gradle.BaseExtension +import com.android.build.gradle.internal.dsl.DefaultConfig +import org.gradle.api.JavaVersion +import org.gradle.api.Project +import org.gradle.kotlin.dsl.DependencyHandlerScope + +fun DependencyHandlerScope.kotlinProject() { + "implementation"(Libraries.kotlinStdLib) +} + +fun DependencyHandlerScope.unitTestDependencies() { + "testImplementation"(Libraries.junit) +} + +fun DependencyHandlerScope.androidTestDependencies() { + "androidTestImplementation"(Libraries.testRunner) + "androidTestImplementation"(Libraries.espressoCore) +} + +fun Project.androidApplicationConfig( + appId: String, + appVersionCode: Int = Versions.applicationVersionCode, + appVersionName: String = Versions.applicationVersionName +) { + androidLibraryConfig { + applicationId = appId + versionCode = appVersionCode + versionName = appVersionName + } +} + +fun Project.androidLibraryConfig(defaultConfigExtensions: (DefaultConfig.() -> Unit)? = null) { + android.run { + compileSdkVersion(Versions.compileSdkVersion) + defaultConfig { + defaultConfigExtensions?.invoke(this) + minSdk = Versions.minSdkVersion + targetSdk = Versions.targetSdkVersion + testInstrumentationRunner = "android.support.test.runner.AndroidJUnitRunner" + } + buildTypes { + getByName("debug") { + isMinifyEnabled = false + } + getByName("release") { + isMinifyEnabled = true + proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro") + consumerProguardFiles("consumer-rules.pro") + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + } +} + +val Project.android: BaseExtension + get() = extensions.findByName("android") as? BaseExtension + ?: error("Project '$name' is not an Android module") \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/com/mparticle/plugins/KitPlugin.kt b/buildSrc/src/main/kotlin/com/mparticle/plugins/KitPlugin.kt new file mode 100644 index 0000000..9c24e87 --- /dev/null +++ b/buildSrc/src/main/kotlin/com/mparticle/plugins/KitPlugin.kt @@ -0,0 +1,56 @@ +package com.mparticle.plugins + +import com.android.build.gradle.BaseExtension +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.dependencies + +class KitPlugin : Plugin { + + private val Project.android: BaseExtension + get() = extensions.findByName("android") as? BaseExtension + ?: error("Not an Android module: $name") + + override fun apply(project: Project) = + with(project) { + applyPlugins() + androidConfig() + dependenciesConfig() + } + + private fun Project.applyPlugins() { + plugins.run { + apply("com.android.library") + apply("kotlin-android") + apply("kotlin-android-extensions") + } + } + + private fun Project.androidConfig() { + android.run { + compileSdkVersion(31) + defaultConfig { + minSdkVersion(16) + targetSdkVersion(31) + versionCode = 1 + versionName = "1.0" + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + buildTypes { + getByName("debug") { + isMinifyEnabled = false + } + } + } + } + + private fun Project.dependenciesConfig() { + dependencies { + "api"("com.mparticle:android-kit-base:5.44.0") + "testImplementation"("junit:junit:4.13.2") + "testImplementation"("org.mockito:mockito-core:1.10.19") + "testImplementation"("androidx.annotation:annotation:[1.0.0,)") + "compileOnly"("androidx.annotation:annotation:[1.0.0,)") + } + } +} diff --git a/lib/AndroidManifest.xml b/lib/AndroidManifest.xml new file mode 100644 index 0000000..8298ffb --- /dev/null +++ b/lib/AndroidManifest.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/lib/build.gradle.kts b/lib/build.gradle.kts new file mode 100644 index 0000000..1f64757 --- /dev/null +++ b/lib/build.gradle.kts @@ -0,0 +1,27 @@ +import com.mparticle.plugins.KitPlugin +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +plugins { + id("com.android.library") + id("mparticle-kit-plugin") + kotlin("android") +} + +repositories { + google() + mavenCentral() +} + +//apply(plugin = "com.mparticle.kit") + +//android { +// compileSdk = 31 +// defaultConfig { +// minSdk = 16 +// } +//} + +dependencies { + //api("com.mparticle:android-kit-base:5.44.0") + api("com.appsflyer:af-android-sdk:6.8.0") +} \ No newline at end of file diff --git a/src/main/AndroidManifest.xml b/lib/src/main/AndroidManifest.xml similarity index 100% rename from src/main/AndroidManifest.xml rename to lib/src/main/AndroidManifest.xml diff --git a/src/main/kotlin/com/mparticle/kits/AppsFlyerKit.kt b/lib/src/main/kotlin/com/mparticle/kits/AppsFlyerKit.kt similarity index 100% rename from src/main/kotlin/com/mparticle/kits/AppsFlyerKit.kt rename to lib/src/main/kotlin/com/mparticle/kits/AppsFlyerKit.kt diff --git a/src/test/kotlin/com/mparticle/kits/AppsflyerKitTests.kt b/lib/src/test/kotlin/com/mparticle/kits/AppsflyerKitTests.kt similarity index 100% rename from src/test/kotlin/com/mparticle/kits/AppsflyerKitTests.kt rename to lib/src/test/kotlin/com/mparticle/kits/AppsflyerKitTests.kt diff --git a/settings.gradle.kts b/settings.gradle.kts index 64ca48b..ddca557 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,2 +1,2 @@ rootProject.name = "android-appsflyer-kit" -include(":") +include(":lib") From 2c7c4fc50058211c86c74dc9c60555b13e3fc86c Mon Sep 17 00:00:00 2001 From: Felipe Coronado Date: Tue, 9 Aug 2022 14:27:44 -0500 Subject: [PATCH 2/2] feat: removed extra code and tested optimal setup. --- build.gradle.kts | 4 ++-- buildSrc/build.gradle.kts | 19 +------------------ .../kotlin/com/mparticle/plugins/KitPlugin.kt | 4 ++-- lib/build.gradle.kts | 17 ++++++----------- 4 files changed, 11 insertions(+), 33 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index b6d5e44..19af7f3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -10,8 +10,8 @@ buildscript { } dependencies { classpath("com.android.tools.build:gradle:7.2.2") - classpath("com.mparticle:android-kit-plugin:5.44.0") - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.10") + classpath("com.mparticle:android-kit-plugin:${project.version}") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlinVersion}") } } diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 52ea0f2..096ca49 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -15,32 +15,15 @@ gradlePlugin { } } -buildscript { - repositories { - google() - mavenLocal() - mavenCentral() - } - - dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.10") - } -} - repositories { google() mavenLocal() mavenCentral() } -val compileKotlin: KotlinCompile by tasks -compileKotlin.kotlinOptions { - languageVersion = "1.5.1" -} - dependencies { implementation("com.android.tools.build:gradle:7.2.2") - implementation("com.android.tools.build:gradle-api:7.2.2") +// implementation("com.android.tools.build:gradle-api:7.2.2") // implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.0") // implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.31") } \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/com/mparticle/plugins/KitPlugin.kt b/buildSrc/src/main/kotlin/com/mparticle/plugins/KitPlugin.kt index 9c24e87..6240a1d 100644 --- a/buildSrc/src/main/kotlin/com/mparticle/plugins/KitPlugin.kt +++ b/buildSrc/src/main/kotlin/com/mparticle/plugins/KitPlugin.kt @@ -30,8 +30,8 @@ class KitPlugin : Plugin { android.run { compileSdkVersion(31) defaultConfig { - minSdkVersion(16) - targetSdkVersion(31) + minSdk = 16 + targetSdk = 31 versionCode = 1 versionName = "1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" diff --git a/lib/build.gradle.kts b/lib/build.gradle.kts index 1f64757..b737736 100644 --- a/lib/build.gradle.kts +++ b/lib/build.gradle.kts @@ -1,5 +1,3 @@ -import com.mparticle.plugins.KitPlugin -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { id("com.android.library") @@ -12,16 +10,13 @@ repositories { mavenCentral() } -//apply(plugin = "com.mparticle.kit") - -//android { -// compileSdk = 31 -// defaultConfig { -// minSdk = 16 -// } -//} +android { + compileSdk = 31 + defaultConfig { + minSdk = 16 + } +} dependencies { - //api("com.mparticle:android-kit-base:5.44.0") api("com.appsflyer:af-android-sdk:6.8.0") } \ No newline at end of file