出現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文件夾”,所以就找不到高德地圖的了。
深層原理參見鏈接 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文件)
最後clean一下項目,運行,成功~