Android studio jni编写步骤,流程



step1:
下载最新版ndk

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 Pr ojec t
这一步骤执行一下,验证工程中并无其它错误,并对工程进行了编译,生成了.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
完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值