Android NDK打LOG

/*

http://my.oschina.net/lifj/blog/177308

*/


《罗辑思维》这个系列的视频蛮好看的。(无关紧要的话)

上一篇讲了NDK的起步Hello Jni。里面有些东西被我省略没讲,就是Android.mk文件的编写。这回,我来详细的写一下。

一。mk文件的结构骨架

这里的骨架,就是指我们一般需要写的几个重要的语句和模块。还是采用Hello Jni的mk文件:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := HelloJni
LOCAL_SRC_FILES := HelloJni.c
include $(BUILD_SHARED_LIBRARY)

简单的5句话。
1. LOCAL_PATH := $(call my-dir) 。  
       一个Android.mk 文件首先必须定义好LOCAL_PATH变量。它用于在开发树中查找源文件。在这个例子中,宏函数’my-dir’, 由编译系统提供,用于返回当前路径(即包含Android.mk 文件的目录)。
2. include $(CLEAR_VARS)。  
      CLEAR_VARS 由编译系统提供,指定让GNU MAKEFILE为你清除许多LOCAL_XXX变量(例如 LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES, 等等...),LOCAL_PATH 。这是必要的,因为所有的编译控制文件都在同一个GNU MAKE执行环境中,所有的变量都是全局的。
3. LOCAL_MODULE    := HelloJni。

LOCAL_MODULE变量必须定义,以标识你在Android.mk文件中描述的每个模块。名称必须是唯一的,而且不包 含任何空格。注意编译系统会自动产生合适的前缀和后缀,换句话说,一个被命名为'HcSyncml'的共享库模块,将会生成'libHelloJni.so'文件。
4. LOCAL_SRC_FILES := HelloJni.c 
      LOCAL_SRC_FILES中加入源文件路径(需要编译的文件),多个文件用 ‘ ’ 隔开,如果要换行,用‘\’+ 回车换行。
5. include $(BUILD_SHARED_LIBRARY)
      表示生成一个共享库,其他的还有BUILD_STATIC_LIBRARY(这个表示生成一个静态库)。

二。在Jni中打日志LOG

在Jni中打日志(还是以Hello Jni为例),
1. 需要mk文件中再加入一条语句:

LOCAL_LDLIBS    := -llog


2.HelloJni.c文件中,加入头文件和函数声明。最终文件如下:

#include <stdio.h>
#include <android/log.h>
#include "HelloJni.h"

#define  LOG_TAG    "HelloJni"
#define  LOGI(...)  __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)
#define  LOGE(...)  __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)

jstring Java_com_example_hellojni_MainActivity_getHelloJniString
  (JNIEnv * env, jobject clazz)
{
	LOGI("call from jni!");
	return (*env)->NewStringUTF(env, "Hello Jni!");
}

除了ANDROID_LOG_INFO这个日志级别,还有如下的:

 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

3.编译so文件,运行程序吧!奇迹出现啦!

4.LOGI除了直接输出字符串,也可以用占位符的方式显示。例如
LOGI(%s,"call from jni!");

以上就是简单的介绍。

转载于:https://my.oschina.net/lifj/blog/177308

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值