zoukankan      html  css  js  c++  java
  • 优化Android Studio/Gradle构建

    优化Android Studio/Gradle构建
           使用Android Studio进行开,随着项目的增大,依赖库的增多,构建速度越来越慢,现在最慢要6分钟才能build一个release的安装包,在网上查找资料,发现可以通过一些配置可以加快速度,这里跟大家分享一下。
    开启gradle单独的守护进程

    在下面的目录下面创建gradle.properties文件:

    • /home/<username>/.gradle/ (Linux)
    • /Users/<username>/.gradle/ (Mac)
    • C:Users<username>.gradle (Windows)
    • 把下面配置复制gradle.properties文件也可以优化:
      1. # Project-wide Gradle settings.
      2. # IDE (e.g. Android Studio) users:
      3. # Settings specified in this file will override any Gradle settings
      4. # configured through the IDE.
      5. # For more details on how to configure your build environment visit
      6. # http://www.gradle.org/docs/current/userguide/build_environment.html
      7. # The Gradle daemon aims to improve the startup and execution time of Gradle.
      8. # When set to true the Gradle daemon is to run the build.
      9. # TODO: disable daemon on CI, since builds should be clean and reliable on servers
      10. org.gradle.daemon=true
      11. # Specifies the JVM arguments used for the daemon process.
      12. # The setting is particularly useful for tweaking memory settings.
      13. # Default value: -Xmx10248m -XX:MaxPermSize=256m
      14. org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
      15. # When configured, Gradle will run in incubating parallel mode.
      16. # This option should only be used with decoupled projects. More details, visit
      17. # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
      18. org.gradle.parallel=true
      19. # Enables new incubating mode that makes Gradle selective when configuring projects. 
      20. # Only relevant projects are configured which results in faster builds for large multi-projects.
      21. # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:configuration_on_demand
      22. org.gradle.configureondemand=true
      复制代码
      同时上面的这些参数也可以配置到前面的用户目录下的gradle.properties文件里,那样就不是针对一个项目生效,而是针对所有项目生效。
      上面的配置文件主要就是做, 增大gradle运行的java虚拟机的大小,让gradle在编译的时候使用独立进程,让gradle可以平行的运行。

      1.申请大内存

      installation pathstudio64.exe.vmoptions or studio.exe.vmoptions

      使用文本编辑器打开,找到起始两行,如下

      -Xms128m
      -Xmx750m


      修改最小值和最大值,建议为

      -Xms256m
      -Xmx2048m

        2 优化编译

         file->setting->compile

         勾选除第二项之外的其他选项,并在VM options里填入:

         -Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8


    经过测试,编译速度有很大提升,比较大的项目从之前的5-8分钟可以减少到1-2分钟。

    用命令行Build

    可以参考这个讨论串

    https://plus.google.com/u/0/+RicardoAmaral/posts/e9PG6vSN5w3

    gradle assembleDebug

    实测速度快50%左右 原理不明

    回头写个脚本 build完成再自动安装运行应该就好了


    我觉得TMD还是把公司的破电脑扔了换个新的才能从根本上解决问题


    第二篇:

    已经使用Android Studio进行开发超过一年,随着项目的增大,依赖库的增多,构建速度越来越慢,现在最慢要6分钟才能build一个release的安装包,在网上查找资料,发现可以通过一些配置可以加快速度,这里跟大家分享一下。

    开启gradle单独的守护进程

    在下面的目录下面创建gradle.properties文件:

    • /home/<username>/.gradle/ (Linux)
    • /Users/<username>/.gradle/ (Mac)
    • C:Users<username>.gradle (Windows)

    并在文件中增加:

    org.gradle.daemon=true

    同时修改项目下的gradle.properties文件也可以优化:

    # Project-wide Gradle settings.

    # IDE (e.g. Android Studio) users:
    # Settings specified in this file will override any Gradle settings
    # configured through the IDE.

    # For more details on how to configure your build environment visit
    # http://www.gradle.org/docs/current/userguide/build_environment.html

    # The Gradle daemon aims to improve the startup and execution time of Gradle.
    # When set to true the Gradle daemon is to run the build.
    # TODO: disable daemon on CI, since builds should be clean and reliable on servers
    org.gradle.daemon=true

    # Specifies the JVM arguments used for the daemon process.
    # The setting is particularly useful for tweaking memory settings.
    # Default value: -Xmx10248m -XX:MaxPermSize=256m
    org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

    # When configured, Gradle will run in incubating parallel mode.
    # This option should only be used with decoupled projects. More details, visit
    # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
    org.gradle.parallel=true

    # Enables new incubating mode that makes Gradle selective when configuring projects. 
    # Only relevant projects are configured which results in faster builds for large multi-projects.
    # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:configuration_on_demand
    org.gradle.configureondemand=true

    同时上面的这些参数也可以配置到前面的用户目录下的gradle.properties文件里,那样就不是针对一个项目生效,而是针对所有项目生效。

    上面的配置文件主要就是做, 增大gradle运行的java虚拟机的大小,让gradle在编译的时候使用独立进程,让gradle可以平行的运行。

    修改android studio配置

    在android studio的配置中,开启offline模式,以及修改配置。实际上的配置和上面的一大段一样,主要是在这个地方配置的只会在ide构建的时候生效,命令行构建不会生效。

    命令行构建

    基于上面的配置,命令行构建时在命令后面加上这个参数即可 --daemon --parallel --offline

    引入依赖库时使用aar

    使用网上第三方的依赖库时尽量使用aar,可以在mavenhttp://gradleplease.appspot.com/或者githuhttps://github.com/Goddchen/mvn-repo搜索。

    自己的库模块也可以打包成aar,关于这个可以参考 http://www.linuxidc.com/Linux/2015-03/115242.htm

    后记

    经过这样一番折腾,我原来需要4,5分钟才能构建完成的项目,现在只需要30秒左右就可以构建完成了。当然了,如果你这样还是不可以的话,那么,你应该换电脑了,ssd的硬盘,更大的内存,必须的上了。

    Ubuntu 12.04(64位)安装Android Studio 全过程 http://www.linuxidc.com/Linux/2013-05/84812.htm 

    Android Studio v0.1尝鲜 http://www.linuxidc.com/Linux/2013-05/84681.htm 

    Android Studio使用教程 http://www.linuxidc.com/Linux/2013-05/84579.htm 

    Android Studio开发指南 http://www.linuxidc.com/Linux/2013-05/84543.htm 

    Android Studio设置主题 和 不支持中文的问题解决方法 http://www.linuxidc.com/Linux/2013-05/84488.htm 

    Android Studio 下载安装以及不能打开的解决办法 http://www.linuxidc.com/Linux/2013-05/84409.htm 

    Android Studio安装使用图文教程 http://www.linuxidc.com/Linux/2014-09/106914.htm 

    Android Studio 的详细介绍请点这里
    Android Studio 的下载地址请点这里 

    更多Android相关信息见Android 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=11

    本文永久更新链接地址http://www.linuxidc.com/Linux/2015-03/115241.htm

     

  • 相关阅读:
    iOS 关于NSNotificationCenter
    IOS UITableView reload 刷新某一个cell 或 section
    IOS AFNetWorking 设置超时时间
    IOS AFNetWorking
    IOS 十六进制字符串转换成UIColor
    IOS 长姿势---双击Home键
    IOS 关于 NSUserDefault
    方正璞华培训讲师
    localStorage使用总结
    Promise的简单用法
  • 原文地址:https://www.cnblogs.com/sixrain/p/5484598.html
Copyright © 2011-2022 走看看