Android-ndk - простой скрипт сборки для ndk-сборки для cygwin - PullRequest
6 голосов
/ 04 октября 2011

Я пытаюсь сделать простой сценарий сборки, который бы работал на системах Windows и Unix.Скрипт должен запускаться из Cygwin, если Windows, в противном случае просто стандартная оболочка.

Сценарий выполнит следующее:

  1. установит переменную каталога SDK_ROOT в '/ cygdrive / C / PROGRA ~ 2 / Android / android-sdk /'
  2. установите переменную каталога NDK_ROOT в '/ cygdrive / C / PROGRA ~ 2 / android-ndk-r6b'
  3. cd Android / bin /
  4. запустите javah -d ../../test / mytest / -classpath.: $ SDK_ROOT / platform / android-8 / android.jar com.test.MyTest
  5. cd ..
  6. выполнить $ NDK_ROOT / ndk-build

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

Ответы [ 4 ]

5 голосов
/ 11 октября 2011

Мне кажется, что вы уже написали скрипт, ему просто нужно несколько модификаций:

Windows myscript.cmd

@ECHO OFF
setlocal

SET SDK_ROOT=C:\PROGRA~2\Android\android-sdk\
SET NDK_ROOT=C:\PROGRA~2\android-ndk-r6b\
CD Android/bin/
javah -d ../../test/mytest/ -classpath .:%SDK_ROOT%/platforms/android-8/android.jar com.test.MyTest
CD ..
RUN %NDK_ROOT%/ndk-build

endlocal

Unix myscript.sh

#!/bin/bash
SDK_ROOT="/cygdrive/C/PROGRA~2/Android/android-sdk/"
NDK_ROOT="/cygdrive/C/PROGRA~2/android-ndk-r6b"
cd Android/bin/
javah -d ../../test/mytest/ -classpath .:${SDK_ROOT}/platforms/android-8/android.jar com.test.MyTest
cd ..
$NDK_ROOT/ndk-build


Также убедитесь, что в переменной PATH env присутствует javah.
Если его нет, вы можете добавить его в сценарии в начале:

Windows SET PATH=c:\path\to\javah;%PATH%
Unix export PATH=/path/to/javah:$PATH


Примечание. Возможно, вам придется изменить пути sdk / ndk для скрипта в Windows.

4 голосов
/ 07 октября 2011

Если вы используете Eclipse, я бы предложил создать новую программу запуска для этой задачи.Откройте свойства вашего проекта и выберите Builders на левой панели.Мы хотим закончить с этим:

Project builders

Нажмите «Новый ...» и создайте новую программу запуска программы:

New program launcher

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

NDK builder properties

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

  1. Нажмите вкладку «Обновить»
  2. Установите флажок «Обновить ресурсы после завершения»
  3. Установите флажок «Определенные ресурсы»
  4. Нажмите «Указать ресурсы»
  5. Найдите папку libs в своем проекте и выберите ее (и все дополнительные папки, затронутые ndk-build, еслиприменимо)

Refresh working set

Наконец, мы можем ограничить , когда NDK Builder должен работать (а именно только при изменении источника JNI):

  1. Перейдите на вкладку «Параметры сборки»
  2. Отметьте «Указать рабочий набор соответствующих ресурсов»
  3. Кликk "Укажите ресурсы"
  4. Найдите папку jni в своем проекте и выберите ее (или там, где у вас есть исходные файлы JNI, а также любые дополнительные файлы, которые должны вызвать новый ndk-build)

Build options

Надеюсь, это облегчит процесс сборки!

0 голосов
/ 13 октября 2011

А как насчет муравья? Насколько я знаю, он может быть запущен как из Win, так и из Linux ... и вам придется кодировать свои цели только один раз для обоих. Если вы настаиваете, вы даже можете сделать вызов Ant для .bat и .sh.

0 голосов
/ 11 октября 2011

Полагаю, мне здесь чего-то не хватает.Вы, конечно, можете запустить скрипт оболочки (.sh) в Windows через Cygwin или в Unix / Linux.У вас есть конкретные проблемы?

Также убедитесь, что в вашем скрипте есть префикс файла "#! / Bin / bash".

...