JNI
来源:互联网 发布:手机号定位追踪软件 编辑:程序博客网 时间:2024/06/15 07:13
要想在 jni native 代码中看打印信息,printf 是不行的,需使用 __android_log_print,如下所示。
__android_log_print(ANDROID_LOG_INFO, "ProjectName", "I am : %d/n", n);
该函数与 printf 用法相似,使用格式字符。打印的结果通过 logcat 查看。
注意,使用时需要将头文件 android/log.h 包含进来。
为方便使用,往往定义一些宏
LOG_H.H:
#include <android/log.h>
#ifndef LOG#define LOG "IPTV"// "ffmpegDemo-jni" // 这个是自定义的LOG的标识#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG,__VA_ARGS__) // 定义LOGD类型#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG,__VA_ARGS__) // 定义LOGI类型#define LOGW(...) __android_log_print(ANDROID_LOG_WARN,LOG,__VA_ARGS__) // 定义LOGW类型#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG,__VA_ARGS__) // 定义LOGE类型#define LOGF(...) __android_log_print(ANDROID_LOG_FATAL,LOG,__VA_ARGS__) // 定义LOGF类型#endifUsage:LOGD("HELLO WORLD");
- int width=10;
- int height=20;
- LOGI(LOG, "长和宽分别为 %d ,%d“,width,height);
ANDROID.MK :LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optionalLOCAL_MODULE := YOU_LIB_NAME (the same to android code)LOCAL_SRC_FILES := \JavaToC.c \Operate.cLOCAL_LDLIBS := -llogLOCAL_C_INCLUDES += system/core/include/cutilsLOCAL_SHARED_LIBRARIES := libcutilsinclude $(BUILD_SHARED_LIBRARY)生成的库在out/../system/lib 下面/********************************************************/在运行android 时出现 E/AndroidRuntime(7975): java.lang.UnsatisfiedLinkError: add要在Z:\linux\HiSTBAndroidV400R001C00SPC050B012\out\target\product\godbox\obj\SHARED_LIBRARIES\你的库名_intermediates\LINKED下找库名必须要加前缀lib才进一步push /system/libC/C++ 函数要加上 JAVA_包名_你的函数名
0 0