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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章