Android调试笔记——引用unity的库后,高德地图变成白屏。

出现bug:引用unity的库后,本可以显示的高德地图变成白屏。
即高德地图FAQ中的Android 工程/APK找不到 so 文件

通过解压APK查看表象
除了通过日志,提供一个简单粗暴的方式查看,是不是有这个问题
1)找到出问题的APK,如demo.apk
2)修改后缀为demo.zip
3)解压zip
4)查看libs目录
如果里面有处理armeabi以外的文件夹,可能就是有这个问题了。

原因:unity导出库时的“Player Settings”中“Device Filter”设置了生成“armeabi-v7a文件夹”,而我所用的高德地图的版本只提供了“armeabi文件夹”和“arm64-v8a文件夹”,而程序以文件夹为单位搜索可用的armeabi文件,所以一旦找到,就不会搜其他的armeabi文件夹了,因为优先找到了unity所用的“armeabi-v7a文件夹”,所以就找不到高德地图的了。
Device Filter
这里写图片描述

深层原理参见链接 Android开发中libs包下面的mips、armeabi、armeabi-v7a和x86
引用原作者总结:

如果项目只包含了 armeabi,那么在所有Android设备都可以运行;
如果项目只包含了 armeabi-v7a,除armeabi架构的设备外都可以运行;
如果项目只包含了 x86,那么armeabi架构和armeabi-v7a的Android设备是无法运行的; 如果同时包含了 armeabi,
armeabi-v7a和x86,
所有设备都可以运行,程序在运行的时候去加载不同平台对应的so,这是较为完美的一种解决方案,同时也会导致包变大。

解决方案:我在引用unity的android项目(不是作为库从unity导出的文件)的libs文件夹下新建了“armeabi-v7a文件夹”,并把原“armeabi文件夹内的.so文件复制了到了这里面(注意:不需要再复制unity导出作库文件中的.so文件)
新建了“armeabi-v7a文件夹”

最后clean一下项目,运行,成功~

发布了40 篇原创文章 · 获赞 41 · 访问量 8万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章