java - Gradle 和用于 Android 构建的 Maven 存储库的悲伤

标签 java android android-studio gradle

在我不得不格式化我的 Macbook Pro 以进行一些愚蠢的公司域迁移之后,我一直对 Gradle for Android 构建感到无尽的悲痛。一年多来,我一直在使用 Gradle(命令行和 Android Studio)来构建我的项目,并且在全新安装之前从未遇到过问题。周末我花了无数个小时试图解决这个问题,但没有运气,我真的快把头发扯掉了!这就是我所坚持的:

Gradle 构建速度已经慢到爬行

我有一个多项目(或 Android 术语中的多模块)项目,过去需要大约 2 分钟才能完成干净的构建 - 加上将文件上传到(本地)Maven 存储库。现在,Gradle 配置阶段大约需要 8 分钟 !什么都没有改变,因为在 Mac 上进行全新设置后,我只是从 Github 存储库中提取了源代码,并且我正在使用使用版本 2.2.1 的 gradle 包装器(和以前一样)进行构建.不确定这是否重要,但我机器上的 Gradle 版本是 2.6 .我使用 Maven - 不是用于构建,而是用于本地 M2 存储库,Maven 版本是 3.3.3 . Maven 和 Gradle 都是使用 Homebrew 安装的。无论是命令行还是使用 Android Studio,Gradle 运行时都是相同的。我正在使用 Android Studio 版本 1.4-beta4 .以下是我设置的内容:

  • 我已经设置了 Maven settings.xml将本地 Maven 存储库指向默认位置 `${user.home}/.m2/repository
  • 我已经使用 Android Studio 和 Support 存储库设置了 Google 存储库(我的项目需要 Play 服务和支持库)
  • 我们需要将文件上传到我们构建服务器上的企业 Maven 存储库;为了回避这个问题,我使用 gradle.properties将存储库 URL 定义为在 Maven 设置中设置的本地 M2 存储库
  • 该项目定义了Android构建工具版本1.1.0 ,虽然这是旧版本,但我尝试使用最新的 1.3.1构建时间没有运气
  • 可能相关:我的 Mac Pro 使用了不错的硬盘驱动器,而不是较新的固态存储。虽然这会影响构建时间,但磁盘在格式化期间没有更新,而且我认为它不应该导致如此多数量级的影响

  • 从本地 M2 存储库解析工件失败

    我从事的主要项目是一个库,我们有用于验证功能的测试客户端。库和测试客户端在 Github 存储库中作为单独的项目进行维护。为了不必在我的本地开发设置中进行任何更改,我更喜欢将工件从我的库部署到我的本地 M2 存储库,然后让测试客户端在本地定义和解决依赖关系。我使用全局 gradle.properties 来完成此操作覆盖存储库 URL(将其指向本地 M2 存储库)。这在磁盘格式之前工作得很好,但从那以后就坏了。 Gradle 永远无法解析工件,但我可以在本地 M2 存储库中看到它们。我用谷歌搜索了高低(在 Gradle 论坛上,在 SO 上),但似乎无法弄清楚我错过了什么或做错了什么。作为一种解决方法,我将测试客户端作为模块添加到库项目中,并将其构建为单个多模块项目。顺便说一句,即使这样,我仍然遇到我上面提到的缓慢的 Gradle 构建时间问题。

    有人可以帮我吗?

    最佳答案

    所以有几个问题你必须解决:
    1. gradle 没有解析本地仓库中的artefacts
    - 可能它在格式化过程中损坏(使用 maven 设置测试项目
    仅它的构建,如果您想验证,请指定一些现有的依赖项)。
    重新设置 repo 可以解决这个问题。
    2. gradle build 很慢
    好吧,没有更多信息很难解决。您是否刷新了依赖项、清理了缓存、在 GRADLE_USER_HOME 中有足够的可用磁盘空间?

    关于java - Gradle 和用于 Android 构建的 Maven 存储库的悲伤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32710201/

    相关文章:

    java - Kafka 中的错误 JSON - Spring Cloud Stream Kafka Binder

    Android的cardView + RecyclerView布局中的滚动功能

    android - 有没有办法判断是否收到了 LocalBroadcastManager 广播?

    android - 如何离线安装android studio

    java - 无法解析辅助功能服务类中的 getIntent() 方法

    android - 在某些设备上完成 Android 的应用内灵活更新过程后,应用不会自动重启

    java - eclipse 找不到主类

    java - jaxb 抛出 javax.xml.bind.UnmarshalException : Expected elements are (none) only when running in osgi bundle

    没有实现的 Java Cloneable

    android - 如何同时在多个设备上运行 Monkeyrunner 脚本