diff --git a/sample/build.gradle.kts b/sample/build.gradle.kts index 173b025..2fe1fae 100644 --- a/sample/build.gradle.kts +++ b/sample/build.gradle.kts @@ -9,6 +9,12 @@ kotlin { val androidNdkTargets = listOf(androidNativeArm64(), androidNativeArm32(), androidNativeX64(), androidNativeX86()) + androidNdkTargets.forEach { + it.binaries { + sharedLib() + } + } + sourceSets { val commonMain by getting val ndkMain by creating { @@ -66,7 +72,6 @@ repositories { mavenLocal() } - tasks { val prepareAndroidNdkSo by creating { dependsOn(build) diff --git a/sample/src/androidMain/jniLibs/arm64-v8a/libsample.so b/sample/src/androidMain/jniLibs/arm64-v8a/libsample.so index b377ed7..48b3943 100755 Binary files a/sample/src/androidMain/jniLibs/arm64-v8a/libsample.so and b/sample/src/androidMain/jniLibs/arm64-v8a/libsample.so differ diff --git a/sample/src/androidMain/jniLibs/armeabi-v7a/libsample.so b/sample/src/androidMain/jniLibs/armeabi-v7a/libsample.so index 2778640..8db47f6 100755 Binary files a/sample/src/androidMain/jniLibs/armeabi-v7a/libsample.so and b/sample/src/androidMain/jniLibs/armeabi-v7a/libsample.so differ diff --git a/sample/src/androidMain/jniLibs/x86/libsample.so b/sample/src/androidMain/jniLibs/x86/libsample.so index bbdc925..4edc59b 100755 Binary files a/sample/src/androidMain/jniLibs/x86/libsample.so and b/sample/src/androidMain/jniLibs/x86/libsample.so differ diff --git a/sample/src/androidMain/jniLibs/x86_64/libsample.so b/sample/src/androidMain/jniLibs/x86_64/libsample.so index d0a8740..b90afee 100755 Binary files a/sample/src/androidMain/jniLibs/x86_64/libsample.so and b/sample/src/androidMain/jniLibs/x86_64/libsample.so differ diff --git a/sample/src/androidMain/kotlin/io/github/landrynorris/sample/JniBridge.kt b/sample/src/androidMain/kotlin/io/github/landrynorris/sample/JniBridge.kt index 4d9a476..51c4278 100644 --- a/sample/src/androidMain/kotlin/io/github/landrynorris/sample/JniBridge.kt +++ b/sample/src/androidMain/kotlin/io/github/landrynorris/sample/JniBridge.kt @@ -13,7 +13,7 @@ object JniBridge { external fun handleShared(sharedClass: SharedClass): String external fun doubleAll(array: DoubleArray): DoubleArray external fun callJavaFunction(value: Double) - external fun createDataClass(s: String, i: Int, d: Double, doubles: DoubleArray): Any + external fun createDataClass(s: String?, i: Int, d: Double, doubles: DoubleArray): Any external fun buttonClicked(ptr: Long) external fun getText(ptr: Long): String external fun createRepository(): Long diff --git a/sample/src/androidMain/kotlin/io/github/landrynorris/sample/MainActivity.kt b/sample/src/androidMain/kotlin/io/github/landrynorris/sample/MainActivity.kt index 8fdb5d0..2094934 100644 --- a/sample/src/androidMain/kotlin/io/github/landrynorris/sample/MainActivity.kt +++ b/sample/src/androidMain/kotlin/io/github/landrynorris/sample/MainActivity.kt @@ -54,5 +54,13 @@ class MainActivity: AppCompatActivity() { if(dataClass.d != d) error("Double wasn't set correctly") if(!dataClass.doubles.contentEquals(doubles)) error("Double array wasn't set correctly") } + + val dataClassWithNull = JniBridge.createDataClass(null, 0, 0.0, doubleArrayOf()) + if(dataClassWithNull is DataClass) { + if(dataClassWithNull.s != null) error("String wasn't set correctly") + if(dataClassWithNull.i != 0) error("Int wasn't set correctly") + if(dataClassWithNull.d != 0.0) error("Double wasn't set correctly") + if(dataClassWithNull.doubles.isNotEmpty()) error("Double array wasn't set correctly") + } } } diff --git a/sample/src/commonMain/kotlin/io/github/landrynorris/jni/sample/DataClass.kt b/sample/src/commonMain/kotlin/io/github/landrynorris/jni/sample/DataClass.kt index 9adbe12..144de3c 100644 --- a/sample/src/commonMain/kotlin/io/github/landrynorris/jni/sample/DataClass.kt +++ b/sample/src/commonMain/kotlin/io/github/landrynorris/jni/sample/DataClass.kt @@ -1,3 +1,3 @@ package io.github.landrynorris.jni.sample -data class DataClass(val s: String, val i: Int, val d: Double, val doubles: DoubleArray) +data class DataClass(val s: String?, val i: Int, val d: Double, val doubles: DoubleArray) diff --git a/sample/src/ndkMain/kotlin/io/github/landrynorris/jni/sample/Jni.kt b/sample/src/ndkMain/kotlin/io/github/landrynorris/jni/sample/Jni.kt index d076689..9d2043a 100644 --- a/sample/src/ndkMain/kotlin/io/github/landrynorris/jni/sample/Jni.kt +++ b/sample/src/ndkMain/kotlin/io/github/landrynorris/jni/sample/Jni.kt @@ -111,7 +111,8 @@ fun registerJniNatives(env: CPointer) { } method("createDataClass") { - signature = signature(::createDataClass) + signature = Signature(listOf(String, Int, Double, DoubleArray), + createSignature("java.lang.Object")).toString() function = staticCFunction(::createDataClass) }