From f2f45658fc825fbb6521333d7bba3eb8843f6ee5 Mon Sep 17 00:00:00 2001 From: Vincent de Smet Date: Wed, 29 Jan 2020 08:26:48 +0100 Subject: [PATCH 1/2] Move to kotlin multiplatform plugin. --- .gitignore | 4 +- android/build.gradle | 64 -------- build.gradle | 5 +- common/build.gradle | 17 --- gradle/wrapper/gradle-wrapper.properties | 2 +- ios/build.gradle | 36 ----- kissme/build.gradle | 141 ++++++++++++++++++ {ios => kissme}/generate_cinterop_conf.sh | 2 +- .../library/keychainwrapper/bin/Keychain.h | 0 .../keychainwrapper/bin/KeychainQuery.h | 0 .../keychainwrapper/bin/keychainWrapper.a | Bin .../library/keychainwrapper/src/Keychain.h | 0 .../library/keychainwrapper/src/Keychain.m | 0 .../keychainwrapper/src/KeychainQuery.h | 0 .../keychainwrapper/src/KeychainQuery.m | 0 .../src/androidMain}/AndroidManifest.xml | 0 .../netguru/kissme/AndroidStorageProvider.kt | 0 .../netguru/kissme/EncryptionKeysStorage.kt | 0 .../kissme/EncryptionKeysStorageProvider.kt | 0 .../kotlin/com/netguru/kissme/Kissme.kt | 0 .../com/netguru/kissme/StorageInitializer.kt | 0 .../kotlin/com/netguru/kissme/BaseTest.kt | 0 .../kotlin/com/netguru/kissme/Storage.kt | 0 .../kotlin/com/netguru/kissme/StorageTest.kt | 0 .../kotlin/com/netguru/kissme/Kissme.kt | 0 .../kotlin/com/netguru/kissme/BaseTest.kt | 0 .../kotlin/com/netguru/kissme/KissmeTest.kt | 0 .../kotlin/com/netguru/kissme/Kissme.kt | 0 .../kotlin/com.netguru.kissme/BaseTest.kt | 0 .../kotlin/com.netguru.kissme/Storage.kt | 0 settings.gradle | 2 +- 31 files changed, 148 insertions(+), 125 deletions(-) delete mode 100644 android/build.gradle delete mode 100644 common/build.gradle delete mode 100644 ios/build.gradle create mode 100644 kissme/build.gradle rename {ios => kissme}/generate_cinterop_conf.sh (91%) rename {ios => kissme}/library/keychainwrapper/bin/Keychain.h (100%) rename {ios => kissme}/library/keychainwrapper/bin/KeychainQuery.h (100%) rename {ios => kissme}/library/keychainwrapper/bin/keychainWrapper.a (100%) rename {ios => kissme}/library/keychainwrapper/src/Keychain.h (100%) rename {ios => kissme}/library/keychainwrapper/src/Keychain.m (100%) rename {ios => kissme}/library/keychainwrapper/src/KeychainQuery.h (100%) rename {ios => kissme}/library/keychainwrapper/src/KeychainQuery.m (100%) rename {android/src/main => kissme/src/androidMain}/AndroidManifest.xml (100%) rename {android/src/main => kissme/src/androidMain}/kotlin/com/netguru/kissme/AndroidStorageProvider.kt (100%) rename {android/src/main => kissme/src/androidMain}/kotlin/com/netguru/kissme/EncryptionKeysStorage.kt (100%) rename {android/src/main => kissme/src/androidMain}/kotlin/com/netguru/kissme/EncryptionKeysStorageProvider.kt (100%) rename {android/src/main => kissme/src/androidMain}/kotlin/com/netguru/kissme/Kissme.kt (100%) rename {android/src/main => kissme/src/androidMain}/kotlin/com/netguru/kissme/StorageInitializer.kt (100%) rename {android/src/test => kissme/src/androidTest}/kotlin/com/netguru/kissme/BaseTest.kt (100%) rename {android/src/test => kissme/src/androidTest}/kotlin/com/netguru/kissme/Storage.kt (100%) rename {android/src/test => kissme/src/androidTest}/kotlin/com/netguru/kissme/StorageTest.kt (100%) rename {common/src/main => kissme/src/commonMain}/kotlin/com/netguru/kissme/Kissme.kt (100%) rename {common/src/test => kissme/src/commonTest}/kotlin/com/netguru/kissme/BaseTest.kt (100%) rename {common/src/test => kissme/src/commonTest}/kotlin/com/netguru/kissme/KissmeTest.kt (100%) rename {ios/src/main => kissme/src/iosMain}/kotlin/com/netguru/kissme/Kissme.kt (100%) rename {ios/src/test => kissme/src/iosTest}/kotlin/com.netguru.kissme/BaseTest.kt (100%) rename {ios/src/test => kissme/src/iosTest}/kotlin/com.netguru.kissme/Storage.kt (100%) diff --git a/.gitignore b/.gitignore index cdb633c..58dcd54 100644 --- a/.gitignore +++ b/.gitignore @@ -24,7 +24,7 @@ bin/ gen/ out/ -!/ios/library/keychainwrapper/bin +!/kissme/library/keychainwrapper/bin # Gradle files .gradle/ @@ -96,7 +96,7 @@ fabric.properties .LSOverride # ios cinterop .def file -/ios/src/main/c_interop/keychainwrapper.def +/kissme/src/nativeInterop/cinterop/keychainwrapper.def # Build-time secrets secret.properties diff --git a/android/build.gradle b/android/build.gradle deleted file mode 100644 index 07207b3..0000000 --- a/android/build.gradle +++ /dev/null @@ -1,64 +0,0 @@ -apply plugin: 'com.android.library' -apply plugin: 'kotlin-platform-android' - -task sourcesJar(type: Jar) { - classifier = 'sources' - from android.sourceSets.main.java.srcDirs -} - -artifacts { - archives sourcesJar -} - -publishing { - publications { - android(MavenPublication) { - artifact("$buildDir/outputs/aar/android-release.aar") - artifact sourcesJar - artifactId 'android' - version project.libraryVersion - - pom.withXml { - def dependenciesNode = asNode().appendNode('dependencies') - // Iterate over the implementation dependencies (we don't want the test ones), adding a node for each - configurations.implementation.allDependencies.each { - // Ensure dependencies such as fileTree are not included in the pom. - if (it.name != 'unspecified') { - println(it.name) - def dependencyNode = dependenciesNode.appendNode('dependency') - dependencyNode.appendNode('groupId', it.group) - dependencyNode.appendNode('artifactId', it.name) - dependencyNode.appendNode('version', it.version) - } - } - } - } - } -} - -android { - compileSdkVersion 28 - defaultConfig { - minSdkVersion 23 - targetSdkVersion 28 - versionCode 1 - versionName '1.0' - } - buildTypes { - release { - minifyEnabled false - } - } -} - -dependencies { - expectedBy project(':common') - implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - implementation "com.github.yandextaxitech:binaryprefs:1.0.1" - testImplementation "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version" - testImplementation "org.jetbrains.kotlin:kotlin-test:$kotlin_version" - testImplementation "io.mockk:mockk:1.9.3" - testImplementation "androidx.test:core:1.2.0" - testImplementation "androidx.test.ext:junit:1.1.1" - testImplementation "org.robolectric:robolectric:4.2" -} diff --git a/build.gradle b/build.gradle index 34a6b96..1998790 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ apply from: 'versions.gradle' buildscript { - ext.kotlin_version = '1.3.41' + ext.kotlin_version = '1.3.60' repositories { maven { url 'https://dl.bintray.com/jetbrains/kotlin-native-dependencies' } @@ -10,8 +10,7 @@ buildscript { } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath "org.jetbrains.kotlin:kotlin-native-gradle-plugin:$kotlin_version" - classpath "com.android.tools.build:gradle:3.4.0" + classpath "com.android.tools.build:gradle:3.5.3" classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4' } } diff --git a/common/build.gradle b/common/build.gradle deleted file mode 100644 index a6a84bb..0000000 --- a/common/build.gradle +++ /dev/null @@ -1,17 +0,0 @@ -apply plugin: "kotlin-platform-common" - -publishing { - publications { - mavenJava(MavenPublication) { - from components.java - artifactId "common" - version project.libraryVersion - } - } -} - -dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-common" - testImplementation "org.jetbrains.kotlin:kotlin-test-annotations-common" - testImplementation "org.jetbrains.kotlin:kotlin-test-common" -} diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index caf54fa..d757f3d 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip diff --git a/ios/build.gradle b/ios/build.gradle deleted file mode 100644 index 72fd108..0000000 --- a/ios/build.gradle +++ /dev/null @@ -1,36 +0,0 @@ -apply plugin: 'org.jetbrains.kotlin.platform.native' -sourceSets.main { - kotlin.srcDirs += 'src/main/kotlin' -} - -components.main { - targets = ['ios_arm64', 'ios_x64'] - outputKinds = [KLIBRARY] - baseName = "ios" - - dependencies { - cinterop("keychainwrapper"){ - packageName "com.netguru.keychainWrapper" - includeDirs { - allHeaders "./library/keychainwrapper/bin" - } - linkerOpts "-F${projectDir}" - compilerOpts "-F${projectDir}" - } - } -} - -dependencies { - expectedBy project(':common') -} - -task generateCinteropConfig(type :Exec){ - workingDir "${projectDir}" - commandLine 'sh', "${projectDir}/generate_cinterop_conf.sh" -} - -gradle.taskGraph.beforeTask { Task task -> - if (task.project.name.toLowerCase().contains("ios")) { - "sh ${projectDir}/generate_cinterop_conf.sh ${projectDir}".execute().text - } -} \ No newline at end of file diff --git a/kissme/build.gradle b/kissme/build.gradle new file mode 100644 index 0000000..e3c5bbb --- /dev/null +++ b/kissme/build.gradle @@ -0,0 +1,141 @@ +plugins { + id("org.jetbrains.kotlin.multiplatform") +} +apply plugin: 'com.android.library' + +kotlin { + android { + publishLibraryVariants("release", "debug") + } + + iosX64("iosX64") { + compilations.main.cinterops { + keychainwrapper { + packageName "com.netguru.keychainWrapper" + includeDirs { + allHeaders "./library/keychainwrapper/bin" + } + compilerOpts "-F${projectDir}" + } + } + } + + iosArm64("iosArm64") { + compilations.main.cinterops { + keychainwrapper { + packageName "com.netguru.keychainWrapper" + includeDirs { + allHeaders "./library/keychainwrapper/bin" + } + compilerOpts "-F${projectDir}" + } + } + } + + sourceSets { + commonMain { + dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib-common" + } + } + commonTest { + dependencies { + implementation "org.jetbrains.kotlin:kotlin-test-annotations-common" + implementation "org.jetbrains.kotlin:kotlin-test-common" + } + } + + androidMain { + dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + implementation "com.github.yandextaxitech:binaryprefs:1.0.1" + } + } + androidTest { + dependencies { + implementation "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version" + implementation "org.jetbrains.kotlin:kotlin-test:$kotlin_version" + implementation "io.mockk:mockk:1.9.3" + implementation "androidx.test:core:1.2.0" + implementation "androidx.test.ext:junit:1.1.1" + implementation "org.robolectric:robolectric:4.2" + } + } + + iosMain {} + iosArm64Main.dependsOn iosMain + iosX64Main.dependsOn iosMain + + iosTest {} + iosArm64Test.dependsOn iosTest + iosX64Test.dependsOn iosTest + } +} + +android { + compileSdkVersion 28 + defaultConfig { + minSdkVersion 23 + targetSdkVersion 28 + versionCode 1 + versionName '1.0' + } + buildTypes { + release { + minifyEnabled false + } + } + + sourceSets { + main { + manifest.srcFile 'src/androidMain/AndroidManifest.xml' + java.srcDirs = ['src/androidMain/java', 'src/androidMain/kotlin'] + res.srcDirs = ['src/androidMain/res'] + } + } +} + +task generateCinteropConfig(type: Exec) { + workingDir "${projectDir}" + commandLine 'sh', "${projectDir}/generate_cinterop_conf.sh" +} + +gradle.taskGraph.beforeTask { Task task -> + if (task.project.name.toLowerCase().contains("ios")) { + "sh ${projectDir}/generate_cinterop_conf.sh ${projectDir}".execute().text + } +} + +task sourcesJar(type: Jar) { + classifier = 'sources' + from android.sourceSets.main.java.srcDirs +} + +artifacts { + archives sourcesJar +} +publishing { + publications { + android(MavenPublication) { + artifact("$buildDir/outputs/aar/android-release.aar") + artifact sourcesJar + artifactId 'android' + version project.libraryVersion + + pom.withXml { + def dependenciesNode = asNode().appendNode('dependencies') + // Iterate over the implementation dependencies (we don't want the test ones), adding a node for each + configurations.implementation.allDependencies.each { + // Ensure dependencies such as fileTree are not included in the pom. + if (it.name != 'unspecified') { + println(it.name) + def dependencyNode = dependenciesNode.appendNode('dependency') + dependencyNode.appendNode('groupId', it.group) + dependencyNode.appendNode('artifactId', it.name) + dependencyNode.appendNode('version', it.version) + } + } + } + } + } +} diff --git a/ios/generate_cinterop_conf.sh b/kissme/generate_cinterop_conf.sh similarity index 91% rename from ios/generate_cinterop_conf.sh rename to kissme/generate_cinterop_conf.sh index 0b12dda..8c2de40 100755 --- a/ios/generate_cinterop_conf.sh +++ b/kissme/generate_cinterop_conf.sh @@ -1,6 +1,6 @@ #! /bin/bash current_dir=$1 -target_file_dir="$1/src/main/c_interop/" +target_file_dir="$1/src/nativeinterop/cinterop/" target_file_name="keychainwrapper.def" rm -f "$target_file_dir$target_file_name" diff --git a/ios/library/keychainwrapper/bin/Keychain.h b/kissme/library/keychainwrapper/bin/Keychain.h similarity index 100% rename from ios/library/keychainwrapper/bin/Keychain.h rename to kissme/library/keychainwrapper/bin/Keychain.h diff --git a/ios/library/keychainwrapper/bin/KeychainQuery.h b/kissme/library/keychainwrapper/bin/KeychainQuery.h similarity index 100% rename from ios/library/keychainwrapper/bin/KeychainQuery.h rename to kissme/library/keychainwrapper/bin/KeychainQuery.h diff --git a/ios/library/keychainwrapper/bin/keychainWrapper.a b/kissme/library/keychainwrapper/bin/keychainWrapper.a similarity index 100% rename from ios/library/keychainwrapper/bin/keychainWrapper.a rename to kissme/library/keychainwrapper/bin/keychainWrapper.a diff --git a/ios/library/keychainwrapper/src/Keychain.h b/kissme/library/keychainwrapper/src/Keychain.h similarity index 100% rename from ios/library/keychainwrapper/src/Keychain.h rename to kissme/library/keychainwrapper/src/Keychain.h diff --git a/ios/library/keychainwrapper/src/Keychain.m b/kissme/library/keychainwrapper/src/Keychain.m similarity index 100% rename from ios/library/keychainwrapper/src/Keychain.m rename to kissme/library/keychainwrapper/src/Keychain.m diff --git a/ios/library/keychainwrapper/src/KeychainQuery.h b/kissme/library/keychainwrapper/src/KeychainQuery.h similarity index 100% rename from ios/library/keychainwrapper/src/KeychainQuery.h rename to kissme/library/keychainwrapper/src/KeychainQuery.h diff --git a/ios/library/keychainwrapper/src/KeychainQuery.m b/kissme/library/keychainwrapper/src/KeychainQuery.m similarity index 100% rename from ios/library/keychainwrapper/src/KeychainQuery.m rename to kissme/library/keychainwrapper/src/KeychainQuery.m diff --git a/android/src/main/AndroidManifest.xml b/kissme/src/androidMain/AndroidManifest.xml similarity index 100% rename from android/src/main/AndroidManifest.xml rename to kissme/src/androidMain/AndroidManifest.xml diff --git a/android/src/main/kotlin/com/netguru/kissme/AndroidStorageProvider.kt b/kissme/src/androidMain/kotlin/com/netguru/kissme/AndroidStorageProvider.kt similarity index 100% rename from android/src/main/kotlin/com/netguru/kissme/AndroidStorageProvider.kt rename to kissme/src/androidMain/kotlin/com/netguru/kissme/AndroidStorageProvider.kt diff --git a/android/src/main/kotlin/com/netguru/kissme/EncryptionKeysStorage.kt b/kissme/src/androidMain/kotlin/com/netguru/kissme/EncryptionKeysStorage.kt similarity index 100% rename from android/src/main/kotlin/com/netguru/kissme/EncryptionKeysStorage.kt rename to kissme/src/androidMain/kotlin/com/netguru/kissme/EncryptionKeysStorage.kt diff --git a/android/src/main/kotlin/com/netguru/kissme/EncryptionKeysStorageProvider.kt b/kissme/src/androidMain/kotlin/com/netguru/kissme/EncryptionKeysStorageProvider.kt similarity index 100% rename from android/src/main/kotlin/com/netguru/kissme/EncryptionKeysStorageProvider.kt rename to kissme/src/androidMain/kotlin/com/netguru/kissme/EncryptionKeysStorageProvider.kt diff --git a/android/src/main/kotlin/com/netguru/kissme/Kissme.kt b/kissme/src/androidMain/kotlin/com/netguru/kissme/Kissme.kt similarity index 100% rename from android/src/main/kotlin/com/netguru/kissme/Kissme.kt rename to kissme/src/androidMain/kotlin/com/netguru/kissme/Kissme.kt diff --git a/android/src/main/kotlin/com/netguru/kissme/StorageInitializer.kt b/kissme/src/androidMain/kotlin/com/netguru/kissme/StorageInitializer.kt similarity index 100% rename from android/src/main/kotlin/com/netguru/kissme/StorageInitializer.kt rename to kissme/src/androidMain/kotlin/com/netguru/kissme/StorageInitializer.kt diff --git a/android/src/test/kotlin/com/netguru/kissme/BaseTest.kt b/kissme/src/androidTest/kotlin/com/netguru/kissme/BaseTest.kt similarity index 100% rename from android/src/test/kotlin/com/netguru/kissme/BaseTest.kt rename to kissme/src/androidTest/kotlin/com/netguru/kissme/BaseTest.kt diff --git a/android/src/test/kotlin/com/netguru/kissme/Storage.kt b/kissme/src/androidTest/kotlin/com/netguru/kissme/Storage.kt similarity index 100% rename from android/src/test/kotlin/com/netguru/kissme/Storage.kt rename to kissme/src/androidTest/kotlin/com/netguru/kissme/Storage.kt diff --git a/android/src/test/kotlin/com/netguru/kissme/StorageTest.kt b/kissme/src/androidTest/kotlin/com/netguru/kissme/StorageTest.kt similarity index 100% rename from android/src/test/kotlin/com/netguru/kissme/StorageTest.kt rename to kissme/src/androidTest/kotlin/com/netguru/kissme/StorageTest.kt diff --git a/common/src/main/kotlin/com/netguru/kissme/Kissme.kt b/kissme/src/commonMain/kotlin/com/netguru/kissme/Kissme.kt similarity index 100% rename from common/src/main/kotlin/com/netguru/kissme/Kissme.kt rename to kissme/src/commonMain/kotlin/com/netguru/kissme/Kissme.kt diff --git a/common/src/test/kotlin/com/netguru/kissme/BaseTest.kt b/kissme/src/commonTest/kotlin/com/netguru/kissme/BaseTest.kt similarity index 100% rename from common/src/test/kotlin/com/netguru/kissme/BaseTest.kt rename to kissme/src/commonTest/kotlin/com/netguru/kissme/BaseTest.kt diff --git a/common/src/test/kotlin/com/netguru/kissme/KissmeTest.kt b/kissme/src/commonTest/kotlin/com/netguru/kissme/KissmeTest.kt similarity index 100% rename from common/src/test/kotlin/com/netguru/kissme/KissmeTest.kt rename to kissme/src/commonTest/kotlin/com/netguru/kissme/KissmeTest.kt diff --git a/ios/src/main/kotlin/com/netguru/kissme/Kissme.kt b/kissme/src/iosMain/kotlin/com/netguru/kissme/Kissme.kt similarity index 100% rename from ios/src/main/kotlin/com/netguru/kissme/Kissme.kt rename to kissme/src/iosMain/kotlin/com/netguru/kissme/Kissme.kt diff --git a/ios/src/test/kotlin/com.netguru.kissme/BaseTest.kt b/kissme/src/iosTest/kotlin/com.netguru.kissme/BaseTest.kt similarity index 100% rename from ios/src/test/kotlin/com.netguru.kissme/BaseTest.kt rename to kissme/src/iosTest/kotlin/com.netguru.kissme/BaseTest.kt diff --git a/ios/src/test/kotlin/com.netguru.kissme/Storage.kt b/kissme/src/iosTest/kotlin/com.netguru.kissme/Storage.kt similarity index 100% rename from ios/src/test/kotlin/com.netguru.kissme/Storage.kt rename to kissme/src/iosTest/kotlin/com.netguru.kissme/Storage.kt diff --git a/settings.gradle b/settings.gradle index b42d8f9..71ca5ba 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,2 +1,2 @@ enableFeaturePreview('GRADLE_METADATA') -include ':android', ':ios', ':common' +include ':kissme' From 1d3b3c9bafddc37bfe3d768f8300ea652f166c81 Mon Sep 17 00:00:00 2001 From: Vincent de Smet Date: Wed, 29 Jan 2020 09:34:51 +0100 Subject: [PATCH 2/2] Fix Android publishing path --- kissme/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kissme/build.gradle b/kissme/build.gradle index e3c5bbb..c94a949 100644 --- a/kissme/build.gradle +++ b/kissme/build.gradle @@ -117,7 +117,7 @@ artifacts { publishing { publications { android(MavenPublication) { - artifact("$buildDir/outputs/aar/android-release.aar") + artifact("$buildDir/outputs/aar/kissme-release.aar") artifact sourcesJar artifactId 'android' version project.libraryVersion