`
cyhcheng
  • 浏览: 57708 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

NDK入门

阅读更多
  • 下载Android SDK、NDK,配置环境变量
  • 新建一个android项目,在项目根目录下创建一个文件夹jni,创建Android.mk文件:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := native-jni
LOCAL_SRC_FILES := native.c

LOCAL_LDLIBS    := -llog
include $(BUILD_SHARED_LIBRARY)

 

  • 创建Java代码:

package com.example.simplendkdemo.util;

public class Util {
    public native String stringFromJNI();

    public native int stringToJNI(String val);

    static {
        System.loadLibrary("native-jni");
    }
}

  • 生成头文件:

从shell模式下,切换到项目根目录,执行命令:

javah -classpath ./bin/classes -d jni/ com.example.simplendkdemo.util.Util

 

  • 创建native.c文件,根据头文件编辑代码:

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

#define DEBUG_TAG "NDK_SimpleNDKDemo_Util"

jstring Java_com_example_simplendkdemo_util_Util_stringFromJNI(JNIEnv* env, jobject thiz )
{
  return (*env)->NewStringUTF(env, "Hello from JNI !");
}

jint Java_com_example_simplendkdemo_util_Util_stringToJNI(JNIEnv* env, jobject thiz, jstring str_val)
{
  jint return_i = 0;
  const char *str = (*env)->GetStringUTFChars(env, str_val, 0);
  __android_log_print(ANDROID_LOG_DEBUG, DEBUG_TAG, "Print java String: %s", str);
  (*env)->ReleaseStringUTFChars(env, str_val, str);
  return return_i;
}

  • 编译c代码,生成库文件:

从shell模式下,切换到项目/jni目录,执行命令:

ndk-build

 

  • 编写java代码调用本地方法

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics