Android NDK发布后,java+C的编程方式成为android上性能编程的首选。
但在C中调试困难,因此能使用logcat成为必须的要求。
关于在Native代码中使用logcat,网上有很多说法,大部分有所欠缺,有的根本是错的。
要使用logcat,首先在代码中要引入 log的头文件。
#include <android/log.h>
然后你可以简单的通过
__android_log_write(ANDROID_LOG_ERROR,"Tag","Message"); 方法向logcat输出。
log 级别有很多 :
ANDROID_LOG_UNKNOWN,
ANDROID_LOG_DEFAULT,
ANDROID_LOG_VERBOSE,
ANDROID_LOG_DEBUG,
ANDROID_LOG_INFO,
ANDROID_LOG_WARN,
ANDROID_LOG_ERROR,
ANDROID_LOG_FATAL,
ANDROID_LOG_SILENT,
这样写完以后,如果直接编译,就会报 __android_log_write 方法undefined.
怎么回事呢?关键是在设置编译选项上面。
在Android.mk文件里,可以指定一个LOCAL_LDLIBS的参数。如果不指定,那么编译的时候,只会引入默认的几个重要的lib,比如libc之类的。
如果要用log,那就要把 liblog给引进来。
网上很多的写法是 LOCAL_LDLIBS := -llog ,这在build static lib的时候没什么问题。如果是build shared lib,就会报个 cannot find -llog的错误。意思是找不到liblog.so这个库文件。
因此需要改成 LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog 才可以正常编译。
其中-L参数是指定了搜索lib的路径。
下面是一个android.mk的内容的例子:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := TestNdkNetwork
LOCAL_SRC_FILES := HttpConnection.cpp
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
include $(BUILD_SHARED_LIBRARY)
分享到:
相关推荐
3. **NDK集成Log4cpp**:在Android项目中使用log4cpp,首先需要将log4cpp库编译为适用于Android平台的静态或动态库。这通常涉及设置交叉编译环境,指定目标架构(armeabi, armeabi-v7a, arm64-v8a, x86等),并使用...
Android NDK,全称为Native Development Kit,是Google提供的一款用于Android平台的C和C++库开发工具集。这个“android-ndk-r23b-linux.zip”文件是NDK的一个特定版本,即r23b,专为Linux操作系统设计。在Android...
本教程将带你踏上“基于Android NDK的学习之旅”,重点探讨如何在JNI中进行LOG打印,以便于调试和理解代码执行过程。 首先,我们需要了解NDK。Android NDK(Native Development Kit)是Google提供的一套工具,用于...
本测试程序旨在展示如何在Android NDK(Native Development Kit)环境下集成并使用`log4cpp`。 `log4cpp`是一个基于C++的日志框架,它提供了一个模块化、可配置和可扩展的日志系统。这个框架的核心思想是将日志级别...
本文将深入探讨如何使用Android NDK(Native Development Kit)来编译适用于Android平台的eXosip库,包括静态库和动态库的构建过程。 首先,eXosip是基于OSI(Open Systems Interconnection)模型的SIP协议栈,它是...
此外,`__android_log_print()`宏可用于在Android日志系统中打印调试信息。 6. **性能优化**:NDK开发的一个主要目标是提升性能。通过使用C++,我们可以利用多线程、向量化运算等特性,但同时也需要注意内存管理和...
**Android NDK 开发入门详解** Android NDK(Native Development Kit)是Google提供的一款用于在Android平台上进行原生代码开发的工具集。它允许开发者使用C++和其他本地语言编写部分应用,以实现高性能计算或者...
Android提供了android_log宏来记录日志,这对于调试原生代码非常有用。 总的来说,Android NDK开发涉及广泛的系统知识和编程技巧,从安装配置到实际编程,都需要开发者具备扎实的C/C++基础和对Android系统的深入...
《Android NDK与JNI开发详解:从Hello World开始》 Android NDK(Native Development Kit)是Google提供的一套工具,允许开发者使用C/C++编写部分应用程序,以利用原生代码的高性能和低级硬件访问能力。JNI(Java ...
这个"androidNDK helloworld"资源就是一个入门级别的示例,旨在帮助初学者理解如何在Android项目中集成和使用NDK。下面将详细讲解Android NDK的基础知识以及如何创建并运行一个简单的"Hello, World!"程序。 首先,...
1. **CHANGELOG.md**:这是一个变更日志文件,记录了NDK从上一版本到当前版本的所有改动和改进。通过阅读此文件,开发者可以了解新版本带来的功能增强、性能优化以及已知问题的修复情况。 2. **prebuilt**:预构建...
Android NDK(Native Development Kit)是Google为Android平台提供的一套工具集,它允许开发者使用C、C++等原生代码来编写部分应用程序,从而利用这些低级语言的高性能和灵活性。JNI(Java Native Interface)是Java...
总结,iconv库在Android上的应用主要解决了跨编码问题,通过Android NDK编译生成的本地库,可以方便地集成到Java应用中,实现高效且可靠的字符编码转换功能。这对于构建全球化、本地化的应用程序尤其重要。
《Android NDK实战演示》 在移动开发领域,Android NDK是一个不可或缺的工具,它允许开发者使用C++和原生库来编写部分应用程序,从而实现性能优化和利用已有的C/C++代码。本示例“Android NDK demo”是基于Android ...
### Android NDK基础知识详解 #### 一、Android NDK简介 Android NDK(Native Development Kit)是一套工具集,它允许开发者使用C或C++语言为Android平台编写原生应用程序。借助NDK,开发者可以利用Android平台上...
在Android开发中,有时我们需要利用C++(通过NDK)来编写高性能的代码,并与Java层进行交互。本文将深入探讨如何在C++线程中调用Java方法,以实现跨语言的通信。我们将基于Android Studio 3.0和Gradle 3.2.0的环境来...
在Android开发中,NDK(Native Development Kit)是一个重要的工具集,它允许开发者使用C/C++编写部分应用程序,以利用底层硬件性能或者调用特定的系统库。这篇笔记主要介绍了如何在Android Studio中配置和使用NDK...
2. **选择日志级别**: `__android_log_print()`函数的第一个参数代表日志级别,如`ANDROID_LOG_DEBUG`、`ANDROID_LOG_INFO`、`ANDROID_LOG_WARN`、`ANDROID_LOG_ERROR`和`ANDROID_LOG_FATAL`等。这有助于在大量日志...
NDK(Native Development Kit)是Google提供的一套工具集,用于让开发者在Android应用中使用C/C++代码,实现性能优化或者调用特定硬件功能。本篇我们将深入探讨如何使用Android NDK和JNI来生成本地动态链接库(so库)。 ...
Android NDK(Native Development Kit)是Google为Android平台提供的一个工具集,允许开发者在Android应用中使用C和C++编写部分或全部代码。这在处理性能敏感的任务、使用已有的C/C++库或者开发硬件加速功能时非常...