【发布时间】:2011-11-17 22:44:58
【问题描述】:
我们可以将 ANT 脚本用于 Android NDK 构建吗? 如果是怎么办? 如果不是,那为什么不是?
我对此一无所知
【问题讨论】:
标签: android ant build android-ndk
我们可以将 ANT 脚本用于 Android NDK 构建吗? 如果是怎么办? 如果不是,那为什么不是?
我对此一无所知
【问题讨论】:
标签: android ant build 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>
然后您可以将ndk.dir 设置为从您的local.properties 文件指向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> 任务 --- 如果 make 失败,这会导致 ant 中止。没有它,它将直接生成一个包含无效二进制文件的 APK。不好!
【讨论】:
sh作为可执行文件,并且ndk-build脚本作为第一个参数。
正如其他人所说,这是要添加到您的 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"
【讨论】: