Android 开发中,java 可以方便的使用调试信息Log.i, Log.d ...,Jni层可否使用呢?答案是肯定的。
1 为方便使用,先进行宏定义:
eben_hpc_log.h内容如下:
#ifndef _Included_hpc_Log
#define _Included_hpc_Log
#ifdef __cplusplus
extern "C" {
#endif
#include <android/log.h>
// 宏定义类似java 层的定义,不同级别的Log LOGI, LOGD, LOGW, LOGE, LOGF。 对就Java中的 Log.i log.d
#define LOG_TAG "hpc -- JNILOG" // 这个是自定义的LOG的标识
//#undef LOG // 取消默认的LOG
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG, __VA_ARGS__)
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG, __VA_ARGS__)
#define LOGW(...) __android_log_print(ANDROID_LOG_WARN,LOG_TAG, __VA_ARGS__)
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG, __VA_ARGS__)
#define LOGF(...) __android_log_print(ANDROID_LOG_FATAL,LOG_TAG, __VA_ARGS__)
#ifdef __cplusplus
}
#endif
#endif
2 代码中使用:
//demo.c
#include <jni.h>
#include "eben_hpc_log.h"
JNIEXPORT jint JNICALL Java_cn_hpc_cai_jni_JniLogDemo_test(JNIEnv* env,jobject jobj)
{
LOGD("log.d 这是Jni中的log: Java_cn_hpc_cai_jni_JniLogDemo_test()");
LOGI("Log.i 这是Jni中的log: Java_cn_hpc_cai_jni_JniLogDemo_test()");
return 0;
}
3 android.mk中
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog // 编译时加载Log库
LOCAL_MODULE := JniLogDemo
LOCAL_SRC_FILES := \
demo.c \
include $(BUILD_SHARED_LIBRARY)
接下来就是 Java层的调用:
4 java 调用
public static final String libName = "JniLogDemo";
static {
System.loadLibrary(libName);
}
{
JniLogDemo demo = new JniLogDemo();
demo.test();
// 输出jni 中的日志
}
完毕.
分享到:
相关推荐
android JNI C 调用Java
Android使用JNI调用Python so解释器
教你如何生成.h文件,使用window通过NDK编译出.so文件,如何通过JNI调用so文件
android JNI调用实例
Android JNI 断点调试C++,一个简单测试,方便初学者入门NDK环境搭建和java调用c++并调试
Android JNI中C++层与Java层的对象交互实例代码详细介绍。Android JNI中C++层与Java层的对象交互实例代码详细介绍。Android JNI中C++层与Java层的对象交互实例代码详细介绍。Android JNI中C++层与Java层的对象交互...
JNI 调用 c pp互相调用实例, java JNI cpp互相调用实例
Android NDK JNI 经典实例Android NDK JNI 经典实例Android NDK JNI 经典实例Android NDK JNI 经典实例Android NDK JNI 经典实例Android NDK JNI 经典实例Android NDK JNI 经典实例
Android Jni调用实例,NDK程序开发的demo。
这是Android的NDK开发之Android JNI调用流程程一个demo。下载下来可以直接在android studio上运行。
android jni使用java、c c++相互调用
android配置ndk,使用swig编译生成jni Java接口调用c++方法。这是成功的例子,前提是你要配置一下你的环境变量。如有疑问,可以去查看我的博客。有相关内容。
android jni native C++访问java层数组,java类对象属性和方法,回调接口和线程回调接口 内附可以正常使用的demo
Android JNI Android JNI 用C函数写本地库读写文件,底层调用小例子用C函数写本地库读写文件,底层调用小例子
在android中使用jni,在jni中调用jni里面的方法
Android调用JNI的简单实例(附详细步骤)请参考我的博客:http://blog.csdn.net/ericfantastic/article/details/49300131
Android 通过JNI调用C语言完整示例程序。Android Studio项目工程。
android studio 中 进行 JNI 开发的一个简单实例,入门demo
通过AndroidStudio使用CMake工具来开发jni,实现简单调用
这是一个简单的JNI开发中C层调用Java层函数的事例工程,对应的博客地址是:http://blog.csdn.net/hty1053240123/article/details/52126386