NDK之打印调试信息Log
2024-10-16 01:06:20
第一步:gradle配置ndk
ndk {
moduleName "Iso8583Lib"
ldLibs "log", "z", "m"
abiFilters "armeabi", "armeabi-v7a", "x86" //输出指定三种abi体系结构下的so库,目前可有可无。
}
第二步:在需要的C文件加载头
#include <android/log.h>
第三步:定义打印方便使用的函数
#define LOG_TAG "C_TAG"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
第四步:测试使用
#include <jni.h>
#include <com_example_lanhe_android_jnistringdemo_jni_HelloWorld.h>
#include <android/log.h>
#define LOG_TAG "C_TAG"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__) JNIEXPORT jstring JNICALL Java_com_example_lanhe_1android_jnistringdemo_jni_HelloWorld_getHelloWorld
(JNIEnv *env, jobject thiz){
jstring hello = (*env)->NewStringUTF(env, "Hello Jni");
int helloLen=(*env) -> GetStringLength(env,hello);
LOGD("hello.length=%d",helloLen);
return hello;
}
结果如下:
额外:使用 __android_log_write 也是可以的。
备注:
调用其中的日志打印:
int __android_log_write(int prio, const char *tag, const char *text);
第一个参数为打印级别,为以下枚举之一:
typedef enum android_LogPriority {
ANDROID_LOG_UNKNOWN = ,
ANDROID_LOG_DEFAULT, /* only for SetMinPriority() */
ANDROID_LOG_VERBOSE,
ANDROID_LOG_DEBUG,
ANDROID_LOG_INFO,
ANDROID_LOG_WARN,
ANDROID_LOG_ERROR,
ANDROID_LOG_FATAL,
ANDROID_LOG_SILENT, /* only for SetMinPriority(); must be last */
} android_LogPriority;
参考资料:
http://blog.csdn.net/h183288132/article/details/50379450
最新文章
- js常用函数陆续总结
- 用Google Analytics跟踪JavaScript Errors (译)
- /MT /MD /ML /MTd /MDd /MLd 的区别
- NPC AI驱动最基本过程
- 转 Eclipse下svn的创建分支/合并/切换使用
- 使用rdesktop远程连接Windows桌面
- xhr.readyState的就绪状态
- 安卓和 java 学习笔记
- Python rich comparisons 自定义对象比较过程和返回值
- python进阶之time模块详解
- 【转】Mysql索引设计原则
- js 数组对象的操作方法
- HashMap几个需要注意的知识点
- SOC 与 ARM
- chattr与lsattr命令
- 我的GTD起步
- vue -Missing space before value for key &#39;path&#39;vue.js解决空格报错
- bzoj 1013: [JSOI2008]球形空间产生器sphere【高斯消元】
- HDU 1964 Pipes (插头DP,变形)
- Android系统级技巧合集