NDK编程中如何在C文件中打印调试信息

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);
 }

时间: 2024-10-12 14:50:19

NDK编程中如何在C文件中打印调试信息的相关文章

如何在PDF文件中添加注释功能

PDF文件并不陌生,那么对PDF编辑与添加注释大家是否有了解过?编辑与加注释是不同的,PDF编辑文件是对内容进行编辑修改,能修改原文件中的内容:而添加注释则是在原文件上添加备注,对文件中的重点文字添加下划线等标记.下面分享如何在PDF文件中添加注释功能.   步骤: 1.首先我们可以百度搜索'悦书PDF阅读器',点击进入下载即可. 2.点击菜单栏'+'打开文件,或者直接把文件拖入到阅读器中即可打开.在打开界面中选择PDF文件并点击'打开'即可. 3.打开的PDF文件页面中,选择下方工具栏中的'注

cuda编程:不要在一个cpp文件中声明__device__和__global__函数

比如一下代码是正常的: kernel.h extern __global__ void kernel(); kernel.cu #include <stdio.h> #include "kernel.h" __global__ void kernel() { printf("hello world!"); } test.cu #include "kernel.h" int main(void) { kernel<<<

如何在PDF文件中快速查找关键字,这个方法后悔没早点知道

很多时候当我们在阅读和浏览PDF文档的时候,有时候内容比较多,很难一下就看到自己需要查找的内容,如果是用眼睛慢慢看的话不仅浪费时间浪费精力,还会产生视觉疲劳,想要快速找到关键字就需要用查找功能,那么如何在PDF文件中快速查找关键字?这个方法后悔没早点知道,下面就一起来看看吧.软件介绍:想要快速查找关键词就需要一款能够对PDF文件进行编辑和修改的软件,一款比较专业的PDF编辑器,良心推荐迅捷PDF软件,这款软件不仅能够PDF文件进行修改和编辑,还有很多其他的功能,如PDF添加书签,PDF添加背景等

电脑中如何提取PDF文件中的图片

通常,我们在一些PDF文件中看到一些好看的图片,想将图片保存下来,但是PDF文件是无法编辑的,在文件自身当中我们无法将图片完成的提取出来,因此大家都会想办法在不破坏图片完整性的情况下将图片从PDF文件中提取出来,下面就跟大家分享一下小编是从电脑中如何提取PDF文件中的图片.借助工具:×××换器1.在PDF文件中提取图片,本身也是一种对文件的编辑,知识PDF文件无法编辑,所以我们要借助工具来进行编辑,工具可以直接在百度浏览器中下载.2.下载安装好工具,打开工具,进入到操作页面,操作页面左边是功能栏

在C的头文件中定义的结构体,如何在cpp文件中引用

解决方案1:在cpp文件中放置.c,且在该文件中引用变量 解决方案2:在一个cpp文件中包含.c,但在另一个cpp文件中使用结构体变量 cpp文件1 cpp文件2 #include "dialog3.h" #include <QDebug> extern "C" { typedef struct PRINT { unsigned char Parameters;//BitDepthAC,BitDepthDC,q unsigned char PlaneCo

如何在js文件中实现获取request.getCotextPath();

我们在jsp中可以方便的使用“request.getCotext()”来获取工程的根目录. 但是如果我们的js代码存在一个单独的js文件中,这时候再想获取根目录,我们就要自己截取了.可以采用下面的方式. 为了方便解释我分开书写. var locationPath = window.location; //这个locationPath可以获取你当前浏览器请求的整个URL包括通过?加在后面的参数.相当于request.getRequestURL. var path = locationPath.pa

Android 中保存数据到文件中

1.在安卓开发中,会遇到保存数据到手机中以及从手机中获取数据的情况 /** * 把数据存放到手机内存中 * * @param number * @param password * @return */ public static boolean saveUserInfo(Context context, String number, String password) { try { // getCacheDir()方法用于获取/data/data/<package name>/cache目录

Spring MVC框架下在java代码中访问applicationContext.xml文件中配置的文件(可以用于读取配置文件内容)

<bean id="propertyConfigurer" class="com.****.framework.core.SpringPropertiesUtil" lazy-init="false"> <property name="locations"> <list> <value>classpath:config/sys.properties</value> &

SpringMVC 实现POI读取Excle文件中数据导入数据库(上传)、导出数据库中数据到Excle文件中(下载)

读取Excle表返回一个集合: package com.shiliu.game.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Field; import java.lang.reflect