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..19af7f3 --- /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:${project.version}") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlinVersion}") + } +} + +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..096ca49 --- /dev/null +++ b/buildSrc/build.gradle.kts @@ -0,0 +1,29 @@ +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" + } + } +} + +repositories { + google() + mavenLocal() + mavenCentral() +} + +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..6240a1d --- /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 { + minSdk = 16 + targetSdk = 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..b737736 --- /dev/null +++ b/lib/build.gradle.kts @@ -0,0 +1,22 @@ + +plugins { + id("com.android.library") + id("mparticle-kit-plugin") + kotlin("android") +} + +repositories { + google() + mavenCentral() +} + +android { + compileSdk = 31 + defaultConfig { + minSdk = 16 + } +} + +dependencies { + 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")