Android4.2.2NDK和源码开发jni的异同

C/C++开发,在NDK和源码中输出Log信息的方法!

NDK:

1、包含头文件

#include <android/log.h>

2、Android.mk中包含库

LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog

上面这个一定要,不然出现error: undefined reference to ‘__android_log_print‘

LOCAL_SHARED_LIBRARIES := libdl\

liblog\          #经测试在Eclipse中用NDK编译可有可无,没啥用!但在源码中就必须是他,所以都加上吧!

libpre_AppUpgrade\

libpre_AppArea\

3、在你的jni文件中定义

#define LOGD(...)  __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__) // 定义LOGD类型

#define LOGI(...)  __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__) // 定义LOGI类型

#define LOGW(...)  __android_log_print(ANDROID_LOG_WARN,LOG_TAG,__VA_ARGS__) // 定义LOGW类型

#define LOGE(...)  __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__) // 定义LOGE类型

#define LOGF(...)  __android_log_print(ANDROID_LOG_FATAL,LOG_TAG,__VA_ARGS__) // 定义LOGF类型

adnroid4.2源码中已经将LOGD等都加了一个头,

#define ALOGD(...)  __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__) // 定义LOGD类型

#define ALOGI(...)  __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__) // 定义LOGI类型

#define ALOGW(...)  __android_log_print(ANDROID_LOG_WARN,LOG_TAG,__VA_ARGS__) // 定义LOGW类型

#define ALOGE(...)  __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__) // 定义LOGE类型

#define ALOGF(...)  __android_log_print(ANDROID_LOG_FATAL,LOG_TAG,__VA_ARGS__) // 定义LOGF类型

注意如果你不想在每一个jni文件中都定义上述宏,投机方法即可以定义在:D:\android-ndk-r9d\platforms\android-19\arch-arm\usr\include\android\log.h中!当然这种编译也只能在你本机上使用啦~

源码开发:

1、Android.mk中包含库

LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog

LOCAL_SHARED_LIBRARIES := libdl\

liblog\                          //源码中开发一定的加上

libpre_AppUpgrade\

libpre_AppArea\

2、包含头文件#include <utils/Log.h>

3、注意在使用时记得包含库的头文件

Android4.2.2NDK和源码开发jni的异同

时间: 2024-10-13 18:08:28

Android4.2.2NDK和源码开发jni的异同的相关文章

Android4.2.2NDK和源码开发jni的异同(2)

NDK开发Android.mk编写samples 1. jni中包含多个源文件,且多个文件编译成为不同的so文件 (1)jni/Android.mk: include $(call all-subdir-makefiles)    (包含所有子目录下Android.mk) 注意:在写Android.mk文件时, call all-subdir-makefiles和call all-makefiles-under,$(LOCAL_PATH)是有区别的. 前者表示"当前目录下没有需要编译的文件,请向

Android Widget 开发实例:桌面便签程序的实现详解和源码

桌面便签软件是Android上常用软件的一种,比如比较早的Sticky Note,就曾非常流行,而实际上使用android平台对widget开发的支持,桌面便签类软件是非常易于开发的. 本文通过逐步实现一个简单的桌面便签软件,和大家分享进行widget开发的过程和方法. 同时本程序提供完整的工程源码下载 免费下载地址在 http://linux.linuxidc.com/ 用户名与密码都是www.linuxidc.com 具体下载目录在 /pub/Android源码集锦/2011年/10月/An

Android源码开发利器——Java源码调试(基于4.1.2)

原文地址:http://blog.csdn.net/jinzhuojun/article/details/8868038 调试Android Java源码 草帽的后花园--Neo 写在之前的话:这里主要是以调试Java源码为主,应该说是在system_process之后的源码,这对于调试和修改frameworks层的人来说真是一个利器,但至于为什么在system_process之后,我还在分析,如果有结果我会更新此文章,并正在尝试调试C++的代码,就是native中的代码,如果这个可行那将会大大

Android4.4系统源码百度网盘下载

众所周知.Android如今非常火,肯定也有非常多android开发人员像我一样想研究android系统的源码.可是假设依照Google官方站点http://source.android.com/source/downloading.html上面说的步骤下载.因为在国内连接谷歌的server网速实在太慢,可是android系统的源码非常大.超过8G.我在网上看到有哥们说他下了一个多月才下载完.更让人难以接受的是,下载过程中网络连接差点儿一定会多次中断.而假设连接超时,就会报错.我在下载过程中就报

Ubuntu12.04编译Android4.0.1源码全过程-----附wubi安装ubuntu编译android源码硬盘空间不够的问题解决

本文转至  http://blog.csdn.net/yanzi1225627/article/details/9263097 昨晚在编译源码,make一段时间之后报错如下: [html] view plaincopyprint? # A fatal error has been detected by the Java Runtime Environment: # #  SIGSEGV (0xb) at pc=0x40362d33, pid=12195, tid=2835454784 # # 

Android Debuggerd 简要介绍和源码分析(转载)

转载: http://dylangao.com/2014/05/16/android-debuggerd-%E7%AE%80%E8%A6%81%E4%BB%8B%E7%BB%8D%E5%92%8C%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90/ 码字很辛苦,转载请注明来自Dylan‘s Zone的<Android Debuggerd 简要介绍和源码分析> 本文以android4.1为基础,分析debuggerd这个工具的使用方法和源码. 1.Debuggerd 简介

计算机视觉的一些测试数据集和源码站点

以下是computer vision:algorithm and application计算机视觉算法与应用这本书中附录里的关于计算机视觉的一些测试数据集和源码站点,我整理了下,加了点中文注解. ComputerVision: Algorithms and Applications Richard Szeliski 在http://szeliski.org/Book包含了更新的数据集和软件,请同样访问他. C.1 数据集 一个关键就是用富有挑战和典型的数据集来测试你算法的可靠性.当有背景或者他人

linux/centos下安装nginx(rpm安装和源码安装)详细步骤

Centos下安装nginx rpm包                                                                                                                            www.169it.com 1 在nginx官方网站下载一个rpm包,下载地址是:http://nginx.org/en/download.html wget http://nginx.org/packages/c

Android依赖注入Dagger的使用和源码解析(上篇)

一.基本概念 依赖注入(DI)和控制反转(IOC): 依赖注入是从应用程序的角度在描述,可以把依赖注入描述完整点:应用程序依赖容器创建并注入它所需要的外部资源:而控制反转是从容器的角度在描述,描述完整点:容器控制应用程序,由容器反向的向应用程序注入应用程序所需要的外部资源. 使用依赖注入可以带来以下好处: 依赖的注入和配置独立于组件之外. 因为对象是在一个独立.不耦合的地方初始化,所以当注入抽象方法的时候,我们只需要修改对象的实现方法,而不用大改代码库. 依赖可以注入到一个组件中:我们可以注入这