博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NDK编程中如何在C文件中打印调试信息
阅读量:5939 次
发布时间:2019-06-19

本文共 2906 字,大约阅读时间需要 9 分钟。

 

 

1,在Android.mk文件中加上

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

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE  :=ndkdemo
LOCAL_SRC_FILES :=com_app_test_nativeMethod.c
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
include $(BUILD_SHARED_LIBRARY)

 

2,在要实现的.c文件中引入头文件

#include <string.h>

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

 

3,在需要输出调试信息的地方

 __android_log_write(ANDROID_LOG_DEBUG,"tt","come in jin!!");

注意前面是两个下划线

4,下面直接上代码

#include <string.h>

 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
 #include <sys/ioctl.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <jni.h>
 #include <android/log.h>
//在logCat中加上  日志输出标记  native-activity
 #define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "native-activity", __VA_ARGS__))
 #define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, "native-activity", __VA_ARGS__))
 /**********传输整数*************
 */
 JNIEXPORT void JNICALL Java_com_nan_callback_MyCallbackActivity_callJNIInt( JNIEnv* env, jobject obj , jint i)
 {
     //找到java中的类
     jclass cls = (*env)->FindClass(env, "com/nan/callback/MyCallbackActivity");
     //再找类中的方法
     jmethodID mid = (*env)->GetMethodID(env, cls, "callbackInt", "(I)V");
     if (mid == NULL)
     {
         LOGI("int error");
         return;
     }
     //回调java中的方法
     int k=0;
     for(k;k<10;k++){
    (*env)->CallVoidMethod(env, obj, mid ,k);
     }
 }
 /********传输字符串*************
 */
 JNIEXPORT void JNICALL Java_com_nan_callback_MyCallbackActivity_callJNIString( JNIEnv* env, jobject obj , jstring s)
 {
     //找到java中的类
     jclass cls = (*env)->FindClass(env, "com/nan/callback/MyCallbackActivity");
     //再找类中的方法
     jmethodID mid = (*env)->GetMethodID(env, cls, "callbackString", "(Ljava/lang/String;)V");
     if (mid == NULL)
     {
         LOGI("string error");
         return;
     }
     const char *ch;
     //获取由java传过来的字符串
     ch = (*env)->GetStringUTFChars(env, s, NULL);
     //打印
     LOGI("from java string: %s",ch);
     (*env)->ReleaseStringUTFChars(env, s, ch);
     //回调java中的方法
     (*env)->CallVoidMethod(env, obj, mid ,(*env)->NewStringUTF(env,"你好haha"));
 }
 /********传输数组(byte[])*************
 */
 JNIEXPORT void JNICALL Java_com_nan_callback_MyCallbackActivity_callJNIByte( JNIEnv* env, jobject obj , jbyteArray b)
 {
     //找到java中的类
     jclass cls = (*env)->FindClass(env, "com/nan/callback/MyCallbackActivity");
     //再找类中的方法
     jmethodID mid = (*env)->GetMethodID(env, cls, "callbackByte", "([B)V");
     if (mid == NULL)
     {
         LOGI("byte[] error");
         return;
     }
     //获取数组长度
     jsize length = (*env)->GetArrayLength(env,b);
     LOGI("length: %d",length);
     //获取接收到的数据
     int i;
     jbyte* p = (*env)->GetByteArrayElements(env,b,NULL);
     //打印
     for(i=0;i<length;i++)
     {
         LOGI("%d",p[i]);
     }
     char c[5];
     c[0] = 1;c[1] = 2;c[2] = 3;c[3] = 4;c[4] = 5;
     //构造数组
     jbyteArray carr = (*env)->NewByteArray(env,length);
     (*env)->SetByteArrayRegion(env,carr,0,length,c);
     //回调java中的方法
     (*env)->CallVoidMethod(env, obj, mid ,carr);
 }

小弟菜鸟一枚,初来乍到,有什么错误还望各位大神不吝指出,^_^。
 
http://www.cnblogs.com/maydow/p/4676201.html

转载于:https://www.cnblogs.com/pengmn/p/9798404.html

你可能感兴趣的文章
poj - 1860 Currency Exchange
查看>>
chgrp命令
查看>>
Java集合框架GS Collections具体解释
查看>>
洛谷 P2486 BZOJ 2243 [SDOI2011]染色
查看>>
linux 笔记本的温度提示
查看>>
数值积分中的辛普森方法及其误差估计
查看>>
Web service (一) 原理和项目开发实战
查看>>
跑带宽度多少合适_跑步机选购跑带要多宽,你的身体早就告诉你了
查看>>
广平县北方计算机第一届PS设计大赛
查看>>
深入理解Java的接口和抽象类
查看>>
java与xml
查看>>
Javascript异步数据的同步处理方法
查看>>
iis6 zencart1.39 伪静态规则
查看>>
SQL Server代理(3/12):代理警报和操作员
查看>>
基于事件驱动的DDD领域驱动设计框架分享(附源代码)
查看>>
Linux备份ifcfg-eth0文件导致的网络故障问题
查看>>
2018年尾总结——稳中成长
查看>>
JFreeChart开发_用JFreeChart增强JSP报表的用户体验
查看>>
度量时间差
查看>>
apache prefork模式优化错误
查看>>