Android NDK學習起航之路之先買一艘船
阿新 • • 發佈:2018-12-13
感覺Android寫了這麼久了, 也該學點裝逼的技能了。所以我把目光放在了NDK和C++上,只要玩轉了這兩個, 我就能去玩OpenCV和TensorFlow了,想想就美滋滋。今天先來基礎配置一個最簡單的NDK環境。基於AndroidStudio 3.2,使用Cmake
第一步,先安裝環境吧。把這三個都先安裝好
第二步,給工程配置好NDK環境
File----Project Structure,配置好箭頭所指的NDK
三.寫一個Java的native方法,傳入兩個數字,返回求和結果
public class TestJNI { public static native int getString(int num1,int num2); }
(前提是要先配置好JDK環境)
根據native生成標頭檔案,進入到src/main/java的路徑下,然後執行javah -d ../cpp com.xiaonan.learntemp.TestJNI 生成完畢就會有標頭檔案產生
四.寫CPP實現檔案
複製.h檔案內容,更改為.cpp字尾,然後實現方法。記得include標頭檔案
五.編寫CMakeLists.txt檔案,這個檔案和mk檔案一樣,只是語法不同
# For more information about using CMake with Android Studio, read the # documentation: https://d.android.com/studio/projects/add-native-code.html # Sets the minimum version of CMake required to build the native library. cmake_minimum_required(VERSION 3.4.1) # Creates and names a library, sets it as either STATIC # or SHARED, and provides the relative paths to its source code. # You can define multiple libraries, and CMake builds them for you. # Gradle automatically packages shared libraries with your APK. add_library( # so檔案的名字,最後loadLebrary的時候寫這個 native # Sets the library as a shared library. SHARED # Provides a relative path to your source file(s). # 寫上需要編譯的CPP檔案路徑 src/main/cpp/native.cpp)
六.調整gradle檔案。這裡兩塊一定注意,我已經採坑了
第一部分是defaultConfig中的externalNativeBuild,這裡兩個引數
第二部分是android標籤下的externaleNativeBuild標籤
七.使用就可以了
後記。
1.AndroidStudio生成的so檔案目錄和Eclipse不同,Eclipse最後在libs下,AndroidStudio最後生成的路徑在.....\build\intermediates\cmake\debug\obj下面。
2.可以通過build標籤下的Analyze APK功能檢視so檔案最後有沒有打入APK中