【问题标题】:Android & Maven: Speed up project compilation and deployAndroid & Maven:加速项目编译和部署
【发布时间】:2012-11-16 12:29:01
【问题描述】:

有没有办法使用maven加快android项目的编译和部署到设备?

我在 IntelliJ Idea 中测试了一个空白 android 项目(使用“android create project”从命令行创建)的构建时间——从按下“运行”按钮到在设备上启动应用程序需要 4 秒。 然后我为其添加了 maven 支持 - 现在需要将近 7 秒。

对于更大的项目,它需要更多的时间。 例如,添加了 ActionBarSherlock 依赖的空白项目需要大约 25-30 秒的时间来编译、部署和运行。

有没有办法加快这个过程?

我想听听 Square 开发人员(尤其是 Jake Wharton)的回答:) 编译您的 android 项目需要多长时间?

【问题讨论】:

  • this answer 中提到的 AAPT 技巧可能会有所帮助。

标签: android maven


【解决方案1】:

我做的几件事让我有了一点进步:

  • 关闭调试版本的 dex 优化
  • 启用库预索引(这会减慢第一次构建,但会加快后续构建)

配置类似于:

<plugin>
    <groupId>com.jayway.maven.plugins.android.generation2</groupId>
    <artifactId>android-maven-plugin</artifactId>
    <inherited>true</inherited>
    <configuration>
        <!-- All your current configuration -->
        <dexOptimize>false</dexOptimize>
         <dex>
            <preDex>true</preDex>
            <preDexLibLocation>/tmp/predexedLibs</preDexLibLocation>
        </dex>
    </configuration>
</plugin>

顺便说一句,我怀疑增量编译器存在一些问题,并且每次所有代码都是从头开始重新编译的。

【讨论】:

  • 我有同样的问题,我的构建时间大约是 26 秒。我尝试了 rciovati 提到的设置,但 dexOptimize 标记中的设置为 false,我获得了 2 秒。以下是我使用的标签: !-- 你当前的所有配置 --> falsetrue/tmp/predexedLibs
  • 我想如果你使用相当数量的库会有更大的加速。
  • 我正在使用大约 15 个库,包括 android、兼容性等。问题是在构建过程中我可以看到 dex 命令仍然需要一些时间才能执行,即使这些库是 predexed 的。有什么想法吗?
  • 瓶颈在于 AFAIK(但也许我错了)Android Maven 插件不支持增量 dexing。
  • 谢谢。给我一点动力。
【解决方案2】:

Maven 3 具有多线程构建。我至少会尝试一下。鉴于你已经在 20 秒,它可能不会做太多,但它确实加快了我们更大的 maven 构建

mvn -T 4 clean install # Builds with 4 threads
mvn -T 1C clean install # 1 thread per cpu core
mvn -T 1.5C clean install # 1.5 thread per cpu core

Parallel builds in Maven 3

【讨论】:

    【解决方案3】:

    制作、部署和运行应用程序需要 25-30 秒?幸运的人!我正在使用 Windows 笔记本电脑...

    以下是我为加快发展而做的几件事:

    • 通过将模拟器映像和 SD 驱动器放在 SSD 上,我取得了一些不错的进展。
    • 从快照运行模拟器启动速度更快。
    • 如果可能的话,我可以在实际设备而不是仿真器上运行我的代码 - 根据实际设备,即使使用虚拟化仿真器,速度也会快得多(我的 Sony Xperia 上是 2 倍)。当然,这样做的缺点是您无法测试不同的 Android 版本和设备配置文件。

    但模拟器中的所有小变化仍然存在,部署通过 TCP/IP 堆栈进行,这是它的瓶颈。

    PS:我不是 Jake Wharton,也不认识他。但是,如果他可以更改部署中的某些内容,他应该这样做:-)

    【讨论】:

      【解决方案4】:

      您可以尝试为 MAVEN_OPTS 设置更高的 -Xms 和 -Xmx 选项。

      另外,请确保没有将idea中的maven配置为每次都下载/同步jar的存储库。

      你也可以通过一些不错的硬件升级;-)

      【讨论】:

      • -Xmx=1024M,下载/同步被禁用,在顶级macbook pro上运行:)
      • 这对我来说并没有什么不同
      【解决方案5】:

      答案有点奇怪,但 Jake Wharton 建议转到 gradle-builds,这确实是渐进式的。 还使用 Genymotion 代替 SDK 模拟器和 USB 设备让我大大减少了部署时间。

      所以现在我的构建时间从 ~1m 减少到 ~10-20sec。

      【讨论】:

        【解决方案6】:

        您可以尝试使用仅将增量更改上传到模拟器的工具:仅将更改的类推送到设备,应该可以节省一些时间。你可以试试这个工具:http://www.instareloader.com/download/使用“inirwetrust”作为密码

        【讨论】:

          猜你喜欢
          • 2011-07-03
          • 1970-01-01
          • 2016-10-30
          • 2012-08-31
          • 2021-06-25
          • 2016-10-27
          • 1970-01-01
          • 1970-01-01
          • 2018-04-02
          相关资源
          最近更新 更多