AndroidStudio2.2開發NDK的正確姿勢
之前寫過兩篇eclipse下開發NDK的姿勢,
現在用AndroidStudio2.2進行NDK開發更加的絲滑,過程如下:
1、環境配置:
新建專案,選中:Include C++ Support,AndroidStudio會為我們建立cpp資料夾、CMake檔案、模組的Gradle也會做些相應的配置。
建立專案有可能會報NDK找不到之類的錯誤,右擊專案 ->Open Module Setting->SDK Location 檢視Android NDK location是否有配置起來,沒有,就下載NDK,
或者直接去AndroidStudio Settings中配置,Appearance&Behavior->System Setings->Android SDK,選中SDK Tools標籤頁,選擇CMake,LLDB,NDK進行安裝如下圖
CMake是AndroidStudio2.2提供的構建C專案的工具,LLDB是用來除錯C程式碼的。
上面需要的東西都配置好後,新建的專案就會多出cpp資料夾,模組Gradle也多了些配置,如下圖
並且AndroidStudio已經幫我們建立了一個呼叫C的例子,直接執行專案,Activiity裡的就可以成功呼叫到C的方法。
我們在Activity裡建立一個native方法,直接報紅,然後Alt+Enter,選第一個
接下來神奇的地方出現了,native-lib.cpp裡自動幫我們添加了新的方法:
給該方法一個正確的返回值,然後在Activity中呼叫native方法。呵呵崩掉了!
專案可以通過編譯,但是找不到C++裡面的方法,這是因為CMake在編譯C++程式碼的時候把剛才新建的C++函式漏掉了,怎麼把他加上呢,注意到C++程式碼裡面有一個extern "C"這句話了嗎,這個是CMake的東西,把這句話放到最上面,然後加個大括號,把所有java需要呼叫的方法都放裡面,調整後的C++程式碼如下:
確保所有Java需要呼叫的C方法都放在extern "C"中,這樣CMake才會幫我們正確編譯。
然後執行專案,成功返回"Hello from C++ Too"。
切換到Project目錄結構,app->.externalNativeBuild->release->obj->AndroidStudio為我們生成的so檔案都在這裡啦!!!!!
忘了說了,現在C++可以智慧提示啦,好爽滑。