Android jna working
This commit is contained in:
parent
8290586a12
commit
86cdc0da8f
@ -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
|
||||
|
||||
|
||||
/**
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
multiplatform-crypto-libsodium-bindings/src/androidSpecific/lib/x86/libsodium.so
Executable file
BIN
multiplatform-crypto-libsodium-bindings/src/androidSpecific/lib/x86/libsodium.so
Executable file
Binary file not shown.
Binary file not shown.
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -63,7 +63,7 @@ kotlin {
|
||||
android()
|
||||
runningOnLinuxx86_64 {
|
||||
jvm()
|
||||
js {
|
||||
js(IR) {
|
||||
browser {
|
||||
webpackTask {
|
||||
|
||||
@ -188,7 +188,7 @@ kotlin {
|
||||
implementation(kotlin(Deps.Common.test))
|
||||
implementation(Deps.Common.kotlinBigNum)
|
||||
implementation(Deps.Common.serialization)
|
||||
api(Deps.Common.libsodiumBindings)
|
||||
api(project(":multiplatform-crypto-libsodium-bindings"))
|
||||
}
|
||||
}
|
||||
val commonTest by getting {
|
||||
|
@ -7,6 +7,7 @@ package com.ionspin.kotlin.crypto.sample
|
||||
import android.os.Bundle
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import com.ionspin.kotlin.crypto.hash.Hash
|
||||
import com.ionspin.kotlin.crypto.jnitest.JniTest
|
||||
import com.ionspin.kotlin.crypto.util.encodeToUByteArray
|
||||
import com.ionspin.kotlin.crypto.util.toHexString
|
||||
import kotlinx.android.synthetic.main.activity_main.*
|
||||
@ -18,7 +19,7 @@ class MainActivity : AppCompatActivity() {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_main)
|
||||
val hash = Hash.sha512("123".encodeToUByteArray())
|
||||
helloWorldTextView.setText("Hash (SHA512) of 123: ${hash.toHexString()}")
|
||||
helloWorldTextView.setText("Hash (SHA512) of 123: ${hash.toHexString()} \nSodium version: ${JniTest.work()}")
|
||||
|
||||
|
||||
}
|
||||
|
@ -7,11 +7,12 @@ import com.ionspin.kotlin.crypto.util.encodeToUByteArray
|
||||
import com.ionspin.kotlin.crypto.util.toHexString
|
||||
import react.dom.render
|
||||
import kotlinx.browser.document
|
||||
import kotlin.browser.window
|
||||
import kotlinx.browser.window
|
||||
|
||||
|
||||
fun main() {
|
||||
val runningOnNode = jsTypeOf(window) == "undefined"
|
||||
if (!runningOnNode) = runTest {
|
||||
// if (!runningOnNode) = runTest {
|
||||
LibsodiumInitializer.initializeWithCallback {
|
||||
render(document.getElementById("root")) {
|
||||
app {
|
||||
@ -19,10 +20,10 @@ fun main() {
|
||||
}
|
||||
}
|
||||
}
|
||||
} else = runTest {
|
||||
LibsodiumInitializer.initializeWithCallback {
|
||||
val hash = Hash.sha512("123".encodeToUByteArray())
|
||||
println("Hash (SHA512) of 123: ${hash.toHexString()}")
|
||||
}
|
||||
}
|
||||
// } else = runTest {
|
||||
// LibsodiumInitializer.initializeWithCallback {
|
||||
// val hash = Hash.sha512("123".encodeToUByteArray())
|
||||
// println("Hash (SHA512) of 123: ${hash.toHexString()}")
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
@ -37,5 +37,5 @@ enableFeaturePreview("GRADLE_METADATA")
|
||||
rootProject.name = "KotlinMultiplatformLibsodium"
|
||||
include("multiplatform-crypto-api")
|
||||
include("multiplatform-crypto-libsodium-bindings")
|
||||
//include("sample")
|
||||
include("sample")
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user