Android Studio下NDK环境的搭建和基本使用

在Android Studio下载NDK,将NDK配置到环境变量,步骤如下:

下载NDK

File→Project Structure



如果是NDK没有配置则标注的地方是空的,这就是local.properties文件,空的时候回有download ndk,可以从这个地方直接下载,也可以从SDK Manager下载。

下载后配置环境变量:

在系统变量中新建变量名:NDK_ROOT 变量值就是NDK的路径,在PATH中变量值加上;%NDK_ROOT%
这样就可以在cmd或者Terminal中执行了

环境变量配置后需要重启下机器,在cmd中测试环境配置是否成功,成功后如下:


到现在NDK算是配置好了,创建一个Android工程

在MainAcitvity中添加一个native方法

private TextView tv_call;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    tv_call=(TextView)findViewById(R.id.tv_call);
    tv_call.setOnClickListener(this);
}

public native String javaCallC();
生成.h文件,在Terminal窗口中执行

首先切换到java目录下,在执行javah -jni 包名.类名


刷新下项目,看到在java目录下生成了一个新的.h文件


我们需要的是这个方法的头部,在app下创建一个jni文件夹,在jni下创建一个c文件


前面生成的.h文件

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_wdkj_test_jniproject_MainActivity */

#ifndef _Included_com_wdkj_test_jniproject_MainActivity
#define _Included_com_wdkj_test_jniproject_MainActivity
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_wdkj_test_jniproject_MainActivity
 * Method:    javaCallC
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_wdkj_test_jniproject_MainActivity_javaCallC
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

生成h文件就是为了要这个方法名,可以看出来就是Java_包名_类名_方法名,写得熟练了就不需要生成这个h文件了

JniTests.c

#include <jni.h>
JNIEXPORT jstring JNICALL Java_com_wdkj_test_jniproject_MainActivity_javaCallC(JNIEnv *env, jobject object){
  return (*env)->NewStringUTF(env, "JAVAcallC");
  }

Android.mk名字必须是这个

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE :=JniTests
LOCAL_SRC_FILES :=JniTests.c
include $(BUILD_SHARED_LIBRARY)
LOCAL_MODULE是生成的so库的名称,其实生成后库名称之前加了lib,LOCAL_SRC_FILES是要使用的C的文件

接下来就要生成so文件了

切换到app目录下,执行ndk-build


生成的so库,如果想生成部分需要的so库,Android.mk的APP_ABI-:armeabi armeabi - v7a  就可以了


下一篇博客会介绍如何使用,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值