欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

高德地图开发 地图黑屏报错(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文件

  1. 创建的jniLibs文件夹必须要与main中的java和res文件夹同级,在project视图中创建jniLibs,如果创建成功,在里面添加so文件后,切换到Android视图查看,会发现jniLibs文件夹和res文件夹一样右下角有小标。

  2. 如果已经在build.gradle中添加了sourceSets标签
        sourceSets {
            main {
                jniLibs.srcDirs = ['libs']
            }
        }

        那么此时就会把你的 libs 当作 jniLibs ,那么这时候要么你把那些so文件复制到 libs 中,要么就把这块代码删除掉。


至此,我觉得你的问题应该已经解决了