2011-10-04 85 views
6

我试图制作一个可以在windows和unix系统上工作的简单构建脚本。 该脚本将从cygwin运行,如果Windows,否则只是一个标准的shell。Android-ndk - 用于cygwin的ndk-build的简单构建脚本

该脚本将执行以下操作:

  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-建立

我不知道要用什么样的脚本语言,也没有它的语法,我只知道它会大致样子以上。关于如何进行的任何想法?

回答

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 


同时,确保JAVAH在PATH环境变量存在。
如果不存在的话,你可以在一开始将其添加到脚本:

的Windows
SET PATH=c:\path\to\javah;%PATH%

的Unix
export PATH=/path/to/javah:$PATH


注意:你可能有在Windows上修改脚本的sdk/ndk路径。

+0

是的,这正是我正在寻找的!但是,当试图在Cygwin中运行unix脚本时,我得到以下内容:#1:“第5行:$'\ r':命令不存在。” #2:“没有这样的文件或目录:Android/bin /(尽管它确实存在于脚本的位置)” – KaiserJohaan

+0

你是从bash cygwin shell启动脚本(unix)吗?你能告诉我一个截图吗? – aayoubi

+0

@KaiserJohaan'\ r'表明在bash脚本中有一个Windows“换行符”字符。尝试使用Unix风格的换行符保存它。 (例如,在记事本++:编辑菜单中,EOL转换) –

4

如果您使用Eclipse,我会建议为此任务创建一个新的启动器。打开你的项目属性,并从左侧窗格中选择Builders。我们希望与该结束了:

Project builders

点击“新建...“创建一个新的程序启动:

New program launcher

在路径ndk-build填充(我建议将它添加到系统路径,这样就不需要为描绘的绝对路径)和项目工作:

NDK builder properties

这应该已经工作,但我们可以限制哪些资源完成后刷新:

  1. 点击“刷新”选项卡
  2. 检查
  3. 检查“特殊资源”
  4. 点击“指定资源”
  5. 找到libs文件夹中的项目,并选择它“完成时刷新资源”(以及任何受ndk-build其他文件夹,如适用)

Refresh working set

最后,我们可以限制 NDK生成器应该运行(即只有当JNI源的变化):

  1. 单击“构建选项”选项卡
  2. 检查“指定工作组相关资源的”
  3. 点击“指定资源”
  4. 找到jni文件夹中的项目,并选择它(或你有JNI的源文件,以及任何其他文件应该触发一个新的ndk-build

Build options

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

+0

我最好寻找一个可以在cygwin中独立运行的.sh脚本解决方案 – KaiserJohaan

+1

Hi @Paul这表明我在Eclipse中出现错误“Build Failed”。它给出了这个错误:'Exception occurred executed command line。 无法运行程序“D:\ android-ndk-r5b \ ndk-build”(在目录“D:\ All Data \ WorkSpace \ MainBrowserActivity”中):CreateProcess错误= 193,%1不是有效的Win32应用程序。有任何解决方案 –

+0

'ndk-build'不是Windows可执行文件。您只能在基于Unix的系统上或通过Cygwin运行它。截图是在Windows上进行的,因为我在这里从Cygwin运行Eclipse。通常我更喜欢在Ubuntu下使用本地代码开发应用程序。 –

0

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

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

0

蚂蚁呢?据我所知,它可以从Win以及Linux运行...并且你必须为两个目标只编写一次目标。如果你坚持,你甚至可以在.bat和.sh中打电话给Ant。