2011-03-28 5 views

Respuesta

85

De esta manera:

#include <android/log.h> 


__android_log_write(ANDROID_LOG_ERROR, "Tag", "Error here");//Or ANDROID_LOG_INFO, ... 

añadirlo a su makefile como esto:

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

"-L $ (SYSROOT)/usr/lib "no es necesario, solo" LOCAL_LDLIBS: = -llog "funcionará de la misma manera. Para aquellos que no funciona de todos modos (como yo)) - Tenía la línea "include $ (CLEAR_VARS)" en mi Android.mk _after_ "LOCAL_LDLIBS: = -llog", la moví _antes_, y ahora funciona bien. – Mixaz

+0

Por si acaso, si esto no funciona, consulte la solución a continuación. –

+5

o __android_log_print (ANDROID_LOG_INFO, "Etiqueta", "i% c funciona lik% x print% x", "t", 14, 15); –

6

A continuación se presenta el fragmento de código que se debe incluir en su código nativo.

#include <android/log.h> 


__android_log_write(ANDROID_LOG_ERROR, "Tag", "Error msg");//Or ANDROID_LOG_INFO, ... 

Para utilizar la API anterior, necesitamos vincular la biblioteca correspondiente.

Podemos vincular una biblioteca compartida en Android de 3 maneras. En menos de 3 casos, las líneas mencionadas deben agregarse en Android.mk

Aquí están las tres formas.

1. LOCAL_LDLIBS way 
LOCAL_LDLIBS := -llog 

Por alguna razón, si 1 no funciona (no funcionó para mí), se puede tratar por debajo de 2 maneras

2. LOCAL_LDFLAGS way 
LOCAL_LDFLAGS := -llog 

3. LOCAL_SHARED_LIBRARIES way 
LOCAL_SHARED_LIBRARIES += liblog 
1

syslog

Esta función POSIX da salida también a LogCat .

Tiene la ventaja de ser más portátil en sistemas que no sean Android que y agrega automáticamente el paquete de la aplicación al registro.

Probado con esta aplicación de ejemplo: https://github.com/cirosantilli/android-cheat/tree/a080f5c370c1f06e74a8300fb4a2e93369861047/gradle/NdkSyslog la fuente NDK es:

#include <jni.h> 
#include <string> 
#include <syslog.h> 

extern "C" 
JNIEXPORT jstring JNICALL 
Java_com_cirosantilli_android_1cheat_ndksyslog_MainActivity_stringFromJNI(
     JNIEnv* env, 
     jobject /* this */) { 
    syslog(LOG_CRIT, "hello syslog"); 
    return env->NewStringUTF("Check adb logcat"); 
} 

Y Logcat ahora contiene:

01-14 15:39:07.582 3633 3633 E com.cirosantilli.android_cheat.ndksyslog: hello syslog 

probado en Android O, hikey 960.

Cuestiones relacionadas