Android-ndk - 用于cygwin的ndk-build的简单构建脚本

时间:2011-10-04 14:35:07

标签: android bash cygwin android-ndk

我正在尝试制作一个可以在windows和unix系统上运行的简单构建脚本。 如果是windows,脚本将从cygwin运行,否则只是一个标准的shell。

该脚本将执行以下操作:

  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 / platforms / android-8 / android.jar com.test.MyTest
  5. cd ..
  6. 运行$ NDK_ROOT / ndk-build
  7. 我不确定使用什么样的脚本语言及其语法,我只知道它大致如上所述。关于如何进行的任何想法?

4 个答案:

答案 0 :(得分:5)

在我看来,您已经编写了脚本,只需要进行一些修改:

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


注意:您可能必须在Windows上修改脚本的sdk / ndk路径。

答案 1 :(得分:4)

如果您正在使用Eclipse,我建议为此任务创建一个新的启动器。打开项目属性,然后从左侧窗格中选择“构建器”。我们希望最终得到这个:

Project builders

单击“新建...”并创建一个新的程序启动器:

New program launcher

填写ndk-build的路径(我建议将其添加到您的系统路径,以便您不需要如图所示的绝对路径)和项目工作区:

NDK builder properties

这应该已经有效,但我们可以限制在完成时刷新哪些资源:

  1. 点击“刷新”标签
  2. 选中“完成后刷新资源”
  3. 检查“特定资源”
  4. 点击“指定资源”
  5. 找到项目中的libs文件夹并选择它(以及受ndk-build影响的所有其他文件夹,如果适用)
  6. Refresh working set

    最后,我们可以在运行NDK Builder时限制(即仅在JNI源更改时):

    1. 点击“构建选项”标签
    2. 选中“指定相关资源的工作集”
    3. 点击“指定资源”
    4. 找到项目中的jni文件夹并选择它(或者您拥有JNI源文件的地方,以及应该触发新ndk-build的任何其他文件)
    5. Build options

      我希望这会让您的构建过程更轻松!

答案 2 :(得分:0)

我想我在这里遗漏了一些东西。您当然可以通过Cygwin或Unix / Linux在Windows上运行shell脚本(.sh)。你有特定的问题吗?

另外,请确保脚本中有“#!/ bin / bash”文件前缀。

答案 3 :(得分:0)

Ant怎么样?据我所知,它可以从Win和Linux运行......而且你必须为两者编写一次目标代码。如果你坚持的话,甚至可以在.bat和.sh中调用Ant。