Android NDK: параметр Eclipse и Java - PullRequest
2 голосов
/ 16 февраля 2012

Я часами часами не двигался ни на шаг вперед. Я несколько раз переделывал проект, и больше ничего не осталось за пределами мест. Надеюсь, что кто-то здесь может пролить свет, указывая в каком-то направлении.

На панели Linux Eclipse IDE> Выполнить> Внешние инструменты> Конфигурации внешних инструментов:

Name: Dev javah
Tab [main]:
* location: /usr/java/jdk1.6.0_25/bin/javah
* working directory: ${workspace_loc:/Dev/bin}
* Arguments: ??

Я пробовал:

* Arguments: -d ${workspace_loc:/Dev/jni} com.dev.DevActivity ${project_classpath:Dev} com.pkgpub.DevActivity

, что дает мне:

1 error
javadoc: error - Illegal package name: "/home/user/dev/Dev/bin/classes"

а также пробовал:

* Arguments: -d ${workspace_loc:/Dev/jni} com.dev.DevActivity

Это дает ...

error: cannot access com.dev.DevActivity
class file for com.dev.DevActivity not found
javadoc: error - Class com.dev.DevActivity not found.
Error: No classes were specified on the command line.  Try -help.

аналогично -

* Arguments: -d ${workspace_loc:/Dev/jni} com.pkgpub.DevActivity

Это дает мне:

error: cannot access com.pkgpub.DevActivity
class file for com.pkgpub.DevActivity not found
javadoc: error - Class com.pkgpub.DevActivity not found.
Error: No classes were specified on the command line.  Try -help.

Но когда я бегу:

which javah
/usr/bin/which: no javah in (/usr/lib64/qt-3.3/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/user/android-sdks/tools:/home/user/android-sdks/platform-tools:/opt/android/android-ndk-r7:/home/user/.local/bin:/home/user/bin:/home/user/android-sdks/tools:/home/user/android-sdks/platform-tools:/opt/android/android-ndk-r7:/home/user/android-sdks/tools:/home/user/android-sdks/platform-tools:/opt/android/android-ndk-r7)

Вопрос в том, что ... проект не компилируется, потому что javah не виден в Eclipse NDK или из-за деталей параметров чего-то не хватает? И в таком случае как это исправить?

Спасибо.

Ответы [ 3 ]

2 голосов
/ 16 февраля 2012

попробуйте добавить

-класс пути классов / классы

как параметр для javah

1 голос
/ 04 мая 2012

Специально для Android:

используйте классы сразу после bin, как project_location/bin/classes, у меня это работало в Linux Fedora

javah -d /var/www/project/jni/ -classpath /var/www/project/bin/classes/ com.android.TestClass
0 голосов
/ 17 февраля 2012

@ BlackBelt - спасибо человеку за ваше предложение!

Вот параметр, который сработал, решая сторону javah для процесса компиляции:

-d ${workspace_loc:/Dev/jni} com.pkgpub.Dev -classpath ${workspace_loc:/Dev/bin/classes/} com.pkgpub.Dev

Где pkgpub - имя пакета, а Dev - имя проекта. Стоит отметить, что в проекте есть файлы: \ src \ Dev.java; \ JNI \ dev.c; \ JNI \ Dev.h; \ Бен ... \ pkgpub \ Dev.class.

Теперь он генерирует файл jni / com_pkgpub_Dev.h с правильным содержимым. Что здорово!

Однако ndk-build все еще не полностью связывается и не генерирует файл com_pkgpub_Dev.c. Итак, из Project> Project Build - приходит сообщение:

**** Build of configuration Build (GNU) for project Dev ****
ndk-build 
make: *** No rule to make target `jni/com_pkgpub_Dev.c', needed by `obj/local/armeabi/objs/dev/com_pkgpub_Dev.o'.  Stop.
**** Build Finished ****

Из этого сообщения звучит так, как будто в файле отсутствует какой-либо параметр /jni/Android.mk:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_CFLAGS    := -DHAVE_INTTYPES_H
LOCAL_MODULE    := dev
LOCAL_SRC_FILES := com_pkgpub_Dev.c Dev.c
include $(BUILD_SHARED_LIBRARY) 

Чтобы решить эту проблему, просто необходимо создать отсутствующий файл "jni / com_pkgpub_Dev.c". Это содержимое файла должно быть сделано вручную на основе автоматически сгенерированного кода, содержащегося в файле "jni / com_pkgpub_Dev.h".

Теперь это работает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...