高德地图开发 地图黑屏报错(No implementation found for void com.autonavi.base.ae.gmap.GLMapEngine.nativeMainThr)
最编程
2024-03-28 17:59:11
...
当小白第一次开发时容易遇到这样的问题
No implementation found for void com.autonavi.base.ae.gmap.GLMapEngine.nativeMainThreadTrigger(int, long) (tried Java_com_autonavi_base_ae_gmap_GLMapEngine_nativeMainThreadTrigger and Java_com_autonavi_base_ae_gmap_GLMapEngine_nativeMainThreadTrigger__IJ)
这是官网提供的开发步骤显示地图-创建地图-开发指南-Android 地图SDK | 高德地图API (amap.com)
这时候大家会很奇怪,明明都是按照官网提供的步骤,为什么会报错地图黑屏呢
问题一:没有创建x86或x86_64文件夹(模拟器是x86架构的)
目前电脑上的模拟器大多是x86架构的,而官方提供的文件中只有arm架构的,如下。
如果用的是as,那么可以在Device Manage中修改架构,默认是x86的架构,arm架构的在Other Images中
官方提供的demo中只有arm架构的,如果是在x86平台上使用(例如雷电模拟器),需要在jniLibs中创建x86文件夹并将arm文件夹中的文件复制到里面(如果你的架构是x86的,好像这个so库文件还不能直接复制。我x86_64使用的是用arm64中的so文件,可以成功运行,但是x86的就不行)
对于这两个架构,我也不是很懂,有需要的可以查看
一文看懂arm架构和x86架构有什么区别 - 知乎 (zhihu.com)
问题二:未识别到so文件
-
创建的jniLibs文件夹必须要与main中的java和res文件夹同级,在project视图中创建jniLibs,如果创建成功,在里面添加so文件后,切换到Android视图查看,会发现jniLibs文件夹和res文件夹一样右下角有小标。
-
如果已经在build.gradle中添加了sourceSets标签
sourceSets { main { jniLibs.srcDirs = ['libs'] } }
那么此时就会把你的 libs 当作 jniLibs ,那么这时候要么你把那些so文件复制到 libs 中,要么就把这块代码删除掉。
至此,我觉得你的问题应该已经解决了