Siv*_*Siv 5 android uber-api h3
我想将h3 java绑定库集成到我的android应用中,并且出现以下异常:
java.lang.UnsatisfiedLinkError:在/android-armv7l/libh3-java.so上com.uber.h3core.H3CoreLoader.copyResource(H3CoreLoader.java:67)找不到本地资源
之前有人在Android OS上使用过此库吗?
谢谢。
最初,遵循自述文件中的预期用法应该可以使其工作。如果没有,请参阅下文。
已知问题:Android,无法使用库
UnsatisfiedLinkError:当项目中没有复制/检测到相应的本机库时,可能会遇到这种情况。遵循NickRadu 的解决方法应该可以使其发挥作用。以下是分步指南。
jniLibs( app/src/main/jniLibs)(出于某种原因,仅命名它对jni我来说不起作用)。android-并将其插入该jniLibs文件夹(来自步骤 1)。android-前缀。splits { abi { enable false } }到应用程序的 build.gradle 文件(在 内android)。完毕。一般来说,该库现在应该按预期工作。
如果您在安装应用程序时遇到:
INSTALL_FAILED_NO_MATCHING_ABIS,然后根据您的测试设备,创建该文件夹的副本(及其内容)并根据需要重命名。例如,运行在arm64-v8a上的设备,我只是复制了该arm64文件夹并将其重命名为arm64-v8a. 或者,如果您使用的是模拟器,请确保您使用的不是带有x86CPU 的模拟器。
D8 errors: Invoke-customs are only supported starting with Android O (--min-api 26),在应用程序的 build.gradle 中添加这些编译选项(请android注意,它可能会根据系统的 Java 版本而变化)
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
注意:最好首先在多种 CPU 架构类型上测试应用程序,以了解其行为。
要快速查看设备的 CPU 架构,您可以安装Droid Hardware Info,或者自己运行快速测试代码。
这是我使用的一个测试块及其相应的结果日志:
private fun testH3() {
    val h3 = H3Core.newSystemInstance()
    val lat = 37.775938728915946
    val lng = -122.41795063018799
    val resolution = 8
    val hexAddr = h3.geoToH3Address(lat, lng, resolution)
    val hex = h3.stringToH3(hexAddr)
    val kRingsResult = h3.kRings(hexAddr, 1)
    Log.d("H3Test", "geoToH3Address: $hexAddr")
    Log.d("H3Test", "stringToH3: $hex")
    Log.d("H3Test", "kRings: $kRingsResult")
}
结果:
D/H3Test: geoToH3Address: 8828308281fffff
D/H3Test: stringToH3: 613196570331971583
D/H3Test: kRings: [[8828308281fffff], [8828308281fffff, 882830828dfffff, 8828308285fffff, 8828308287fffff, 8828308283fffff, 882830828bfffff, 8828308289fffff]]
我制作了一个示例项目,其中库按预期工作。看android-uber-h3-sample。
| 归档时间: | 
 | 
| 查看次数: | 302 次 | 
| 最近记录: |