Android Studio 上的 Gradle 构建非常非常慢

2024-03-01

这是我的配置:

MBP 2015、8GB 内存、固态硬盘

安卓工作室2.2.3

平均而言,构建持续 7/8 分钟,有时 10/12 分钟

我已经尝试了网上能找到的所有方法,但似乎都不起作用:

--- 自定义虚拟机选项:

-Xms1024m
-Xmx8192m
-XX:MaxPermSize=1024m
-XX:ReservedCodeCacheSize=440m
-XX:+UseCompressedOops
-XX:+HeapDumpOnOutOfMemoryError
-Dfile.encoding=UTF-8

--- 按需编译/配置

--- 并行编译器/编译模块

--- Gradle / 离线工作

--- gradle.properties 文件:

org.gradle.daemon=true
org.gradle.jvmargs=-Xmx8192m -XX:MaxPermSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -noverify
org.gradle.parallel=true
org.gradle.configureondemand=true
android.enableBuildCache=true

有谁知道发生了什么事,因为这太荒谬了

UPDATE:

从那时起我换成了16GB RAM,显然有一些改进,我的印象是不到一分钟左右,但它需要3-4分钟,这仍然是不可接受的:这是Gradle的一部分我发现日志花费的时间太长:

git log --pretty=format:'%h %s'
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:checkDebugManifest
:app:preAlphaBuild UP-TO-DATE
:app:preBirdsBuild UP-TO-DATE
:app:preKfgBuild UP-TO-DATE
:app:prePenBuild UP-TO-DATE
:app:prePrelaunchBuild UP-TO-DATE
:app:prePtr1Build UP-TO-DATE
:app:prePtr3Build UP-TO-DATE
:app:preReleaseBuild UP-TO-DATE
:app:prepareCnPedantSweetalertLibrary13Library
:app:prepareComAndroidSupportAnimatedVectorDrawable2511Library
:app:prepareComAndroidSupportAppcompatV72511Library
:app:prepareComAndroidSupportCardviewV72511Library
:app:prepareComAndroidSupportDesign2511Library
:app:prepareComAndroidSupportMultidex101Library
:app:prepareComAndroidSupportRecyclerviewV72511Library
:app:prepareComAndroidSupportSupportCompat2511Library
:app:prepareComAndroidSupportSupportCoreUi2511Library
:app:prepareComAndroidSupportSupportCoreUtils2511Library
:app:prepareComAndroidSupportSupportFragment2511Library
:app:prepareComAndroidSupportSupportMediaCompat2511Library
:app:prepareComAndroidSupportSupportV132511Library
:app:prepareComAndroidSupportSupportV42511Library
:app:prepareComAndroidSupportSupportVectorDrawable2511Library
:app:prepareComAndroidSupportTransition2511Library
:app:prepareComCrashlyticsSdkAndroidAnswers1310Library
:app:prepareComCrashlyticsSdkAndroidBeta122Library
:app:prepareComCrashlyticsSdkAndroidCrashlytics265Library
:app:prepareComCrashlyticsSdkAndroidCrashlyticsCore2314Library
:app:prepareComDevbracketsAndroidExomedia311Library
:app:prepareComEftimoffAndroidViewpagerTransformers101Library
:app:prepareComGithubCastorflexSmoothprogressbarLibrary110Library
:app:prepareComGithubHotchemiPermissionsdispatcher230Library
:app:prepareComGithubKibotuAndroidAnimationsActions107Library
:app:prepareComGithubKibotuBloodHound105Library
:app:prepareComGithubKibotuCommonAndroidUtils072Library
:app:prepareComGithubKibotuGooglePlayForceUpdate108Library
:app:prepareComGithubKibotuNetKibotuAndroidDeviceinfo121Library
:app:prepareComGithubKibotuOpenAndroidSSLWrapper107Library
:app:prepareComGithubKibotuRecyclerViewPresenter141Library
:app:prepareComGithubKibotuShareIntentBuilderV003Library
:app:prepareComGithubKibotuTimeBomb110Library
:app:prepareComGithubKibotuUrlShortener107Library
:app:prepareComGithubOrhanobutHawk123Library
:app:prepareComGithubOzodrukhCircularReveal201Library
:app:prepareComGoogleAndroidExoplayerExoplayerR1513Library
:app:prepareComGoogleAndroidGmsPlayServicesAds1001Library
:app:prepareComGoogleAndroidGmsPlayServicesAdsLite1001Library
:app:prepareComGoogleAndroidGmsPlayServicesAnalytics1001Library
:app:prepareComGoogleAndroidGmsPlayServicesAnalyticsImpl1001Library
:app:prepareComGoogleAndroidGmsPlayServicesBase1001Library
:app:prepareComGoogleAndroidGmsPlayServicesBasement1001Library
:app:prepareComGoogleAndroidGmsPlayServicesClearcut1001Library
:app:prepareComGoogleAndroidGmsPlayServicesGass1001Library
:app:prepareComGoogleAndroidGmsPlayServicesGcm1001Library
:app:prepareComGoogleAndroidGmsPlayServicesIid1001Library
:app:prepareComGoogleAndroidGmsPlayServicesLocation1001Library
:app:prepareComGoogleAndroidGmsPlayServicesTagmanagerV4Impl1001Library
:app:prepareComGoogleAndroidGmsPlayServicesTasks1001Library
:app:prepareComGoogleFirebaseFirebaseAnalytics1001Library
:app:prepareComGoogleFirebaseFirebaseAnalyticsImpl1001Library
:app:prepareComGoogleFirebaseFirebaseCommon1001Library
:app:prepareComGoogleFirebaseFirebaseCore1001Library
:app:prepareComGoogleFirebaseFirebaseIid1001Library
:app:prepareComGoogleFirebaseFirebaseMessaging1001Library
:app:prepareComJakewhartonButterknife840Library
:app:prepareComJakewhartonProcessPhoenix110Library
:app:prepareComMikepenzFastadapter210Library
:app:prepareComMikepenzIconicsCore280Library
:app:prepareComMikepenzMaterialdrawer581Library
:app:prepareComMikepenzMaterialize100Library
:app:prepareComMukeshMarkdownview100Library
:app:prepareComNightonkeJellytogglebutton102Library
:app:prepareComNightonkeWowoviewpager102Library
:app:prepareComOgaclejapanSmarttablayoutLibrary161Library
:app:prepareComOgaclejapanSmarttablayoutUtilsV4161Library
:app:prepareComPnikosisMaterialishProgress10Library
:app:prepareComSbrukhandaFragmentviewpagerFragmentviewpager100Library
:app:prepareComShawnlinNumberPicker101Library
:app:prepareComSloydevPreferator100Library
:app:prepareComYydcdutRxmarkdown005Library
:app:prepareComZplesacConnectionbuddy140Library
:app:prepareHanksXyzHtextviewLibrary015Library
:app:prepareIoFabricSdkAndroidFabric1314Library
:app:prepareIoNlopezSmartlocationLibrary329Library
:app:prepareIoReactivexRxandroid121Library
:app:prepareJpWasabeefGlideTransformations201Library
:app:prepareJpWasabeefRecyclerviewAnimators225Library
:app:prepareMeGrantlandAutofittextview021Library
:app:prepareMeRelexCircleindicator122Library
:app:prepareNetDanlewAndroidJoda297Library
:app:prepareUkCoChrisjenxCalligraphy220Library
:app:prepareDebugDependencies
:app:compileDebugAidl UP-TO-DATE
:app:compileDebugRenderscript UP-TO-DATE
:app:generateDebugBuildConfig
:app:mergeDebugShaders UP-TO-DATE
:app:compileDebugShaders UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets UP-TO-DATE
:app:processDebugManifest UP-TO-DATE
:app:fabricGenerateResourcesDebug
:app:generateDebugResValues UP-TO-DATE
:app:processDebugGoogleServices
Parsing json file: ../google-services.json
:app:generateDebugResources
:app:mergeDebugResources
:app:processDebugResources
:app:generateDebugSources
:app:incrementalDebugJavaCompilationSafeguard
:app:javaPreCompileDebug
:app:compileDebugKotlin

直到这里都很好,但是:app:compileDebugKotlin大约需要 60 多秒...

进而,

...
...
:app:copyDebugKotlinClasses
:app:compileDebugNdk NO-SOURCE
:app:compileDebugSources
:app:transformClassesWithRetrolambdaForDebug
:app:transformClassesWithDexForDebug

最后一行也保留了很长时间。


对于 Kotlin 用户:

增量构建

编译器最重要的性能特征之一是它使用增量编译。正常构建将重新编译项目中的所有源文件,但增量构建将跟踪自上次构建以来哪些文件已更改,并且仅重新编译这些文件以及依赖于它们的文件。这会对编译时间产生巨大影响,尤其是对于大型项目。

Kotlin 在 1.0.2 版本中添加了增量构建,您可以通过添加来启用它们kotlin.incremental=true到你的 gradle.properties...

See "Kotlin 与 Java:编译速度 https://medium.com/keepsafe-engineering/kotlin-vs-java-compilation-speed-e6c174b39b5d“ 了解更多信息。

将此代码添加到 gradle.properties 也可能很有用:

# Add this in your global gradle.properties file 
# at ~/.gradle/gradle.properties
# Enable Gradle Daemon
org.gradle.daemon=true
# Enable Configure on demand
org.gradle.configureondemand=true
# Enable parallel builds
org.gradle.parallel=true
# Enable Build Cache
android.enableBuildCache=true
# Enable simple gradle caching
org.gradle.caching=true
# Increase memory allotted to JVM
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m - 
XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

如果您的所有依赖项都是从存储库中心下载的,您可以使用它来制作 gradle 离线形式:

File->Setting->Build, Execution, Deploymennt->Gradle
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Studio 上的 Gradle 构建非常非常慢 的相关文章

随机推荐

  • 创建存储过程时是否需要“definer”?

    我已经将所有 MySQL 过程编写为root localhost CREATE DEFINER root localhost PROCEDURE p add user 问题是 当部署到另一台服务器时 我必须替换root与当前用户并替换loc
  • 奇怪的程序集名称从手机访问网站时出错

    我有一个用 Asp net MVC 制作的网站 它安装在共享托管环境的根目录中 现在 我已经在 Asp net MVC 中为该网站制作了一个移动版本 并将其安装为子域http m price tag org http m price tag
  • 有人可以解释 BCrypt 如何验证哈希吗?

    我正在使用 C 和 BCrypt Net 来哈希我的密码 例如 string salt BCrypt Net BCrypt GenerateSalt 6 var hashedPassword BCrypt Net BCrypt HashPa
  • 字符串数组是可变的吗?

    我想知道Java中的字符串数组是否是可变的 我知道字符串是不可变的 但是字符串数组怎么样 如果我有一个字符串数组 并更改内容 是否会创建一个新的字符串对象 或者实际值会改变吗 提前致谢 The Strings 包含在String 确实是不可
  • 从 React Native 中解析的对象数组中渲染图像源

    我正在构建一个反应本机应用程序 它假设使用一些 元数据 对象作为源 我正在解析数组中的每个对象并为每个对象返回一个 JSX 布局item 我遇到的唯一问题是如何提供图像来源 因为我将它们存储在本地并且需要require link 他们 我的
  • React Router - 刷新后保持在同一页面

    我正在学习反应 我有一个包含 4 个子页面的页面 我使用 React Router 来浏览这些页面 除了重新加载页面之外 一切正常 当我从页面 主页 转到 关于 或其他页面时 这是可以的 但是当我刷新页面时 它会再次渲染页面 关于 一秒钟
  • 浏览器关闭时的通知

    我有一个 chrome 扩展 当用户访问特定页面时 它会向用户发送通知 我希望在浏览器关闭或在后台运行时发送通知 类似于智能手机 任何想法或提示都会很棒 在 Chrome 扩展中 您可以使用 2 个工具 chrome gcm API htt
  • 如何在 C# 中获取目录大小(目录中的文件)?

    我希望能够使用 C 获取本地目录之一的大小 我试图避免以下情况 伪代码 尽管在最坏的情况下我将不得不解决这个问题 int GetSize Directory int Size 0 foreach File in Directory File
  • 缩放到点和从点缩放

    我正在尝试将 DisplayObject 缩放到某个点 我认为这很容易 但我现在花了一天时间试图弄清楚 基本上我认为这个should工作 强调应该 newPoint is the point being centered There is
  • 如何将音频文件从 iPhone 文档文件夹上传到服务器

    我正在录制语音并将其保存到iphone文件夹中 但我想将其上传到服务器 那么如何执行此操作 NSString path NSString stringWithFormat Documents wav NSHomeDirectory pati
  • 在 ASP 和 VB 中动态添加文本文件到 DDL

    我希望通过动态更新来更新我的 DDL 功能之一 这样如果用户添加更多文件 下拉列表就会选择它 目前我的下拉列表是从VB代码后面拉出来的 如下所示 Public Sub DDL SelectedIndexChanged sender As O
  • 在 C# 中创建 .csv 文件

    好吧 我想用 C 创建一个 csv 文件 我环顾四周 发现很多人都在使用 system IO memorystream 和 system io streamwriter 问题是这样的 我有一个网络应用程序 我想让用户能够导出到 Excel
  • [Python]为什么电子邮件 pdf 附件在 Outlook/Thunderbird 上不显示,而在 Gmail 上却显示? (从Python环境发送)

    我刚刚加入了一个项目 并一直试图弄清楚为什么某些电子邮件在 Gmail 上按应有的方式显示 但是当我使用 Thunderbird 或 Outlook 等客户端打开时 附加的 PDF 现在会显示 作为附加细节 如果我将邮件从 Thunderb
  • 九月=“;”语句破坏了 XSL 生成的 CSV 文件中的 utf8 BOM

    我目前正在使用 XSLT 开发 CSV 导出 在我的例子中 CSV 文件将与 Excel 一起使用 99 因此我必须考虑 Excel 的行为 我的第一个问题是 csv 中的德语特殊字符 即使 CSV 编码是 UTF8 Excel 也无法正确
  • 弃用:ember-cli-babel 5.x 已弃用。无法获得余烬工作

    我正在尝试运行我的 ember 项目 它说我的圣经已经过时了 我更新了所有内容 但没有任何效果 有人可以告诉我应该如何修复它吗 这是我的 npm 返回错误的样子 DEPRECATION ember cli babel 5 x has bee
  • 如何让gcc显示调用的内部命令?

    是否有可能让 gcc MinGW Windows 显示所有调用的命令行 Example gcc o test exe test c desiredOption 应该输出类似这样的内容 cc1 o intermediate s test c
  • 如何让 VirtualEnv TensorFlow 在 PyCharm 中工作?

    所以我通过这里的主要响应将tensorflow安装到我的mac上 https stackoverflow com a 33691154 6095482 https stackoverflow com a 33691154 6095482 这
  • Java:强大的代码移动性 如何?

    有谁知道如何使用Java代码移动性强 http en wikipedia org wiki Code mobility 你以前做过吗 这就是我试图实现的目标 假设我们有 2 个通过网络通信的独立 Java 应用程序 应用程序 A 和应用程序
  • 如何在 RetroFit 中使用 Gson 转换器?

    我正在制作一个用于教育目的的简单 RetroFit 应用程序 并使用 IntelliJ IDEA 作为我的 IDE 我已经正确导入了 Retrofit 库 至少我认为我已经导入了 但我无法获取 Gson Converter 包 我安装了来自
  • Android Studio 上的 Gradle 构建非常非常慢

    这是我的配置 MBP 2015 8GB 内存 固态硬盘 安卓工作室2 2 3 平均而言 构建持续 7 8 分钟 有时 10 12 分钟 我已经尝试了网上能找到的所有方法 但似乎都不起作用 自定义虚拟机选项 Xms1024m Xmx8192m