2010-10-26 15 views

Respuesta

1

Si lo entiende correctamente, debe ver cómo funciona el C Preprocessor.

¿Tienes alguna experiencia en escribir C/C++ - programas? En primer lugar, debe ser muy exigente con las partes de la aplicación que escribe en el código nativo. Además, debe tener en cuenta que el código nativo se comportará de manera totalmente diferente en lo que respecta a la asignación de memoria, por lo que este no es realmente el lugar para las conjeturas.

Dedique un tiempo a conocer C/C++, diseñe su aplicación sabiamente para que las partes que desea escribir en código nativo estén claramente definidas, y que no aumenten las posibilidades de que su aplicación falle. Supongo que la mayoría de los proyectos pueden prescindir de una parte de aplicación nativa, por lo que si la está usando y no sabe exactamente lo que está haciendo, realmente debería volver a evaluar si es lo correcto o no. no.

+0

Estoy haciendo una migración y soy un novato para Android, ¡gracias por su asesoramiento! – Loc

+0

De acuerdo. Me gustaría agregar que si alguien decide mezclar Java y el código nativo para una aplicación de Android, trate de minimizar el cruce del límite de JNI. Es decir: minimice las llamadas JNI ya que son relativamente caras. Imho, cualquiera que se encuentre en una situación en la que las llamadas JNI de alta frecuencia no puedan evitarse debería considerar seriamente usar solo Java. Si no es por motivos de rendimiento, al menos para evitar dolores de cabeza inducidos por JNI. – pauluss86

44

Si desea añadir una definición especial al compilar el código NDK (JNI) añadir lo siguiente en su Android.mk:

LOCAL_CFLAGS := -DMYDEFINE 

Esto va a definir la macro MYDEFINE en su C/C++ código.Aquí un ejemplo

#ifdef MYDEFINE 
// We build the project with this special macro 
#else 
// We build without setting the macro in the LOCAL_CFLAGS 
#endif 
+0

¡Funciona perfectamente! ¡Gracias! – Loc

+5

Agradable que funcionó: P Entonces podría aceptar la respuesta jeje: P – Moss

+2

Aprende de mi error: no te pierdas el 'D' en' -DMYDEFINE' – codingFriend1

1

Si estamos hablando acerca de las macros makefile Android como

$ (llamar a mi-dir)

Es exactamente igual que la sintaxis makefile GNU

Gnu makefile manual

Por ejemplo:

inversa = $ (2) $ (1)

foo = $ (llamada inversa, a, b)

$ (advertencia $ (foo))

resultados :

ba

1

Para definir marcro:

LOCAL_CFLAGS += -DYOUR_MACRO 

para definir macro con valor:

LOCAL_CFLAGS += -DYOUR_MACRO='"string"' 

o

LOCAL_CFLAGS += -DYOUR_MACRO=123 

personalmente, sugieren utilizar + = lugar de: = para evitar LOCAL_CFLAGS habido sobrescrito

Cuestiones relacionadas