記一次unity下引入C 動態庫跨平台打包的問題

2021-08-06 06:18:59 字數 1406 閱讀 9654

最近在做一款二次元武俠風的moba手遊,這是第二款手遊專案,第一款胎死腹中,比較鬱悶。

這款專案引入了自己的c++動態庫,所以引申出了安卓打包的一系列找不到庫的問題。

由於之前沒有經驗,所以糾結了一天多方才搞定,現記錄一下過程,聊以自省。

首先明確下,在windows下unity引入c++的庫當然必須是dll,而安卓下則需要引入so庫,

那麼so庫的分類就包括了x86平台和arm平台,手機當然要便一處arm平台的so庫方才可以呼叫。

由於一直在linux下開發,所以不熟悉eclipse等ide,自然編一起來超級費勁。所以網上查詢資料,

最終使用android-cmake在linux下編譯。

之後設定環境變數  /etc/profile

3)使用ndk建立單獨的工具鏈

export ndk=/android/android-ndk-r12 #你的android ndk的路徑  

$ndk/build/tools/make-standalone-toolchain.sh –platform=android-12 –install-dir=/usr/android/android-toolchain-12 #你的工程路徑

4) 編寫你工程下的cmakelist.txt,如:

cmake_minimum_required(version 2.8.12)

project(common)

file(glob_recurse sources ./*.cpp)

add_library(common shared $)

5) 執行cmake -dcmake_toolchain_file=#android_cmake/android.toolchain.cmake -dandroid_ndk=/usr/android/android-ndk-r12b -dcmake_build_type=release -dandroid_abi="armeabi-v7a"  -dandroid_native_api_level=android-9 . && cmake --build .

其中android_cmake是你的android-cmake的路徑,armeabi-v7a 也可以是armeabi-v8a,架構不同,位數不同,此處不做介紹.

到這裡應該已經可以正常編譯出so檔案了。

不過我的unity打出的安卓包卻沒有這麼幸運,報錯(unable to load library is 64-bit instead of 32-bit)。

其實就是編譯的位數不對,在你的cmakelist.txt中加入 set(cmake_cflags "$ -m32 ")

ok,大功搞成。

順便提一下,匯入so給安卓打包,需要將so檔案放入assets\plugins\android目錄下,否則無法找到。

記一次linux下安裝nginx

使用到的工具 1 xshell 用於訪問遠端伺服器,通過執行指令碼來檢視 刪除伺服器上的檔案 在伺服器上進行安裝程式等操作 2 xftp 用於更換遠端伺服器中的檔案 安裝過程 執行如下命令,安裝nginx所需的依賴 yum y install gcc zlib zlib devel pcre dev...

記一次unity3d遊戲的misc

昨天q.r給我發了乙份unity3d的misc,第一次接觸這種題型,故此記錄一下 1.用apktoolbox apk反編譯工具是一款針對安卓應用的反編譯軟體 解包 解包後的檔案 2.用.net reflector開啟assembly csharp.dll 解包好的檔案裡的那乙份 unity在打包後,...

1 8記一次刪庫的經歷

title date comments categories br 記一次刪庫的經歷 2020 4 21 false 開發環境 部落格 刪庫 1.8 無奈之下,回滾git,表面只丟了最新的幾篇文章而已,關鍵是這個部落格使用的是開源的部落格系統搭建的,文章日期是根據markdown檔案的建立日期自動生...