`
runfeel
  • 浏览: 935610 次
文章分类
社区版块
存档分类
最新评论

android-----JNI中的log打印

 
阅读更多

1. 导入log头文件

在你使用的 .c/ .cpp 文件中

导入 log.h 头文件

#include<android/log.h>


2.在Android.mk 中

加上

LOCAL_LDLIBS :=-llog

注意Android.mk里有一行include $(CLEAR_VARS)

必须把LOCAL_LDLIBS :=-llog放在它后面才有用,

否则相当于没写。


3. 定义LOG 函数

先定义一个全局变量,再定义一些输出的LOG函数:

#define TAG "myDemo-jni" // 这个是自定义的LOG的标识 
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,TAG ,__VA_ARGS__) // 定义LOGD类型 
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,TAG ,__VA_ARGS__) // 定义LOGI类型 
#define LOGW(...) __android_log_print(ANDROID_LOG_WARN,TAG ,__VA_ARGS__) // 定义LOGW类型 
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,TAG ,__VA_ARGS__) // 定义LOGE类型 
#define LOGF(...) __android_log_print(ANDROID_LOG_FATAL,TAG ,__VA_ARGS__) // 定义LOGF类型 

上述代码中定义的函数

分别对应于Android 的Java代码中的

Log.d(), Log.i(), Log.w(),Log.e(), Log.f()等方法.


4.举例

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

#define TAG    "myhello-jni-test" // 这个是自定义的LOG的标识
#define LOGD(...)  __android_log_print(ANDROID_LOG_DEBUG,TAG,__VA_ARGS__) // 定义LOGD类型

 extern "C" {
     JNIEXPORT jstring JNICALL Java_com_snail_helloworld_MainActivity_myhello(JNIEnv * env, jobject obj);
 };

 JNIEXPORT jstring JNICALL Java_com_snail_helloworld_MainActivity_myhello(JNIEnv * env, jobject obj)
 {
	 int i = 0;
	 LOGD("########## i = %d", i);
	 return env->NewStringUTF("Hello From CPP");
 }


Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := hello
LOCAL_SRC_FILES := hello.cpp
LOCAL_LDLIBS :=-llog

include $(BUILD_SHARED_LIBRARY)









分享到:
评论

相关推荐

    基于 Android NDK 的学习之旅-----JNI LOG 打印

    本教程将带你踏上“基于Android NDK的学习之旅”,重点探讨如何在JNI中进行LOG打印,以便于调试和理解代码执行过程。 首先,我们需要了解NDK。Android NDK(Native Development Kit)是Google提供的一套工具,用于...

    Android JNI日志工具类

    在Android开发中,JNI(Java Native Interface)是一个关键的组件,它允许Java代码与其他语言编写的代码进行交互,特别是C++或C。JNI在处理性能敏感的计算、访问硬件特性或者利用现有C库时非常有用。然而,在JNI编程...

    Android中JNI编程的那些事儿

    - 使用`__android_log_print`:Android SDK提供了一个原生的日志API,可以方便地在本地代码中打印日志,便于调试。 4. JNI最佳实践: - 错误处理:在本地方法中添加适当的错误检查和异常处理机制。 - 内存管理:...

    Android jni调试打印char阵列的实例详解

    Android JNI 调试打印 char 数组的实例详解是 Android 开发中的一种常见需求,特别是在 debug 和测试阶段。在 Android 中,使用 JNI 调用 native 方法时,需要将 char 数组转换为字符串,方便 debug 和 log 输出。...

    Android Studio JNI_NDK开发实例

    - 使用`__android_log_print`函数进行日志打印,辅助排查问题。 - 利用`ndk-stack`工具解析崩溃堆栈,定位错误发生的位置。 9. **安全注意事项**: - 原生代码的漏洞可能被利用,导致安全问题。因此,遵循C/C++...

    jniDemo Log版

    在"jniDemo Log版"中,你将看到如何在C/C++代码中使用Android的Log系统来打印日志。Android的日志系统是一个强大的调试工具,可以将信息、警告、错误等分类记录,供开发者查看。 要在C/C++代码中打印日志,你需要...

    jni 在c中打印信息到Eclipse中

    ### jni 在C中打印信息到Eclipse中的方法详解 #### 概述 在Java Native Interface(JNI)中,我们经常需要将C/C++代码中的信息打印到开发环境的输出窗口,以便进行调试或监控程序运行状态。对于使用Eclipse作为...

    Android JNI配置Logcat示例

    本示例实现了Android JNI在C语言中打印log的配置,有关本示例的详细解析请参考博文:http://blog.csdn.net/l1028386804/article/details/47425073

    Android通过JNI调用驱动程序(完全解析实例)

    在Android开发中,经常需要使用到JNI(Java Native Interface,Java本机接口)技术来实现Java代码与C/C++代码之间的交互。这对于想要利用低级语言的性能优势或访问只提供了C/C++ API的硬件设备的应用开发者来说尤为...

    NDK开发C/C++配置Log打印日志

    要配置NDK开发中的Log打印,我们需要以下几个步骤: 1. **设置预处理器宏**: 在C/C++源文件中,使用`__android_log_print()`函数来打印日志。但首先,需要在源文件中包含`&lt;android/log.h&gt;`头文件,并定义预处理器宏...

    Android通过JNI调用驱动程序(例子).pdf

    - 如果要使用调试日志打印,即`__android_log_print`函数,需要在`LOCAL_LDLIBS`中添加`-llog`。 **步骤4:编译JNI模块** - 进入到`/home/workspace/android-ndk-r4b/sources/LEDSJNI`目录。 - 使用`ndk-build`命令...

    android jni demo

    - 日志输出:使用`__android_log_print`宏在C/C++代码中打印日志,通过`Logcat`查看。 5. **注意事项** - 管理内存:C/C++中的内存管理不同于Java,需要手动分配和释放,避免内存泄漏。 - 异常处理:在JNI中,...

    NDK JNI的学习

    - 使用`__android_log_print()`等日志打印函数辅助调试。 6. **注意事项** - ABI兼容性:不同的设备可能支持不同的CPU架构,因此需要为每个支持的ABI生成相应的.so文件。 - 内存管理:JNI中需要手动进行内存分配...

    Android JNI 异常处理 (十一)

    在JNI代码中,应使用`__android_log_print()`等Android logging API记录错误信息,这样可以在不侵入Java层的情况下获取详细的调试信息。 ### 性能考虑 频繁地检查异常可能会影响性能,因此在不影响正确性的前提下...

    Android中使用jni进行本地开发

    在Android应用开发中,JNI(Java Native Interface)是一种让Java代码与本地C/C++代码交互的技术。通过JNI,开发者可以在不离开Android平台的基础上利用C/C++的高效性能和丰富的库资源,解决Java在某些场景下效率...

    基于Android的android_jni操作指南.zip

    2. **日志输出**:使用`__android_log_print`宏进行本地代码的日志打印,便于调试。 3. **Android Studio的NDK调试**:可以通过设置断点,使用Android Studio的远程调试功能对本地代码进行调试。 **六、性能优化**...

    Android NDK+JNI 练习2

    在Android开发中,NDK(Native Development Kit)和JNI(Java Native Interface)是两个关键工具,它们允许开发者在原生代码(如C/C++)和Java代码之间进行交互。本练习2主要关注如何在Android NDK和JNI的帮助下,从...

    Android的jni的应用C,C++(基本类型,数组,类(结构体)).源码

    `__android_log_print()`宏是Android SDK提供的一种日志打印方式,可以在C/C++代码中使用,便于查看调试信息。 总的来说,这个主题涵盖的内容广泛,包括JNI的初始化、基本类型转换、数组操作、对象和结构体的映射,...

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

Global site tag (gtag.js) - Google Analytics