如何解决多模块项目中的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
)上有所改进。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。