Android loading may fallback to standard JVM (#9)
* Android loading may fallback to standard JVM * Java code must target JVM 1.8 in order to be compatible Android. Co-authored-by: Salomon BRYS <salomon@kodein.net>
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
package fr.acinq.secp256k1.jni
|
||||
|
||||
import android.util.Log
|
||||
import fr.acinq.secp256k1.Secp256k1
|
||||
import fr.acinq.secp256k1.NativeSecp256k1
|
||||
import java.util.*
|
||||
|
||||
public object NativeSecp256k1AndroidLoader {
|
||||
|
||||
@JvmStatic
|
||||
@Synchronized
|
||||
@Throws(Exception::class)
|
||||
fun load(): Secp256k1 {
|
||||
try {
|
||||
System.loadLibrary("secp256k1-jni")
|
||||
return NativeSecp256k1
|
||||
} catch (ex: UnsatisfiedLinkError) {
|
||||
// Purposefully not using Android Log
|
||||
println("Could not load Android Secp256k1. Trying to extract JVM platform specific version.")
|
||||
try {
|
||||
val cls = Class.forName("fr.acinq.secp256k1.jni.NativeSecp256k1JvmLoader")
|
||||
val load = cls.getMethod("load")
|
||||
return load.invoke(null) as Secp256k1
|
||||
} catch (_: ClassNotFoundException) {
|
||||
throw ex
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
package fr.acinq.secp256k1.jni
|
||||
|
||||
import fr.acinq.secp256k1.Secp256k1
|
||||
import fr.acinq.secp256k1.NativeSecp256k1
|
||||
|
||||
public object NativeSecp256k1Loader {
|
||||
|
||||
@JvmStatic
|
||||
@Synchronized
|
||||
@Throws(Exception::class)
|
||||
fun load(): Secp256k1 {
|
||||
System.loadLibrary("secp256k1-jni")
|
||||
return NativeSecp256k1
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user