JNI编程(AndroidStudio)

来源:互联网 发布:热传导分析软件 编辑:程序博客网 时间:2024/06/05 15:57

先发一个链接:http://zhangleipku.blogspot.com/2016/03/test-ndk-jni-from.html

 本文基本是基于上面的文章,在MAC下开发(Windows可能配置略有不同,请自行谷歌),接下来就写一下自己的过程,留个笔记。

0.AndroidStudio->Project Structure->SDK Location->Android NDK location

1.新建JniUtils类实现native方法。(假设路径:com.test.JniUtils)

public class JniUtils{    public static native String getStringFromC();}
2.clean project或者rebuild project生成class文件

3.在app/应用名/build/intermediates/classes/debug/com/test中找到JniUtils.class

4.再打开Terminal输入指令

cd app/应用名/build/intermediates/classes/debug
5.然后输入指令

javah -jni com.test.JniUtils(JniUtils路径)
   *这里的javah -jni后面跟的是Jni的全路径,如果javah报不存在之类的,是你的java环境没有配置好。

6.这时候打开classes/debug下面的文件发现多了一个文件

com_test_JniUtils.h

7.然后在src/main下新建文件夹Jni,把生成的.h文件复制或剪切到jni文件夹下面去,新建一个c类随便取一个名字,添加代码如下
#include "com_test_JniUtils.h"JNIEXPORT jstring JNICALL Java_com_wobiancao_ndkjnidemo_ndk_JniUtils_getStringFormC        (JNIEnv *env, jobject obj){    return (*env)->NewStringUTF(env,"这里是来自c的string");}

8.gradle.properties

android.useDeprecatedNdk=true

9.应用build.gradle->defaultConfig

ndk{            moduleName "NdkJniDemo"        }

10.工程build.gradle

allprojects {    repositories {        jcenter()    }}
11.在JniUtils类中添加

static {        System.loadLibrary("NdkJniDemo");//之前在build.gradle里面设置的so名字,必须一致    }
12.使用

JniUtils.getStringFromC();

13.如果运行正常,则可以打开app->intermediates->ndk->debug发现生成了几个文件夹,在app/应用名下新建libs,  把生成的几个文件夹放进去。

14.删除jni文件,重新运行。

0 0
原创粉丝点击