移动端JNI开发及生成so

前言

项目需要jni开发,记录一下整体的流程

1.开发的环境,需要CMake、LLDB、NDK

2.1创建project,并在main目录下创建jni目录

创建后如下图所示:

2.2创建JNI交互类 

 

public class JniUse {

    static {
        System.loadLibrary("JniUse");
    }

    public native String getString();

}

 2.3 接下来需要生成.h文件,即头文件,采用工具生成:打开File->setting->Tools->External Tools 

 

点击“+”号,按照图片中所示输入:

其中:

Program:$JDKPath$\bin\javah.exe

Parameters:-classpath . -jni -d $ModuleFileDir$\src\main\jni $FileClass$

Working directory:$ModuleFileDir$\src\main\Java

 输入完毕后,确认保存。此时:右键JNI类,选择External Tools可发现创建的javah,点击javah,可在jni文件中生成头文件。

 如下图所示:

 

 2.4 .1创建JniUse.cpp文件

其内容可为:(其中的头文件以及方法名需要根据自己项目包名、类名的实际情况而改动)

#include <com_jniuse_JniUse.h>

JNIEXPORT jstring JNICALL Java_com_jniuse_JniUse_getString(JNIEnv * env, jobject jobject){
   return (*env).NewStringUTF("正在调用JNI内容");
}

 

 2.4.2 创建Android.mk

其内容可为:

LOCAL_PATH := $(call my-dir)


include $(CLEAR_VARS)

LOCAL_MODULE := JniUse

LOCAL_SRC_FILES =: JniUse.cpp

include $(BUILD_SHARED_LIBRARY)

 

2.4.3 创建Application.mk

其内容为:

APP_ABI := all

 3.配置app目录下的build.gradle

其内容可为:

ndk{
            moduleName "JniLib"
        }

        sourceSets.main{

            jni.srcDirs = []

            jniLibs.srcDir "src/main/libs"

        }

 

 4.生成.so文件,打开终端cd到项目的jni目录,然后输入ndk-build,执行

可在目录中发现多出了libs和odj文件,其so文件就在libs目录下

5.运行程序:在Activity中执行

​
 JniUse jniUse = new JniUse();
 Log.d("JNI条用",jniUse.getString()+"");

​

猜你喜欢

转载自blog.csdn.net/baidu_33512336/article/details/88627951