Android jna working

This commit is contained in:
Ugljesa Jovanovic committed 2021-02-21 11:40:16 +01:00
1 parent 8290586a12
commit 86cdc0da8f
14 files changed
+41 -21

No files matched your search

@@ -73,6 +73,9 @@ android {
isMinifyEnabled = false
}
}
sourceSets.getByName("main") {
jniLibs.srcDir("libs")
}
}
@@ -447,6 +450,9 @@ kotlin {
dependencies {
implementation("com.goterl.lazycode:lazysodium-android:4.2.0@aar")
implementation("net.java.dev.jna:jna:5.5.0@aar")
implementation(Deps.Jvm.resourceLoader) {
exclude("net.java.dev.jna", "jna")
}
}
}
@@ -1,7 +1,8 @@
package com.ionspin.kotlin.crypto
import com.goterl.lazycode.lazysodium.LazySodiumAndroid
import com.goterl.lazycode.lazysodium.SodiumAndroid
import com.ionspin.kotlin.crypto.jnitest.SodiumVersion
import com.sun.jna.Native
/**
@@ -4,11 +4,9 @@ import co.libly.resourceloader.FileLoader
import co.libly.resourceloader.ResourceLoader
import com.sun.jna.Library
import com.sun.jna.Native
import com.sun.jna.NativeLibrary
import com.sun.jna.Platform
import java.io.File
import java.lang.RuntimeException
import kotlin.test.assertEquals
/**
* Created by Ugljesa Jovanovic
@@ -17,7 +15,7 @@ import kotlin.test.assertEquals
*/
object JniTest {
fun work() {
fun work() : String {
val libraryFile = when {
Platform.isMac() -> {
FileLoader.get().load("dynamic-macos-x86-64.dylib", Any::class.java)
@@ -29,20 +27,28 @@ object JniTest {
FileLoader.get().load("dynamic-msvc-x86-64-libsodium.dll", Any::class.java)
}
Platform.isAndroid() -> {
File("/home/ionspin/Projects/Future/kotlin-multiplatform-libsodium/multiplatform-crypto-libsodium-bindings/src/jvmMain/resources/dynamic-linux-x86-64-libsodium.so")
when {
Platform.is64Bit() -> {
File("irrelevant")
}
else -> throw RuntimeException("Unsupported platform")
}
}
else -> throw RuntimeException("Unknown platform")
}
val loaded = if (Platform.isAndroid()) {
Native.load("sodium", SodiumVersion::class.java) as SodiumVersion
} else {
Native.load(libraryFile.absolutePath, SodiumVersion::class.java) as SodiumVersion
}
println(libraryFile.absoluteFile)
val loaded = Native.load(libraryFile.absolutePath, SodiumVersion::class.java) as SodiumVersion
val version = loaded.sodium_version_string()
println("Loaded ${loaded.sodium_version_string()}")
assertEquals("1.0.18", version)
return version
}
}
@@ -2,6 +2,8 @@ package com.ionspin.kotlin.crypto
import com.goterl.lazycode.lazysodium.LazySodiumJava
import com.goterl.lazycode.lazysodium.SodiumJava
import com.ionspin.kotlin.crypto.jnitest.JniTest
import com.ionspin.kotlin.crypto.jnitest.SodiumVersion
/**
* Created by Ugljesa Jovanovic
@@ -9,3 +11,4 @@ import com.goterl.lazycode.lazysodium.SodiumJava
* on 22-Aug-2020
*/
typealias SodiumWrapper = SodiumJava
typealias JniTestWrapper = SodiumVersion
@@ -1,6 +1,7 @@
package com.ionspin.kotlin.crypto.jnitest
import org.junit.Test
import kotlin.test.assertEquals
/**
* Created by Ugljesa Jovanovic
@@ -11,6 +12,7 @@ class JniTestTest {
@Test
fun testJniTest() {
JniTest.work()
val result = JniTest.work()
assertEquals("1.0.18", result)
}
}