【问题标题】:Ant rebuilding library projects every time蚂蚁每次重建库项目
【发布时间】:2012-07-07 16:55:46
【问题描述】:

我有一个包含两个 Android 库项目的 Android 项目。

我正在使用命令ant debug 来构建项目,大约需要 1 分 20 秒。我算了一下,编译第一个android库项目用了17秒,编译第二个android库项目用了42秒。

由于这两个依赖项目很少更新,所以不需要每次都编译。

如何避免 ant 编译每个构建的两个 Android 库项目?

【问题讨论】:

  • 可以结合ivy依赖管理使用ant。或者从 ant 切换到 maven,具有自己的依赖管理。

标签: android caching ant compilation android-library


【解决方案1】:

当我的项目中有库时,我遇到了 Android 编译速度慢的问题,并通过将“--incremental”开关应用于 dex 工具解决了这个问题。见this question on SO

【讨论】:

    【解决方案2】:

    这就是 Android 库项目的设计方式和目前假设的工作方式,它总是与主应用程序项目编译一起间接编译,请参阅official dev guide

    但是,库项目与标准 Android 应用程序项目的不同之处在于,您无法将其直接编译为自己的 .apk 并在 Android 设备上运行。同样,您不能将库项目导出到自包含的 JAR 文件,就像对真正的库所做的那样。相反,您必须通过在依赖应用程序中引用库并构建该应用程序来间接编译库。

    ... ...

    发展考虑

    • 您不能将库项目导出到 JAR 文件

      库不能作为二进制文件(例如 JAR 文件)分发。这将在 SDK 工具的未来版本中添加。

    如何避免 ant 编译每个构建的两个 Android 库项目?

    你说的是一个预编译的jar文件。这里有一些帖子建议使用Eclipse export functionthe auto-generated jar under library project's bin directory,它可能适用于一些简单的情况,例如库项目包含纯Java文件,但如果库项目变得更复杂,包含Android资源文件,则无法使用。在这种情况下,有一些像this one 这样的肮脏黑客攻击,IMO 造成的麻烦比它解决的要多。

    Android 开发团队正在努力将 Android 库项目从基于源的机制更改为基于编译代码的库机制。更多细节在这个blog post。我建议等待官方开发团队的最终解决方案。

    【讨论】:

      【解决方案3】:

      添加 dont.do.deps=1 到您的 local.properties(或通过其他方式将此属性传递给 ant)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-18
        • 1970-01-01
        • 1970-01-01
        • 2015-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多