Skip to content

Commit

Permalink
Fix crash generating signature
Browse files Browse the repository at this point in the history
  • Loading branch information
LandryNorris committed Jan 19, 2023
1 parent dc4e8c9 commit 3b32a34
Show file tree
Hide file tree
Showing 9 changed files with 18 additions and 4 deletions.
7 changes: 6 additions & 1 deletion sample/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -66,7 +72,6 @@ repositories {
mavenLocal()
}


tasks {
val prepareAndroidNdkSo by creating {
dependsOn(build)
Expand Down
Binary file modified sample/src/androidMain/jniLibs/arm64-v8a/libsample.so
Binary file not shown.
Binary file modified sample/src/androidMain/jniLibs/armeabi-v7a/libsample.so
Binary file not shown.
Binary file modified sample/src/androidMain/jniLibs/x86/libsample.so
Binary file not shown.
Binary file modified sample/src/androidMain/jniLibs/x86_64/libsample.so
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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")
}
}
}
Original file line number Diff line number Diff line change
@@ -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)
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,8 @@ fun registerJniNatives(env: CPointer<JNIEnvVar>) {
}

method("createDataClass") {
signature = signature(::createDataClass)
signature = Signature(listOf(String, Int, Double, DoubleArray),
createSignature("java.lang.Object")).toString()
function = staticCFunction(::createDataClass)
}

Expand Down

0 comments on commit 3b32a34

Please sign in to comment.