From edda913b04278672882e60d801f5f61ef7a6350d Mon Sep 17 00:00:00 2001 From: Dmitriy Dolovov Date: Fri, 31 May 2019 09:09:18 +0300 Subject: [PATCH] AndroidNativeActivity sample: migrate to KTS --- samples/androidNativeActivity/build.gradle | 98 ------------------- .../androidNativeActivity/build.gradle.kts | 98 +++++++++++++++++++ samples/androidNativeActivity/settings.gradle | 0 .../androidNativeActivity/settings.gradle.kts | 22 +++++ 4 files changed, 120 insertions(+), 98 deletions(-) delete mode 100644 samples/androidNativeActivity/build.gradle create mode 100644 samples/androidNativeActivity/build.gradle.kts delete mode 100644 samples/androidNativeActivity/settings.gradle create mode 100644 samples/androidNativeActivity/settings.gradle.kts diff --git a/samples/androidNativeActivity/build.gradle b/samples/androidNativeActivity/build.gradle deleted file mode 100644 index 857f1a561af..00000000000 --- a/samples/androidNativeActivity/build.gradle +++ /dev/null @@ -1,98 +0,0 @@ -buildscript { - repositories { - google() - jcenter() - mavenCentral() - maven { url 'https://dl.bintray.com/kotlin/kotlin-dev' } - maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' } - } - - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath 'com.android.tools.build:gradle:3.3.1' - } -} - -repositories { - google() - jcenter() - mavenCentral() - maven { url 'https://dl.bintray.com/kotlin/kotlin-dev' } - maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' } -} - -apply plugin: 'org.jetbrains.kotlin.multiplatform' -apply plugin: 'com.android.application' - -def appDir = file("$buildDir/Polyhedron") -def libsDir = file("$appDir/libs") -Map libsDirMapping = [ - 'arm32' : "$libsDir/armeabi-v7a", - 'arm64' : "$libsDir/arm64-v8a" -] - -android { - compileSdkVersion 28 - - defaultConfig { - applicationId 'com.jetbrains.konan_activity2' - minSdkVersion 9 - targetSdkVersion 28 - - ndk { - abiFilters 'armeabi-v7a', 'arm64-v8a' - } - } - - sourceSets { - main { - root 'src/arm32Main' - jniLibs.srcDir libsDir - } - } -} - -kotlin { - [new Tuple(presets.androidNativeArm32, 'arm32'), new Tuple(presets.androidNativeArm64, 'arm64')].each { - targetFromPreset(it[0], it[1]) { - binaries { - executable() { - entryPoint = 'sample.androidnative.main' - } - } - compilations.main.cinterops { - bmpformat - } - } - } - - sourceSets { - arm64Main.dependsOn arm32Main - } -} - -// Disable generating Kotlin metadata. -tasks.compileKotlinMetadata.enabled = false - -afterEvaluate { - kotlin.targets { targets -> - [arm32, arm64].collect { target -> - String buildType = 'RELEASE' // Change to 'DEBUG' to include debug symbols. - Object linkTask = binaries.getExecutable(buildType).linkTask - - // Rename binary files to 'libpoly.so' and put them to the appropriate location. - File binaryFile = binaries.getExecutable(buildType).outputFile - linkTask.doLast { - copy { - from binaryFile - into libsDirMapping[target.targetName] - rename { - 'libpoly.so' - } - } - } - - tasks.preBuild.dependsOn linkTask - } - } -} diff --git a/samples/androidNativeActivity/build.gradle.kts b/samples/androidNativeActivity/build.gradle.kts new file mode 100644 index 00000000000..29a93da5434 --- /dev/null +++ b/samples/androidNativeActivity/build.gradle.kts @@ -0,0 +1,98 @@ +import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget +import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTargetPreset +import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBuildType + +repositories { + google() + jcenter() + mavenCentral() + maven("https://dl.bintray.com/kotlin/kotlin-dev") + maven("https://dl.bintray.com/kotlin/kotlin-eap") +} + +plugins { + kotlin("multiplatform") + id("com.android.application") version("3.3.1") +} + +val appDir = buildDir.resolve("Polyhedron") +val libsDir = appDir.resolve("libs") + +val androidPresets = mapOf( + "arm32" to ("androidNativeArm32" to "$libsDir/armeabi-v7a"), + "arm64" to ("androidNativeArm64" to "$libsDir/arm64-v8a") +) + +android { + compileSdkVersion(28) + + defaultConfig { + applicationId = "com.jetbrains.konan_activity2" + minSdkVersion(9) + targetSdkVersion(28) + + ndk { + abiFilters("armeabi-v7a", "arm64-v8a") + } + } + + sourceSets { + val main by getting { + setRoot("src/arm32Main") + jniLibs.srcDir(libsDir) + } + } +} + +kotlin { + androidPresets.forEach { (targetName, presetInfo) -> + val (presetName, _) = presetInfo + val preset = kotlin.presets[presetName] as KotlinNativeTargetPreset + targetFromPreset(preset, targetName) { + binaries { + executable { + entryPoint = "sample.androidnative.main" + } + } + compilations["main"].cinterops { + val bmpformat by creating + } + } + } + + sourceSets { + val arm32Main by getting + val arm64Main by getting + arm64Main.dependsOn(arm32Main) + } +} + +// Disable generating Kotlin metadata. +tasks.compileKotlinMetadata { + enabled = false +} + +afterEvaluate { + androidPresets.forEach { (targetName, presetInfo) -> + val target = kotlin.targets[targetName] as KotlinNativeTarget + val (_, libDir) = presetInfo + + NativeBuildType.values().forEach { + val executable = target.binaries.getExecutable(it) + val linkTask = executable.linkTask + val binaryFile = executable.outputFile + + linkTask.doLast { + copy { + from(binaryFile) + into(libDir) + rename { "libpoly.so" } + } + } + + tasks.preBuild { + dependsOn(linkTask) + } + } + } +} diff --git a/samples/androidNativeActivity/settings.gradle b/samples/androidNativeActivity/settings.gradle deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/samples/androidNativeActivity/settings.gradle.kts b/samples/androidNativeActivity/settings.gradle.kts new file mode 100644 index 00000000000..1e84ed7b3ec --- /dev/null +++ b/samples/androidNativeActivity/settings.gradle.kts @@ -0,0 +1,22 @@ +pluginManagement { + val kotlin_version: String by settings + resolutionStrategy { + eachPlugin { + if (requested.id.id == "org.jetbrains.kotlin.multiplatform") { + useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version") + } + if (requested.id.id == "com.android.application") { + useModule("com.android.tools.build:gradle:${requested.version}") + } + } + } + + repositories { + gradlePluginPortal() + google() + jcenter() + mavenCentral() + maven("https://dl.bintray.com/kotlin/kotlin-dev") + maven("https://dl.bintray.com/kotlin/kotlin-eap") + } +}