(三)NDK 開發之生成並調用 so庫

1、生成so 庫。

新建一個項目,勾選 Include C++ support.然後一直next。

在配置好NDK 的情況下,系統會直接生成一個調用C++ 的 例子,直接運行就可以。

配置NDK:https://blog.csdn.net/lijia1201900857/article/details/83576840

 

下面我們要生成 so 庫。詳細請看:https://blog.csdn.net/lijia1201900857/article/details/83615409

在CMakeList.txt 中添加如下代碼:

set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/../jniLibs/${ANDROID_ABI})

 

編譯運行後,會在jniLibs 中生成相應 abi 的so 庫

到此我們就可以使用這些庫,供其他項目調用了。

二、調用so 庫

新建任意一個項目,Include c++ support  勾不勾無所謂。這裏我不勾選

 

分4步:

1、複製so庫拷貝到新項目的libs 目錄下

2、app 下的 build.gradle 中添加 鏈接so庫的配置

3、創建和 so中 代碼相同包名+ 類名 的類

4、調用

1、將上個項目中生成的 so庫 複製到 libs 目錄下:

 

 

2、app 下的 build.gradle 中添加配置 

    sourceSets {
            main {
                jniLibs.srcDirs = ['libs']
            }
        }

總體結構如下:

3、創建和so中的代碼相同包名+類名的類

我們上個項目native 方法 所屬的包名 爲  com.example.com.jni  , 類名爲 MainActivity

所以我們需要在新項目中也添加這樣一個 類:

新建的MainActivity 類中 添加如下代碼(和so庫中的調用代碼一致):

   static {
        System.loadLibrary("native-lib");
    }

    public native String stringFromJNI();

4、調用

然後在新項目的MainActivity.class 中調用

運行結果如下:

over!

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