美文网首页工作生活
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