Hello_JNI

来源:互联网 发布:工业工程研究生知乎 编辑:程序博客网 时间:2024/05/17 09:19

NDK 下载地址:http://developer.android.com/intl/zh-cn/ndk/downloads/index.html

工具:Android studio

新建工程  Hello_JNI


工程右击,选项:Open Module Settings: 设置Ndk路径   或者 :直接在local.properties 添加:ndk.dir=(ndk路径)/android-ndk-r10e

gradle.properties 添加:android.useDeprecatedNdk=true


新建class :

public class Ndk_JNI {    public native String getCString();}

菜单栏:build -> Make Project (生成class文件,路径:工程所在目录\Hello_JNI\app\build\intermediates\classes\debug\包路径下\*.class)


Android Studio 下打开命令行(下方的Terminal窗口 , 如没有: View-> Tool Windows->Ternimal)

进入路径debug  


了解javah命令:命令行输入 :javah -help


命令执行成功:debug下添加了jni目录,里面有一个.h文件

工程中在main目录下(java和res同级目录下新建文件夹:jni),打开debug下的jni目录,将.h文件拷贝到工程中的jni文件下

工程目录jni下,新建 .c 文件

#include "com_example_anlc_hello_jni_Ndk_JNI.h"  //之前生成的头文件JNIEXPORT jstring JNICALL Java_com_example_anlc_hello_1jni_Ndk_1JNI_getCString        (JNIEnv *env, jobject obj){    return (*env)->NewStringUTF(env,"This is from jni text");}


当前module下(比如,app)下的build.gradle 的 defaultConfig 里添加:

defaultConfig {
    ...    ndk{        moduleName "jniMethod"        abiFilters "armeabi", "armeabi-v7a", "x86" //指定3种不同平台    }}

Ndk_JNI文件添加代码,完整代码:

public class Ndk_JNI {    public native String getCString();    static {        System.loadLibrary("jniMethod"); //build.gradle中moduleName的值
    }
}

MainActivity.java:

public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        TextView textView = (TextView) findViewById(R.id.textView);        Ndk_JNI ndk_jni=new Ndk_JNI();        textView.setText(ndk_jni.getCString());    }


0 0
原创粉丝点击