我们能否使用ANT脚本进行Android NDK构建? 如果可以,应该如何操作呢? 如果不能,那么为什么不行呢?
对此我没有任何想法。
我们能否使用ANT脚本进行Android NDK构建? 如果可以,应该如何操作呢? 如果不能,那么为什么不行呢?
对此我没有任何想法。
在你的-pre-build
目标中调用ndk-build
,像这样:
<target name="-pre-build">
<exec executable="${ndk.dir}/ndk-build" failonerror="true"/>
</target>
<target name="clean" depends="android_rules.clean">
<exec executable="${ndk.dir}/ndk-build" failonerror="true">
<arg value="clean"/>
</exec>
</target>
你可以在local.properties
文件中设置ndk.dir
指向NDK目录,或在命令行上设置它。我通常这样做:
ant -Dsdk.dir=/home/dg/apps/android-sdk-linux_x86-r11/ -Dndk.dir=/home/dg/apps/android-ndk-r6b release
现在运行ant将自动构建您的本地代码。另外,运行'ant clean'将清理您的本地代码。
更新: 将failonerror="true"
添加到<exec>
任务中---这会导致ant在make失败时中止。没有它,它会继续生成一个具有无效二进制文件的APK。不好!
正如其他人所说,以下是应添加到您的build.xml中的内容:
<target name="-pre-build">
<exec executable="${ndk.dir}/ndk-build" failonerror="true"/>
</target>
<target name="clean" depends="android_rules.clean">
<exec executable="${ndk.dir}/ndk-build" failonerror="true">
<arg value="clean"/>
</exec>
</target>
在local.properties文件中定义ndk.dir: ndk.dir=C:\EclipseWorkspace\android-ndk-r8d
这样做后,当您运行ANT覆盖目标时,会出现错误“%1不是有效的Win32应用程序”。 对于我来说,我必须升级到NDK R8d,并更新以下行,以便它获取ndk-build.cmd(此版本的ndk可以在Windows上运行并通过cygwin运行:
exec executable="${ndk.dir}/ndk-build.cmd" failonerror="true"
sh
作为可执行文件,并将ndk-build脚本作为第一个参数。 - Tom Whittockndk-build.cmd
而不是ndk-build
。 - Peterdk