2012-05-07 19 views
13

Próbuję utworzyć plik nagłówkowy .h dla prostego projektu NDK. Korzystanie Cygwin mogę przeglądać myprojectDIR\jni katalogu, a następnie wykonać polecenie:Błąd Javah android.app.Activity nie znaleziony

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

następnie pojawia się ten komunikat o błędzie:

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

Mam rodzimych metodę wewnątrz MyActivity klasy, więc starałem się stworzyć nową klasa o nazwie NativeAccess (nie rozszerza żadnej klasy z android SDK) i działała dobrze, plik .h został utworzony, ndk-build i przetestować na urządzeniu, gdzie się powiodło!

Moim problemem jest to, że potrzebuję swoich metod natywnych wewnątrz działań i usług Androida, które tworzę, ale nie mogę tego zrobić, ponieważ polecenie Javah nie może uzyskać dostępu do klas z samego android-sdk. Proszę zauważyć, że używam (Windows 7 x64) i mam te zmienne środowiskowe:

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) 

góry dzięki

+0

Musisz użyć słoika (platform) platformy Android w ścieżce klas, której używasz z tym narzędziem. Jeśli twoje zadanie jest szczególnie proste, możesz po prostu utworzyć nagłówki ręcznie, korzystając z przykładów ndk jako przewodnika. –

+0

Dzięki Chris, zastanawiałem się nad dodaniem klasy narzędzi do androida za pomocą narzędzia java, ale nie mogłem tego znaleźć .. –

Odpowiedz

21

spróbuj dodać do swojej ścieżce klas:

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

Ścieżka uległa zmianie. teraz musi to być 'sdk/platforms/android-10/android.jar' – Enyby

14

znalazłem , to jak to idzie:

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

Spróbuj wykonać następujące czynności w Eclipse,

Idź do> Uruchom | Narzędzia zewnętrzne | Zewnętrzne konfiguracje narzędzi W programie Utwórz nową konfigurację, klikając małą ikonę.

Nazwij to.

Lokalizacja byłby: C: \ Program Files \ Java \ jdk1.7.0_04 \ bin \ javah.exe

katalog roboczy to: $ {workspace_loc:/My_First_NDK/bin/classes} i

Argumenty będą następujące: -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

Znalazłem, tak to wygląda:

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