[置顶] NDK 常用到的三个宏,精简JNI接口函数名称

1.Test.java:

public native void testMethod();

 

2.Testjni.cpp

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

#define  LOG_TAG    "Testjni.cpp"
#define  LOGE(...)  __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)

 

//几个常用的宏

#define NAME1(CLZ, FUN) Java_##CLZ##_##FUN
#define NAME2(CLZ, FUN) NAME1(CLZ, FUN)

#define NAME(FUN) NAME2(CLASS, FUN)

extern "C" {
 void NAME(testMethod)(JNIEnv *env, jclass obj, jint bitRate){
 LOGE("Test hello world....");
 }
}

 

3.Android.mk

// 追加下面:指明1中Test.java的包名和类名(注:以后包名或类名有更改时,只需要更改下面语句即可)

LOCAL_CFLAGS := -DCLASS=包名_类名

 

此文参考该开源项目:https://github.com/tewilove/faplayer

你可能感兴趣的:(android,jni,NDK,宏,android.mk)