(三)NDK 开发之生成并调用 so库

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lijia1201900857/article/details/83624344

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!

猜你喜欢

转载自blog.csdn.net/lijia1201900857/article/details/83624344