AndroidNativeActivity sample: migrate to KTS

This commit is contained in:
Dmitriy Dolovov
2019-05-31 09:09:18 +03:00
committed by Ilya Matveev
parent e95be11ade
commit edda913b04
4 changed files with 120 additions and 98 deletions
@@ -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<String, String> 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
}
}
}
@@ -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)
}
}
}
}
@@ -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")
}
}