Android studio jni Ndk 配置

1,下载NDK
百度云一个linux 64位的版本https://pan.baidu.com/s/1qXFTpLy
2,新建工程
3,导入ndk
右击工程->open Module Setting->SDK Locationi导入ndk
在local.properties文件中会出现 ndk.dir=/home/user/Downloads/android-ndk-r11b
4.build.gradle(module.app)设置(com/example/user/ndkdemo/是包名)

android {
    ....
    defaultConfig {
            ...
            ndk {
                moduleName "helloNDK"
            }
        }
}

5.新建NdkJniUtils
此类定义c++接口(native方法)

public class NdkJniUtils {
    static {
        System.loadLibrary("helloNDK");   //defaultConfig.ndk.moduleName
    }
    public native String getCLanguageString();
}   

6.javah命令通过class生成.h
Terminal下执行

cd /JNIDemo/app/src/main/java //到工程目录下
javah -jni com.example.user.jnidemo.NdkJniUtils //接口类 

会在java下生成com_example_user_jnidemo_NdkJniUtils.h头文件剪切到jni包内
内容如下

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

#ifndef _Included_com_example_user_jnidemo_NdkJniUtils
#define _Included_com_example_user_jnidemo_NdkJniUtils
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_example_user_jnidemo_NdkJniUtils
 * Method:    getCLanguageString
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_example_user_jnidemo_NdkJniUtils_getCLanguageString
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

7.创建.c文件
引入头文件
实现头文件的接口如下

#include "com_example_user_jnidemo_NdkJniUtils.h"
/*
 * Class:     com_example_user_ndkdemo_NdkJniUtils
 * Method:    getCLanguageString
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_example_user_ndkdemo_NdkJniUtils_getCLanguageString
    (JNIEnv *env, jobject obj){
    //执行c代码
    return (*env)->NewStringUTF(env,"This just a test for Android Studio NDK JNI developer!");
}

8.配置jni路径
build.gradle(module.app)设置

    sourceSets.main {
        jni.srcDirs 'src/main/java/com/example/user/jnidemo/jni'
    }

9.页面调用

        mTextView = (TextView) this.findViewById(R.id.test);
        NdkJniUtils jni = new NdkJniUtils();
        mTextView.setText(jni.getCLanguageString());

项目实例
https://pan.baidu.com/s/1o8pj1TC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值