buildscript { repositories { jcenter() } } plugins { id "org.jetbrains.kotlin.multiplatform" id "com.android.library" id "maven-publish" } kotlin { jvm("jvm6") { compilations.main.kotlinOptions { jvmTarget = "1.6" } } android() targets { final def iOSTarget = iOSIsRealDevice ? presets.iosArm64 : presets.iosX64 fromPreset(iOSTarget, 'ios') { binaries { framework { baseName = "fints4k" embedBitcode(embedBitcodeValue) export(project(":common")) } } } } js() { nodejs { testTask { enabled = false } } browser { testTask { enabled = false } } } sourceSets { commonMain { dependencies { implementation kotlin("stdlib-common") implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-common:$kotlinCoroutinesVersion" api project(":common") implementation "io.ktor:ktor-client-core:$ktorVersion" } } commonTest { dependencies { implementation kotlin("test-common") implementation kotlin("test-annotations-common") implementation "ch.tutteli.atrium:atrium-fluent-en_GB-common:$atriumVersion" } } jvm6Main { dependencies { // implementation "io.ktor:ktor-client-cio:$ktorVersion" implementation "io.ktor:ktor-client-okhttp:$ktorVersion" implementation "org.slf4j:slf4j-api:$slf4jVersion" } } jvm6Test { dependencies { implementation kotlin("test-junit") implementation "org.junit.jupiter:junit-jupiter:$junit5Version" runtimeOnly "org.junit.jupiter:junit-jupiter-engine:$junit5Version" implementation "org.assertj:assertj-core:$assertJVersion" implementation "org.mockito:mockito-core:$mockitoVersion" implementation "ch.tutteli.atrium:atrium-fluent-en_GB:$atriumVersion" implementation project(":BankingUiCommon") implementation project(":BankFinder") implementation project(":fints4kBankingClient") implementation "org.apache.commons:commons-csv:1.8" implementation "org.slf4j:slf4j-simple:$slf4jVersion" } } androidMain { dependsOn jvm6Main dependencies { implementation "io.ktor:ktor-client-android:$ktorVersion" } } iosMain { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-common:$kotlinVersion" implementation "io.ktor:ktor-client-ios:$ktorVersion" implementation "io.ktor:ktor-client-core-native:$ktorVersion" } } jsMain { dependsOn commonMain dependencies { api kotlin("stdlib-js") implementation "io.ktor:ktor-client-js:$ktorVersion" implementation "io.ktor:ktor-client-encoding-js:$ktorVersion" implementation "io.ktor:ktor-client-js-kotlinMultiplatform:$ktorVersion" } } jsTest { dependencies { implementation kotlin("test-js") implementation "ch.tutteli.atrium:atrium-fluent-en_GB-js:$atriumVersion" } } } } // Task to generate iOS framework for xcode projects. task packForXcode(type: Sync) { final File frameworkDir = new File(buildDir, "xcode-frameworks") final String mode = project.findProperty("XCODE_CONFIGURATION")?.toUpperCase() ?: 'DEBUG' final def framework = kotlin.targets.ios.binaries.getFramework("", mode) inputs.property "mode", mode dependsOn framework.linkTask from { framework.outputFile.parentFile } into frameworkDir doLast { new File(frameworkDir, 'gradlew').with { text = "#!/bin/bash\nexport 'JAVA_HOME=${System.getProperty("java.home")}'\ncd '${rootProject.rootDir}'\n./gradlew \$@\n" setExecutable(true) } } } // Run packForXcode when building. tasks.build.dependsOn packForXcode android { compileSdkVersion androidCompileSdkVersion defaultConfig { minSdkVersion androidMinSdkVersion targetSdkVersion androidTargetSdkVersion versionName version versionCode appVersionCode testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } packagingOptions { pickFirst 'META-INF/ktor-http.kotlin_module' pickFirst 'META-INF/kotlinx-io.kotlin_module' pickFirst 'META-INF/atomicfu.kotlin_module' pickFirst 'META-INF/ktor-utils.kotlin_module' pickFirst 'META-INF/kotlinx-coroutines-io.kotlin_module' pickFirst 'META-INF/ktor-client-core.kotlin_module' pickFirst 'META-INF/DEPENDENCIES' pickFirst 'META-INF/NOTICE' pickFirst 'META-INF/LICENSE' pickFirst 'META-INF/LICENSE.txt' pickFirst 'META-INF/NOTICE.txt' } lintOptions { abortOnError false } }