Android studio jni编写步骤,流程

来源:互联网 发布:秩为1的矩阵,求其n次方 编辑:程序博客网 时间:2024/06/07 11:03


step1:
下载最新版ndk
http://developer.android.com/tools/sdk/ndk/index.html

Step: 2. 添加native接口
注意写好native接口和System.loadLibrary()即可了,并无特别之处。
在需要添加native方法的类添加native方法
public class MainActivity extends AppCompatActivity {
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

textView = (TextView) findViewById(R.id.tv_hello);
textView.setText(getStringFromNatice());

}

static {
System.loadLibrary("myLib");
}
public native String getStringFromNatice();
}
Step: 3,执行Build->Make Project
这一步骤执行一下,验证工程中并无其它错误,并对工程进行了编译,生成了.class文件.
.class文件的生成路径是在 app_path/build/intermediates/classes/debug下的.如下图:


Step: 4.javah生成c头文件
点击"View->Tool Windows->Terminal",即在Studio中进行终端命令行工具.执行如下命令生成c语言头文件。
这里需要注意的是要进入 <Project>\app\src\main的目录下执行javah命令,为的是生成的 .h 文件同样是在<Project>\app\src\main路径下,可以在Studio的工程结构中直接看到。

操作命令:
javah -d jni -classpath <SDK_android.jar>;<APP_classes> com.zzx.jni.MainActivity
在此步骤可能缺少一些类,用分号隔开的形式添加到<SDK_android.jar>即可,也可百度
最后生成文件:

Step: 5.编辑c文件
在main.c 中实现头方法
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <com_zzx_jni_MainActivity.h>
/* Header for class com_zzx_jni_MainActivity */


JNIEXPORT jstring JNICALL Java_com_zzx_jni_MainActivity_getStringFromNatice
(JNIEnv * env, jobject jObj){
return (*env)->NewStringUTF(env,"Hello From JNI!");
}

util.c 什么都没有,是一个空文件
Step: 6,在local.properties添加ndk.dir 目录


Step: 7,在local.properties添加ndk.dir 目录
修改build.gradle配置
    工程中共有两个build.gradle配置文件,我们要修改的是在<Project>\app\build.gradle这个文件。为其在defaultConfig分支中增加上
defaultConfig {
applicationId "com.zzx.jni"
minSdkVersion 12
targetSdkVersion 23
versionCode 1
versionName "1.0"
ndk{
moduleName "myLib"
abiFilters "armeabi", "armeabi-v7a", "x86"
}
}
 此处moduleName "myLib" 的myLib 为应用调用的名字
static  {
System.loadLibrary("myLib");
}
public native String getStringFromNatice();

setp:8 再次build-Make project
完成

YouTube视频:
https://www.youtube.com/watch?v=okLKfxfbz40#t=362

0 0
原创粉丝点击