Установка и использование Android NDK в Eclipse - PullRequest
45 голосов
/ 12 августа 2010

Я уже некоторое время использую Android SDK в Eclipse (MAC OSX). Я скачал NDK и установил инструменты C / C ++ в Eclipse, но кто-нибудь может мне помочь с использованием NDK? Например, я просто создаю проект Android, как обычный, и собираю его вместо NDK?

Действительно мог бы сделать достойный урок, если кто-нибудь знает о них.

РЕДАКТИРОВАТЬ: ОК, так что сейчас у меня установлен NDK (я думаю), но есть ли у кого-нибудь идеи, как его использовать? Я дошел до этого (взято из здесь ):

Запустить терминал

cd ~ / android-ndk-1.5_r1

make APP = hello-jni

Чтобы запустить пример приложения hello-jni, но я получаю сообщение об ошибке в терминале, говорящее:

Android NDK: переменная APP определена как неизвестные приложения: hellojni
Android NDK: вы можете использовать одно из следующего:
build / core / main.mk: 81: *** Android НДК: прерывание. Стоп.

Есть идеи почему?

Ответы [ 5 ]

25 голосов
/ 15 апреля 2012

Как я могу описать, создание приложения для Android из Eclipse, использующего NDK, требует двух шагов.

Во-первых, внутри вашего терминала вам нужно запустить скрипт сборки NDK для вашего проекта. Перейдите в корневой каталог вашего проекта и выполните сценарий ndk-build в этом каталоге.

Например:

cd ~/workspace/hello-jni
./~/android-ndk-1.5_r1/ndk-build

После этого вы должны увидеть некоторые результаты, которые приведут к созданию файла * .SO в каталоге obj в каталоге вашего проекта.

Как только у вас есть файл * .SO, последний шаг к созданию приложения с Android NDK через Eclipse - это построить его с Eclipse, как и любое другое приложение, а затем развернуть его для тестирования.

Если вы вносите какие-либо изменения в код C / C ++, вам нужно будет повторить первый шаг и заново создать файл * .SO перед сборкой и развертыванием приложения из Eclipse.

Я хотел бы отметить, что с помощью Android NDK ваши приложения для Android по-прежнему основаны на Java. Они просто общаются с кодом, написанным на C / C ++, с помощью собственного интерфейса Java .

Наконец, я не знаю ни одного плагина Eclipse, который поможет в разработке NDK. Все, что я знаю о NDK, я изучил в официальной документации Android NDK . Пожалуйста, не стесняйтесь комментировать и дайте мне знать, если что-нибудь я смогу уточнить в своем ответе.

12 голосов
/ 21 сентября 2013

Встроенная поддержка разработки и отладки появилась в среде Eclipse начиная с версии ADT 20. http://tools.android.com/recent/usingthendkplugin

  • Установить путь к NDK из настроек Eclipse -> Android -> NDK
  • Щелкните правой кнопкой мыши свой проект и выберите «Инструменты Android» -> «Добавить встроенную поддержку»

developer.android.com заявляет, что вам также нужен Cygwin.

http://developer.android.com/tools/sdk/ndk/index.html#Contents

Необходимые средства разработки

  • Для всех платформ разработки требуется GNU Make 3.81 или более поздняя версия. Более ранние версии GNU Make могли бы работать, но не были протестированы.
  • Требуется также последняя версия awk (GNU Awk или Nawk).
  • Для Windows требуется Cygwin 1.7 или выше. NDK не будет работать с установками Cygwin 1.5.
5 голосов
/ 16 апреля 2012

Каталог docs в NDK содержит довольно хорошую информацию о том, как использовать сам NDK.Прочитайте обзор HTML-документов Application.mk и Android.mk.Вы захотите поискать PDF-файл Sun JNI в Google, скачать его и узнать, что такое JNI, прежде чем идти дальше.Это потому, что простая компиляция набора кода C / C ++ в библиотеки с помощью NDK - это только часть процесса.Вы должны написать собственный код Java, который вызывает ваш C / C ++, и вы должны создать функции-оболочки в C / C ++, которые придерживаются соглашений JNI, которые может вызывать собственный код Java.JNI существует уже давно, это никак не связано с Android.Таким образом, вы можете узнать об этом достаточно далеко, следуя учебным пособиям, ориентированным на JNI, используя инструменты командной строки, такие как javah и javac, а затем вернуться к интеграции с NDK после того, как узнаете основы.(Для примера того, как эти C-образные шайбы выглядят, взгляните на пример hello-jni в NDK; исходный файл C обычно показывает, как выглядят эти шайбы. Использование javah для генерации этих шайбвы создаете классы Java, которые имеют нативные методы, обрабатывают их с помощью javah, и он генерирует заголовки C для вас, а затем вы кодируете функции C, которые придерживаются сгенерированных прототипов функций).

Примечание: хотя в документах NDK вы собирали вручную из командной строки, а затем переходили в Eclipse для создания своего приложения (безусловно, трудоемкая последовательность шагов, особенно если вы меняете код C / C ++), получается, что вы можете легко интегрироваться с Eclipse, так что NDK запускается каждый раз, когда вы собираете из Eclipse.Чтобы увидеть, как, читайте здесь .

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

Это в интересах других, кто хочет создать проект с нуля из затмения: я выполнил шаги, упомянутые здесь в этом блоге, и он отлично работает: http://mhandroid.wordpress.com/2011/01/23/using-eclipse-for-android-cc-development/

1 голос
/ 31 марта 2013

Чтобы попытаться ответить на вопрос напрямую - вам нужно запустить ndk-build в папке с собственным кодом внутри папки вашего проекта. Это создает .so файлы, найденные в дереве файлового обозревателя / ресурсов под jni в Eclipse. Эти функции, если синтаксис в коде правильный, теперь можно вызывать из вашего кода Java.

Я нашел много источников помощи, когда установил и освоил Android Developer Tools и NDK. Я написал сообщение в блоге , чтобы поделиться своим опытом и, надеюсь, передать сообществу, которое мне помогло, что поможет понять мой ответ: http://workingmatt.blogspot.co.uk/2013/03/set-up-android-sdk-and-ndk.html

...