【问题标题】:Android NDK build with ANT script使用 ANT 脚本构建 Android NDK
【发布时间】:2011-11-17 22:44:58
【问题描述】:

我们可以将 ANT 脚本用于 Android NDK 构建吗? 如果是怎么办? 如果不是,那为什么不是?

我对此一无所知

【问题讨论】:

    标签: android ant build android-ndk


    【解决方案1】:

    从您的-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" 添加到 &lt;exec&gt; 任务 --- 如果 make 失败,这会导致 ant 中止。没有它,它将直接生成一个包含无效二进制文件的 APK。不好!

    【讨论】:

    • 谢谢 实际上已经完成了,但是忘记在这里编辑我所做的是这个
    • 在windows上,你必须使用sh作为可执行文件,并且ndk-build脚本作为第一个参数。
    • 这些 指令在哪个文件中? build.xml文件不是android工具生成的吗
    • 相信更新项目时自动 build.xml 生成器会尝试合并您自己的自定义,但我不使用它,所以我不知道你确定。
    • 您应该将此自定义构建步骤放在 custom_rules.xml 中,因为它包含在自动生成的 build.xml 中但未修改。
    【解决方案2】:

    正如其他人所说,这是要添加到您的 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 的帮助。但是已经给出并接受了答案:)
    • 希望这可以帮助其他人,但谢谢。
    • '.cmd' 部分在 windows 上很重要
    • 对于 windows,[...executable="${ndk.dir}/ndk-build"...] 应该是,[...executable="${ndk.dir}/ ndk-build.cmd"...] 根据@Hoang Tran 的评论
    猜你喜欢
    • 2011-11-16
    • 2010-11-12
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 2012-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多