Android studio3.2學習開發JNI並且生成so庫教程

步驟可以分成如下步驟:
1、打開SDKManager
2、配置NDK環境
3、新建項目
4、自定義native方法
5、生成c++頭文件
6、新建cpp文件實現native方法
7、配置CMakeLists.txt文件
8、調用native方法
9、編譯工程生成so文件
運行結果如圖

1、打開SDKManager
打開sdkManager下載CMake和LLDB
在這裏插入圖片描述

2、配置NDK環境
在這裏插入圖片描述

3、新建項目
建立項目的時候要勾選Include C++ support
在這裏插入圖片描述

項目建立完畢後,工程目錄如下,cpp文件夾是系統自動生成的:
在這裏插入圖片描述

4、自定義native方法
接下來開始寫自定義的一個native方法,新建一個Demo.java文件,裏面寫一個add求和的native方法,如下 所示。
在這裏插入圖片描述

5、生成c++頭文件
然後在android studio控制檯Terminal進入Demo.java所在的目錄執行javac Demo.java,如下所示。(這裏要注意配置windows端的java環境,具體可以在網上找一下配置方法)
在這裏插入圖片描述

執行完畢後Hello.java的同級目錄下面會生成一個Demo.class文件,證明這一步成功

在這裏插入圖片描述

然後還是在Terminal控制檯上面回退目錄到app/src/main下面執行命令
javah -d jni -classpath ./java com.example.asus.myapplication.Demo,後面是包名+文件名不帶後綴,請改成自己的包名,如圖

在這裏插入圖片描述

命令執行完畢後會在app/src/main目錄下面生成一個jni文件夾,文件夾下面有一個.h後綴文件,如圖:

在這裏插入圖片描述

6、新建cpp文件實現native方法
同級目錄下面新建一個c++ source文件去實現native方法,文件名隨意起,如圖:

在這裏插入圖片描述

把com_example_asus_myapplication_Demo.h中的內容複製一份到demojni.cpp中,並添加com_example_asus_myapplication_Demo.h的引用(引用要改成引號,不然下面的方法會報紅),刪掉其他代碼,如圖

在這裏插入圖片描述

7、配置CMakeLists.txt文件

接下來是關鍵,在android studio3.0以前是沒有此步驟的,大家看工程目錄裏面有一個CMakeLists.txt文件,這個文件是新建項目是自動生成的,裏面已經寫好了系統自動生成的
cpp/native-lib.cpp文件的配置,打開CMakeLists.txt文件,如下,

在這裏插入圖片描述

上圖中native-lib是編譯後生成的so文件名字,可以自定義,我們也仿照系統格式自己添加一個,路徑一定要寫對,添加完成之後,如下:

在這裏插入圖片描述

然後還是在CMakeLists.txt中,target_link_libraries中添加上我們自己的so名字,如下圖

在這裏插入圖片描述

到此我們基本上已經成功了,然後在Demo.java中添加代碼如下,添加的library名字一定要和上圖中添加的一樣:

在這裏插入圖片描述

最後在activity中調用add方法

在這裏插入圖片描述

9、編譯工程生成so文件

通過rebuild工程,會在build/intermediates/cmake/debug/obj下面生成各種cpu的so文件。

在這裏插入圖片描述
運行結果如圖.

在這裏插入圖片描述

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