美文网首页工作生活
Android之jni之so

Android之jni之so

作者: 一川烟草i蓑衣 | 来源:发表于2019-06-29 22:12 被阅读0次

打包so文件:

1.新建一个Native C++文件

项目结构

在build.gradle中的android的defaultConfig中添加:

externalNativeBuild { //使用Cmake工具

cmake {

            cppFlags""

    }

}

在buildTypes中添加:

externalNativeBuild {

cmake { //配置CMakeLists.txt路径

        path "src/main/cpp/CMakeLists.txt" //找到CMakeLists,根据CMakeLists.txt来编译so文件

        version"3.10.2"

    }

}

native-lib.cpp:需要暴露给native的c++类

JNIEXPORT jstring: 代表返回一个 jstring类型,即string类型

Java_com_example_myapplication_MainActivity:代表路径Project\MyApplication\app\src\main\java\com\example\myapplication\MainActivity.java

Java_com_example_myapplication_MainActivity_stringFromJNI( //stringFromJNI为c++方法

JNIEnv *env,

jobject /* this */) {

std::string hello ="Hello from C++";

return env->NewStringUTF(hello.c_str());   //返回一个java字符串

}

CMakeLists.txt:配置了将要打包的so文件和c++文件信息

2.点击Build->Make Project  来编译工程

3.在app-build-intermediates-cmake-debug(release)下可以找到so文件

导入so文件:

 1.新建一工程,将so文件挪到工程中(或者在src/main中新建jniLibs文件夹 ,把.so复制进去即可)

2

2.build.gradle中配置:

android下添加:sourceSets {

                                    main {

                                            jniLibs.srcDirs = ['libs'] //指定so包的路径

                                     }

                                }

3.代码中:

static {

System.loadLibrary("native-lib"); //加载so库

}

Log.i("heroonehy", stringFromJNI()); //调用jni方法

public native String stringFromJNI(); //声明stringFromJNI方法但是在jni中实现

相关文章

网友评论

    本文标题:Android之jni之so

    本文链接:https://www.haomeiwen.com/subject/eismcctx.html