Android NDK в Eclipse :: (Невозможно запустить программу "ndk-build": неизвестная причина) - PullRequest
7 голосов
/ 08 марта 2012

Я схожу с ума, пытаясь построить свой проект NDK из затмения с помощью плагина CDT, и я получаю ошибку: -

NDK (Cannot run program "ndk-build": Unknown reason)

Приложение работает, но я теряю весь вывод консоли для процесса сборки, это кошмар при попытке компиляции, и я должен сделать это в командной строке.

Вот как я туда попал: -

I Downloaded and installed the CDT plugin for Eclipse.

Тогда:

Added my JNI folder and also your Android.mk in the JNI directory.

Тогда:

Go FILE / NEW / OTHER /C/C++ / ( Convert to a C/C++ Project )

При настройке моей цели сборки:

Check the project, choose MakeFile Project and Other Toolchain click NEXT

Тогда, наконец, в свойствах проекта:

PROJECT / PROPERTIES / C/C++ uncheck " use default build command" replace "make" with "ndk-build" 

Затем при сборке выдает ошибку на консоль. Хотя он компилируется и выполняет сборку, которая выполняется на устройстве, я не вижу никаких результатов сборки.

В моем .bash_profile есть «ndk-build» со следующими переменными:

:$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools:$ANDROID_NDK

Я могу скомпилировать с помощью ndk-build из командной строки. Похоже, что Затмение не может видеть мой ПУТЬ:

Это на Mac OSX, в Helios версии 2.

РЕДАКТИРОВАТЬ: Хорошо, так что это хорошо компилируется, и вывод из сборки на самом деле скрыт под этим сообщением, это далеко от идеала, так как, когда мне нужно просмотреть, какие элементы были построены, я не могу их скрыть. Как мне от этого избавиться?

Ответы [ 10 ]

13 голосов
/ 23 мая 2012

В моем случае мне нужно было указать полный путь к моей команде ndk-build в eclipse, чтобы она могла построить:

Eclipse -> Ваш Prj -> Правый клик -> Сборка C / C ++ -> Группа «Построитель»: значение для «Команда сборки» должно быть полным путем, как показано ниже (вместо просто «ndk-build»)

/ Пользователи / vshakya / MySoftware / android-ndk-r8 / ndk-build

Я надеюсь, что это поможет другим в будущем, потому что я потратил 30 минут, чтобы понять это.

5 голосов
/ 14 марта 2012

Пожалуйста, обратитесь по этой ссылке для конфигурации NDK в Android

http://odroid.foros -phpbb.com / t181-хау к установке-андроид-NDK

4 голосов
/ 16 августа 2012

У меня была такая же проблема, и хотя описание установки * NDK в http://developer.android.com/tools/sdk/ndk/index.html#Installing хорошее, оно не охватывает решение этой частой проблемы.

Eclipse, кажется, позволяет вам конфигурировать вещи в нескольких местах, вы можете делать глобальные изменения через меню Window или проектировать определенные конфигурации через опцию Properties. Проще всего добавить полный путь для ndk-build (ndk-build.cmd для windows) в {Свойства; Сборка команд C / C ++} Build.

4 голосов
/ 14 марта 2012

Это может показаться глупым, но вы проверили, есть ли несколько консолей? Я могу представить, что есть одно для сообщения, которое вы цитировали, и другое для вывода сборки.

См. Также this : ответ содержит интересную ссылку, касающуюся настройки, но также связанную с интеграцией затмения.

3 голосов
/ 11 сентября 2013

В моем случае мне нужно было указать полный путь к моей команде ndk-build.cmd в eclipse, чтобы она могла построить:

Eclipse -> Ваш Prj -> Правый клик -> C / C ++ Build

C: \ Prateek \ android-ndk-r9 \ ndk-build.cmd

3 голосов
/ 17 марта 2012

Секвойя твой друг.Это часть Eclipse с момента выпуска Indigo.

http://www.eclipse.org/sequoyah/

3 голосов
/ 16 марта 2012

Более простое решение, сборка с помощью команды ndk-build из пути проекта eclipse:

$PROJECT>ndk-build

Каждый раз, когда вы меняете свой собственный код.

Чтобы скомпилировать в eclipse, я следовал следующимшаги:

  • Создайте проект eclipse.
  • Добавьте собственный код (.cpp) в папку jni
  • Создайте Android.mk и Application.mk, как правило, в соответствии сструктура
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_SRC_FILES := $$Add source files$$

LOCAL_LDLIBS := -lpcap

LOCAL_MODULE := libtest

LOCAL_C_INCLUDES := $$Path of the header files used$$

include $(BUILD_SHARED_LIBRARY)

----------------

Aplication.mk depends that the type of options you want
  • При выдаче предупреждений о затмении наведите курсор мыши на часть кода jni и установите флажок «преобразовать проект в собственный код», и проект будет преобразован автоматически.

При следующей компиляции будет вызван ndk-build V = 1, скомпилированный нативный код, а затем скомпилированная часть Android.

ПРИМЕЧАНИЕ:

Вы должныуметь использовать ndk-build во всех папках вашей системы.Команда определяет, где был вызван, и ищет папку jni, чтобы использовать Android.mk для компиляции всего собственного кода.

Основная структура, которая ищет:

  • $ PROJECT> jni /
    • / Android.mk
    • / Application.mk
    • / code.cpp

Но вы можете изменить Android.mk для поиска кода другими путями.

Надеюсь, он вам поможет!

2 голосов
/ 16 марта 2012

На тот случай, если вы как-то видите только свой стандартный вывод, а не стандартный вывод, попробуйте перенаправить свой стандартный вывод на стандартный вывод.

ndk-build 2> & 1

1 голос
/ 17 октября 2013

обязательно используйте "absolutepath \ ndk-build.cmd" вместо "absolutepath \ ndk-build" в Windows. Компилируется без ошибок с добавлением .cmd

0 голосов
/ 19 октября 2013

В дополнение к системной среде.

В Eclipse вам также нужно перейти в настройки-> c / c ++ Build -> environment. Добавьте новую переменную с именем «NDKROOT» и значением, указанным в пути установки NDK.

Это работает для меня.

...