(转载)Android之——JNI配置C语言打印Logcat信息

(转载)https://blog.csdn.net/l1028386804/article/details/47425073

这篇文章给大家介绍一下在JNI中如何为C语言配置打印Logcat信息。首先,这篇文章是在博文《Android之——JNI初探》基础上完善的,所以,请大家先阅读博文《Android之——JNI初探》。好了,我们直接进入主题吧。

一、实现

1、修改Android.mk文件。

在这个配置文件中我们加入如下一行代码:

 

LOCAL_LDLIBS += -llog

注意:这行代码一定要加载include $(BUILD_SHARED_LIBRARY)之前。

 

具体如下图:

此时Android.mk文件文件的配置如下:

 

 
  1. LOCAL_PATH := $(call my-dir)

  2.  
  3. include $(CLEAR_VARS)

  4.  
  5. LOCAL_MODULE := hello

  6. LOCAL_SRC_FILES := hello.c

  7.  
  8. LOCAL_LDLIBS += -llog

  9.  
  10. include $(BUILD_SHARED_LIBRARY)

 

2、修改hello.c文件

在这个文件中导入以下头文件:

 

 
  1. #include <android/log.h>

  2. #define LOG_TAG "System.out"

  3. #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)

  4. #define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)

 

然后在C方法中利用LOGI方法打印Log,

具体如下:

 

LOGI(" ......From C.....");

 

修改的配置如图:

hello.c完整代码如下:

 

 
  1. #include <stdio.h>

  2. #include <jni.h>

  3. #include "com_lyz_hdk_helloworld_MainActivity.h"

  4.  
  5. #include <android/log.h>

  6. #define LOG_TAG "System.out"

  7. #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)

  8. #define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)

  9.  
  10. JNIEXPORT jstring JNICALL Java_com_lyz_hdk_helloworld_MainActivity_helloFromC(JNIEnv *env , jobject obj){

  11. LOGI(" ......From C.....");

  12. char *str = "hello from c";

  13. jstring jstr = (**env).NewStringUTF(env, str);

  14. return jstr;

  15. }

 

二、运行效果

三、温馨提示

大家可以到链接http://download.csdn.net/detail/l1028386804/8992313下载完整的JNI配置C语言打印Logcat信息示例源代码。

本实例中,为了方面,我把一些文字直接写在了布局文件中和相关的类中,大家在真实的项目中要把这些文字写在string.xml文件中,在外部引用这些资源,切记,这是作为一个Android程序员最基本的开发常识和规范,我在这里只是为了方便直接写在了类和布局文件中。

 

//------------------------------------------------------------------------------------------------

  // 调用返回为String的函数
  jstring returnStr = (jstring)(*env)->CallStaticObjectMethod(env, jclazz, methodID, args);

  // 错误写法一
  // LOGI(returnStr);

  // 错误写法二
  // LOGI("%s", returnStr);

  char *print=(char *)(*env)->GetStringUTFChars(env, returnStr, 0);
  LOGI("%s", print);

  int number = 29;
  LOGI("%d", number);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值