Registro de valores de variables en ndk nativo de Android
Configuré el registro con C ++ en Android NDK.
Puedo imprimir un mensaje para logcat así:
- ¿Por qué Logcat se llama LogCAT?
- Set Tono de timbre con mp3 de la carpeta res / raw
- Android: graba audio que se está reproduciendo desde el dispositivo a la toma de auriculares
- Androide AudioRecord lectura de amplitud de MIC
- El ID de registro de la aplicación no se genera en GCM Android
__android_log_write(ANDROID_LOG_INFO, "tag here", "message here");
Ahora digamos que tengo un entero llamado testint . ¿Cómo puedo imprimir el valor de este int?
Algo como esto imprime la dirección, pero quiero el valor. No he encontrado nada en C ++ en cómo hacer esto. ¡Gracias por cualquier ayuda!
__android_log_print(ANDROID_LOG_INFO, "sometag", "%p", *test);
- ¿Por qué no debería usar System.out.println () en android
- ¿Cómo implementar el registro / registrarse en android?
- LOG4J en Android
- Android: graba vídeo en la misma orientación independientemente de la orientación del dispositivo
- Cómo obtener el registro detallado en Logcat para un módulo específico
- Registro de Android con Crashlytics
- Disminuir la verbosidad del registro interno de ORMlite o deshabilitarla
- SLF4J varargs interpreta la primera cadena como marcador
Puede utilizar __android_log_print
que utiliza una sintaxis similar a sprintf
que formatea sus datos en una cadena.
__android_log_print(ANDROID_LOG_INFO, "sometag", "test int = %d", testInt);
Aquí está la forma más concisa que he visto:
#include <android/log.h> #define LOG_TAG "someTag" #define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__) #define LOGW(...) __android_log_print(ANDROID_LOG_WARN,LOG_TAG,__VA_ARGS__) #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__) #define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__) ... // Now you can log very simply like this: int foo = 42; LOGD( "This is a number from JNI: %d", foo );
Además, asegúrate de enlazar con la biblioteca de registros de tu Android.mk:
LOCAL_LDLIBS := -llog
__android_log_print () toma una cadena de formato y una lista de argumentos variables. El especificador de formato que está buscando para imprimir un entero con signo es "% d". Así que algo como esto es lo que quieres:
int foo = 42; __android_log_print(ANDROID_LOG_INFO, "SomeTag", "foo is %d", foo);
Para obtener más información sobre las cadenas de formato, puede ver el manual sprintf .
Aproveche la función de impresión de registro variadic que tiene disponible. Para mi propio código, proveo una función de LogInfo () para hacerlo simple. Por supuesto hay varias opciones disponibles para usted aquí.
void LogInfo(const char *sTag, const char *fmt, ...) { va_list ap; va_start(ap, fmt); __android_log_vprint(ANDROID_LOG_INFO, sTag, fmt, ap); va_end(ap); }
- Android scrolllist alfabético rápido en RecyclerView con la barra de herramientas Collapsing
- Carpetas Raw de Android: creación y referencia