使用ANT脚本构建Android NDK

23

我们能否使用ANT脚本进行Android NDK构建? 如果可以,应该如何操作呢? 如果不能,那么为什么不行呢?

对此我没有任何想法。

2个回答

43

在你的-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。不好!


2
实际上已经完成了,但是忘记在这里编辑我所做的是这样的 <target name="n"><echo message="开始进行Android NDK构建步骤..." /> <!-- 构建JNI代码并创建由应用程序加载的共享对象 --> <exec executable="sh" failonerror="yes" > <arg value="${env.ANDROID_NDK_ROOT}/ndk-build" /> <arg value="V=1" /> </exec> <echo message="...完成Android NDK构建步骤。" /></target> - Sachchidanand
2
在Windows上,您必须使用sh作为可执行文件,并将ndk-build脚本作为第一个参数。 - Tom Whittock
1
你应该将这个自定义构建步骤放在custom_rules.xml中,因为它已经包含在自动生成的build.xml中,但没有被修改过。 - user2746401
在Windows上使用:ndk-build.cmd而不是ndk-build - Peterdk
它告诉Ant构建名为“release”的目标,这是生成发布模式apk文件的标准Android规则的一部分(如果我没记错的话)。 - David Given
显示剩余3条评论

9

正如其他人所说,以下是应添加到您的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"


感谢 j2emanue 的帮助。但是答案已经被给出并且已经被接受了 :) - Sachchidanand
希望这能帮助到其他人,这是我的初衷,不过还是谢谢。 - j2emanue
3
在Windows中,'.cmd'部分很重要。 - Hoang Tran
对于Windows系统,应该将[...executable="${ndk.dir}/ndk-build"...]更改为[...executable="${ndk.dir}/ndk-build.cmd"...],根据@Hoang Tran的评论。 - hyena
尝试使用Visual Studio安装的ant来从C++源代码构建APK,运行ccmd: - Sixjac

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接