多模块项目中的Android Studio构建/同步时间

问题描述

我有一个包含 30多个模块和子模块(功能基本模块)的项目。

我已经读到,多模块项目的构建时间少于单个模块项目的构建时间,因为它的时间少于10个模块(基本层模块)。但是,当模块数量增加时,会影响Android Studio的索引/构建/同步时间。此外,在开发多模块项目期间,Android Studio占用大量CPU和内存。

我应该如何优化构建速度和Android Studio性能?

注1:模块依赖项之间存在复杂的关系。

注2:已启用Gradle并行,并且我已检查Google Optimize your build speed

解决方法

我遇到了和你一样的问题。我通过使用自定义gradle依赖关系解析解决了我的问题。 这个想法很简单,我将所有模块发布到存储库(在我的情况下是人工工厂),然后在我依赖于已发布模块的build.gradle文件中。为了在开发过程中将发布的依赖关系从本地发布切换为本地,我使用gradle依赖关系解析来解析为本地版本。

def loadedModules = [:]
getSubprojects().forEach {
    loadedModules.put(it.name,it.path)
}
def group = 'np.com.susanthapa.efficientmultimodule'

allprojects {
    repositories {
        mavenLocal()
        google()
        jcenter()

        // replace configurations for all modules
        configurations.all {
            // get our own dependencies
            resolutionStrategy.dependencySubstitution.all { dependency ->
                if (dependency.requested instanceof ModuleComponentSelector && dependency.requested.group == group && loadedModules.containsKey(dependency.requested.module)) {
                    def targetProject = findProject(loadedModules.get(dependency.requested.module))
                    if (targetProject != null) {
                        dependency.useTarget targetProject
                    }
                }
            }
        }
    }
}

然后,您可以做的是从项目中卸载除app模块之外的所有模块,并从settings.gradle文件中注释掉所有模块。

现在要在特定模块上工作,只需在settings.gradle中取消注释该特定模块,然后在android studio中加载该模块即可。上面的代码将确保在整个项目中都使用已加载模块的本地版本。这样可以减少构建时间以及android studio索引编制。

有关更多信息,请参见博客文章的link

,

遵循link you posted中的配置步骤。

除此之外,或者为了进行更快/更简单的正式分析,您可以将--scan选项与./gradlew构建一起使用,并检查在线发布的统计信息。

可以根据这些结果调整内存使用量,这可以为您带来巨大的好处。就个人而言,我已经看到由于内存不足,构建实际上需要花费几分钟来进行垃圾收集。

您还可以根据这些结果增加可用于Android Studio的内存。 Help->Edit custom VM options。但是我要指出的是,您首先看到在命令行(./gradlew)上有所改进。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...