Unity聯調Android記錄

更新: 偶然發現,device filter的設置跟手機有關,華爲mate9上可以用默認設置,華爲榮耀5x就必須選擇Armv7,供參考。
最近一個項目,被幾個簡單設置問題坑的不輕,網上相關信息也少,特此記錄,以供參考。
項目目標:使用Unity調用.so庫中的方法讀取.raw文件中的數據,其中.so由NDK編譯C++而成,.raw文件由甲方提供;
遇到的主要問題

  1. 無論怎麼調用.so庫,Unity都報錯DllNotFoundException;
  2. .so庫調用成功後, 初始化方法始終返回-1,即不成功;

解決方法

1.調用.so庫的方法:
- .so文件需放在Assets/Plugins/Android目錄下;
- 調用代碼用[DllImport(“.so文件名”)] ,注意去掉lib前綴和.so後綴;
- .so文件的platform settings中的CPU和playersettings中的device filter都必須選擇Armv7(我就是在這裏踩的坑,因爲Unity默認是FAT(Armv7+x86),我理想的認爲都包含就都行咯);
2.初始化的方法:
- 甲方提供的配置文件和.raw文件都放在手機的根目錄下(這是另一個坑,甲方並不要求兩者一定在同級目錄,而我把.raw文件放在了StreamingAssets文件夾下);
- playersettings中的WritePermission設置爲External(SDCard);

簡單問題被複雜化,折騰了我好久,中間還因此研究了ndk編譯、Android Studio、CygWin等,簡直淚奔…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章