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

Android NDK

2016-12-09 00:00 330 查看
Github

https://github.com/zhaohuiyuliang/androidJni

1.创建Android项目



2.编写java类JniUtils

public class JniUtils {
static {
System.loadLibrary("hello-jni");
}

public native String getString();
}

3.生成.h文件

切换到AS的Terminal

cd到java目录下

执行javah命令

javah -jni encoding utf-8 包名.JniUtils

生成com_ndkdemo_JniUtils.h文件



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

#ifndef _Included_com_ndkdemo_JniUtils
#define _Included_com_ndkdemo_JniUtils
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class:     com_ndkdemo_JniUtils
* Method:    getString
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_ndkdemo_JniUtils_getString
(JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

4.创建.c文件

app目录下创建jni目录

创建hello-jni.c文件

#include <jni.h>
#include "android/log.h"

JNIEXPORT jstring JNICALL Java_com_ndkdemo_JniUtils_getString
(JNIEnv *env, jobject instance)){

return (*env)->NewStringUTF(env, "Hello-jni !");

}

5.创建Android.mk文件

jni目录下创建Android.mk文件

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello-jni

LOCAL_SRC_FILES := hello-jni.c
include $(BUILD_SHARED_LIBRARY)

6.生成.so文件

cd到app目录

执行ndk-build脚本命令

ndk-build



obj目录可以删除,保留libs

7.配置app build.gradle

android节点下

sourceSets {
main {
jniLibs.srcDir 'libs'
jni.srcDirs = []
}
}


8.调用.so接口

JniUtils jniUtils = new JniUtils();
mTextMessage.setText(jniUtils.getString());




9.调试c
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android NDK