如何使用 Ant 构建 Android 项目? (IntelliJ IDE)

Posted

技术标签:

【中文标题】如何使用 Ant 构建 Android 项目? (IntelliJ IDE)【英文标题】:How do I build an Android project using Ant? (IntelliJ IDE) 【发布时间】:2011-06-26 22:13:58 【问题描述】:

我在 IntelliJ IDEA IDE 中有一个项目,我想设置一个并行的生产 Ant 构建过程,我可以随着时间的推移进行扩展。

我使用 IntelliJ 的功能创建了一个 Ant 构建文件,它位于 Build 菜单上,因此 Ant 构建过程正在运行,并且在 IDE 中工作。都很好。

但 IntelliJ 创建的 Ant 脚本仅编译为类文件,并没有通过 APK 执行完整的 android 构建过程(据我所知)。

您能否指点我参考源(或示例)以帮助我了解如何让 ANT 脚本执行完整的 Android 项目构建?

如果您知道,知道如何扩展它以包括 Proguard、生产签名和插入生产 Maps 密钥也会很有用 :)

【问题讨论】:

【参考方案1】:

以此为起点:

http://developer.android.com/guide/developing/other-ide.html

我不了解 IntelliJ,但我不应该很难使用您需要的最常用命令创建一个 ant 文件。

更新:

运行以下命令:

android create project --target 8 --name "MyFirstProject" --path /path/to/project --activity StartingActivity  --package net.sample.package

这将创建一个项目结构。这包括一个 build.xml 文件,其中包含构建项目的目标。

要构建应用程序,请在根文件夹 (/path/to/project/) 中运行:

ant debug

它应该编译你的应用程序。

您可能需要安装或配置 ant 才能正常工作,但您应该能够自己解决! :)

(所有信息都在我之前发布的链接中)

【讨论】:

经过几个小时的深入研究,我现在了解到“android update project”可以在现有的Android项目文件夹中创建一个完整的Ant构建文件,以及一个默认的proguard.cfg文件. “android create project”会覆盖文件,所以要小心。 IntelliJ创建的build文件根本没有用,但是android创建的build文件在里面运行。我还发现项目的路径不能包含任何空格,如果有,Android 工具就会崩溃。我发现这个页面很有帮助androidengineer.com/2010/06/…【参考方案2】:

SDK 文档中对此进行了很好的描述。只需 3 个步骤即可使其发挥作用:

    假设您已经使用 IntelliJ Idea 这样强大的功能开发活动已有一段时间了。因此,正如 Ollie 在评论中提到的,您不必从头开始创建 android 项目。命令行运行:

    android update project --path "你的项目路径" --target "android-X"

    其中 X 是 API 级别

    在第一步之后 build.xml 被自动创建。现在您打开 IntelliJ,转到 ant 构建面板并添加该 build.xml。

    重要的一步是打开已创建任务的属性,并在执行选项卡的命令行中添加调试或发布。

现在您可以运行 target 并享受结果了。编译成签名版本需要更多的努力。

注意:您现有的项目结构应与 android 项目匹配。请查看文档。例如。我将外部库放在“lib”子文件夹中,并且只有在将“lib”重命名为“libs”后才能管理它

【讨论】:

以上是关于如何使用 Ant 构建 Android 项目? (IntelliJ IDE)的主要内容,如果未能解决你的问题,请参考以下文章

如何引用公共目录(不是库)中的外部 jar 文件来使用 ant 构建 android 项目?

Android 项目使用 Ant 构建良好,但出现运行时错误

使用 Ant 编译的 Android 项目无法编译,非法字符错误

Android Gradle 插件Gradle 构建工具简介 ② ( Android 项目构建打包流程 | 构建工具发展 -> 手动配置 -> Ant -> Maven -> Gradle )

使用 Ant 的 Android 自定义构建

Android:使用 Ant Release 构建 apk 时出现问题