前言
在上節(jié)中,我們已經(jīng)學(xué)習(xí)了NDK環(huán)境的搭建,那么今天我們就來學(xué)習(xí)下JNI項目創(chuàng)建即so文件的生成。這里需要說明一下,生成so文件可以有兩種方式,一種是傳統(tǒng)方式,一種是利用Cmake方式。由于之前沒怎么接觸過JNI相關(guān)知識,這幾天學(xué)習(xí)起來比較混亂,然后等慢慢熟悉以后,才知道有這兩種方式。鑒于Androidstudio的強大,個人建議使用Cmake方式。因為Androidstudio有對應(yīng)cmake工具,可以方便的生成jni模板,如果用傳統(tǒng)方式的話,c/c++代碼報錯了很難找到錯誤,特別是你不熟悉c/c++的話,更是痛苦。
JNI環(huán)境搭建請參考:JNI(一)—NDK環(huán)境搭建
今天涉及內(nèi)容:
- 新建JNI項目
- 了解JNI項目結(jié)構(gòu)
- native-lib.cpp文件
- CMakeLists.txt 文件
- app_moduel對應(yīng)的build.gradle中多了以下NDK相關(guān)配置
- 再看看Android代碼中的MainActivity
- 運行JNI項目模板
- 修改JNI項目模板,弄自己的接口方法
4.1 在app/src/main/路徑下建jni文件夾
4.2 將native-lib.cpp文件改為自己想定義的名字
4.3 將JniControl.cpp剪切至jni文件夾里
4.4 將CMakeLists.txt移動到app/目錄下(與src同級)
4.5 打開配置文件CMakeLists.txt,修改對應(yīng)lib名稱和cpp文件路徑
4.6 修改app_moduel的build.gradle中ndk配置
4.7 編寫java類(用于Java調(diào)用c/c++)
4.8 修改JniControl.cpp代碼
4.9 測試Jni方法 - so文件的生成和路徑
- 項目結(jié)構(gòu)圖
先來波截圖

image.png
一.新建JNI項目
新建Android項目,選擇 C++

image.png
next,然后給項目命名,next

image.png
選擇
Toolchaiin Default,然后finish
image.png
二.了解JNI項目結(jié)構(gòu)
在新建完JNI項目后,項目中會自動生成一個可運行的JNI模板項目。讓我們來看看項目結(jié)構(gòu)。

image.png
項目中多了一個
.cxx和cpp文件夾。打開
cpp文件夾
image.png
可以看到里面有一個
.cpp文件和一個CMakeLists.txt配置文件。讓我們來一 一看看。
-
native-lib.cpp文件
native-lib是模板自動生成的名字,讓我們來看看它里面的代碼: