您的位置:首页 > 移动开发 > Android开发

Android Studio ndk-Jni开发

2016-06-05 14:35 309 查看
  JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。它使得Java虚拟机内部运行的Java代码能够与其它编程语言(C&C++)编写的应用程序和库进行交互操作.

1.使用Android Studio新建一个项目

2.新建JniUtils类并实现native方法

public class JniUtils {
public static native String sayHello();
}


3.生成.h文件

  1. 点击Build -> Clean Project

  2.点击Build -> Rebuild Project

  3.打开Android Studio 的Terminal并进入app/build/intermediates/classes/debug目录

cd app/build/intermediates/classes/debug


  4.输入javah -jni <包名>.<类名>

javah -jni com.coolke.helloworld.JniUtils


  5.在app/main目录下新建jni目录,并将之前生成的.h文件剪切到该目录下

4.配置jni开发的相关设置

  1.在gradle.properties文件末尾添加android.useDeprecatedNdk=true

  2.在build.gradle文件的defaultConfig括号内添加如下内容

ndk {
moduleName "hello"          //生成的so名字
abiFilters "armeabi", "armeabi-v7a", "x86" //输出指定三种abi体系结构下的so库,目前可有可无。
}


  3.配置完毕后,点击Build -> Rebuild Project

4.在jni目录下新建.c文件,文件名随意

#include <jni.h>
//
// Created by coolke on 16-6-4.
//

JNIEXPORT jstring JNICALL Java_com_coolke_helloworld_JniUtils_sayHello(JNIEnv *env, jclass obj)
{
return (*env)->NewStringUTF(env,"hello");
}


  C问文件建好后点击Build -> Rebuild Project,此时JniUtils类里就不会报红色了

5.在JniUtils类中加入加载库的代码

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


6.使用

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toast.makeText(this,JniUtils.sayHello(),Toast.LENGTH_SHORT).show();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ndk jni android c语言