2012-05-07 26 views
13

Estoy tratando de crear un archivo de encabezado .h para un proyecto NDK simple. Utilizando cygwin hojeo a myprojectDIR\jni directorio, a continuación, ejecutar este comando:Javah Error android.app.Activity no encontrado

javah -o com_myproject_MyActivity.h -classpath myprojectDIR\bin\classes com.myproject.MyActivity 

continuación, aparece este mensaje de error:

Error: cannot access android.app.Activity 
class file for android.app.Activity not found 

Tengo un método nativo dentro MyActivity clase, por lo que trató de crear un nuevo clase llamada NativeAccess (no extiende ninguna clase desde el SDK de Android) y funcionó bien, se creó el archivo .h, ndk-build y prueba en el dispositivo donde tuvo éxito!

Así que mi problema es que necesito mis métodos nativos dentro de las actividades y servicios de Android que creo, pero no puedo hacerlo porque el comando Javah no puede acceder a las clases desde el propio android-sdk. Tenga en cuenta que estoy usando (Windows 7 x64) y tengo estas variables de entorno:

ANDROID_NDK : C:\Android\android-ndk-r7b 
ANDROID_SDK : C:\Android\android-sdk 
ANT_HOME : C:\ANT\apache-ant-1.8.3 
JAVA_HOME : C:\Program Files\Java\jdk1.7.0_02 
PATH  : %JAVA_HOME%\bin;%ANDROID_SDK%\tools;%ANDROID_SDK%\platform-tools;%ANDROID_NDK%;%ANT_HOME%\bin; (other unrelated stuff) 

Gracias de antemano

+0

Deberá incluir los tarros de la plataforma android en el classpath que utiliza con esta herramienta. Si su tarea es particularmente simple, puede crear los encabezados a mano, usando las muestras de ndk como guía. –

+0

Gracias Chris, pensé en agregar el classpth de los jar de android con la herramienta javah, pero no pude encontrar cómo hacerlo ... –

Respuesta

21

Trate de añadir a la ruta de clases:

-classpath <android-sdk-location>/platforms/android-8.jar 
+0

Ruta modificada. ahora debe ser 'sdk/platforms/android-10/android.jar' – Enyby

14

lo encontré , esto es cómo va:

javah -o com_myproject_MyActivity.h -classpath <android-sdk-location>/platforms/android-8.jar;myprojectDIR\bin\classes com.myproject.MyActivity 
4

intente lo siguiente en Eclipse,

Ir a> Ejecutar | Herramientas externas | Configuraciones de herramientas externas En Programa, cree una nueva configuración haciendo clic en el ícono pequeño.

Nómbrelo.

Ubicación sería: C: \ Archivos de programa \ Java \ jdk1.7.0_04 \ bin \ javah.exe

directorio de trabajo sería: $ {workspace_loc:/My_First_NDK/bin/clases} y

Los argumentos serían: -classpath $ {workspace_loc:/My_First_NDK/bin/classes} -bootclasspath "C: \ adt-bundle-windows-x86-20140624 \ sdk \ platforms \ android-19 \ android.jar" -v -d $ {workspace_loc:/My_First_NDK/JNI} com.mypackage.ndk.HelloNDK

enter image description here

-1

Lo encontré, así es como va:

E:\workspeaceResearch\DAMMADARJNI\src>javah -classpath "E:\Software\sdk\platform 
    s\android-19/platforms/android-8.jar"; -jni com.dammadar.jni.Home_Screen