欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > 关于使用高德安卓api时so文件的坑

关于使用高德安卓api时so文件的坑

2025/11/11 11:33:07 来源:https://blog.csdn.net/m0_74024372/article/details/148176722  浏览:    关键词:关于使用高德安卓api时so文件的坑

很久之前,我用高德安卓api开发,将相关内容全部挤在主项目下,包括amap的依赖,以及专有的so文件等。

有一天,我把amap相关的操作全部打包成了一个lib。拆包出来方便管理。

又过了几个月,新建了一个project要写assignment。就想着把之前打包好的lib直接拿过来用,然后就出现了地图相关全黑屏,logcat狂跳以下报错的情况:

2025-05-23 19:52:17.109 10854-10854 ou.trackllector         com.xxx            E  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)
2025-05-23 19:52:17.109 10854-10854 System.err              com.xxx            W  java.lang.UnsatisfiedLinkError: 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)
2025-05-23 19:52:17.110 10854-10854 System.err              com.xxx            W  	at com.autonavi.base.ae.gmap.GLMapEngine.nativeMainThreadTrigger(Native Method)
2025-05-23 19:52:17.110 10854-10854 System.err              com.xxx            W  	at com.autonavi.base.ae.gmap.GLMapEngine.triggerMainThread(GLMapEngine.java:268)
2025-05-23 19:52:17.110 10854-10854 System.err              com.xxx            W  	at com.amap.api.col.3sl.l$1.handleMessage(AMapDelegateImp.java:656)
2025-05-23 19:52:17.110 10854-10854 System.err              com.xxx            W  	at android.os.Handler.dispatchMessage(Handler.java:106)
2025-05-23 19:52:17.110 10854-10854 System.err              com.xxx            W  	at android.os.Looper.loopOnce(Looper.java:201)
2025-05-23 19:52:17.110 10854-10854 System.err              com.xxx            W  	at android.os.Looper.loop(Looper.java:288)
2025-05-23 19:52:17.110 10854-10854 System.err              com.xxx            W  	at android.app.ActivityThread.main(ActivityThread.java:7924)
2025-05-23 19:52:17.110 10854-10854 System.err              com.xxx            W  	at java.lang.reflect.Method.invoke(Native Method)
2025-05-23 19:52:17.110 10854-10854 System.err              com.xxx            W  	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
2025-05-23 19:52:17.110 10854-10854 System.err              com.xxx            W  	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)

最开始只是怀疑我的包兼容性有问题,因为最开始封包的时候没有经过充分测试。跟着debug找了半天,发现最怕的null没有出现,然后把报错扔给了ai,ai是gradle里面没有加jniLibs相关,即:

android {sourceSets {main {jniLibs.srcDirs = ['src/main/jniLibs']}}
}

由于之前的项目好久没有管依赖相关了,就那jniLibs为关键词双击shift查了下,没有相关内容,就怀疑和这个没有关系。so又是可能一年多前加的,就彻底把它忘了。随后找了半天发现还是不对,翻开了原项目的app/src/main/目录,发现其下有一个jniLibs的东西(这个东西默认就是在src/main/目录下,系统会自动识别,如果不在才需要手动指明)。里面打开正是之前导入高德api时候附带的so文件。

随后,把jniLibs移到对应的lib的src/main/目录下后,问题解决。

ps:期间被ai误导说gradle版本7以下才不需要手动声明,然后查了半天版本。发现我原版本本来就已经是7以上了,后面又因为文件移动错误折腾了半天。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词