非常非常慢的Gradle在Android Studio上构建 这是我的配置:

非常非常慢的Gradle在Android Studio上构建 这是我的配置:,android,android-studio,gradle,Android,Android Studio,Gradle,MBP 2015,8gb内存,SSD Android Studio 2.2.3 平均而言,构建持续7/8分钟,有时10/12分钟 我已经尝试了所有我能在网上找到的东西,但似乎都不起作用: ---自定义虚拟机选项: -Xms1024m -Xmx8192m -XX:MaxPermSize=1024m -XX:ReservedCodeCacheSize=440m -XX:+UseCompressedOops -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding

MBP 2015,8gb内存,SSD

Android Studio 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
org.gradle.jvmargs=-Xmx4608M
有没有人知道发生了什么,因为这太荒谬了

更新: 从那时起,我切换到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:compiledBugkotlin
大约需要60多秒

然后呢,

...
...
:app:copyDebugKotlinClasses
:app:compileDebugNdk NO-SOURCE
:app:compileDebugSources
:app:transformClassesWithRetrolambdaForDebug
:app:transformClassesWithDexForDebug
这最后一行也会停留很长时间

File->Setting->Build, Execution, Deploymennt->Gradle

Check Offline work
Click Apply and Ok

注意:在新版Android studio中,
视图->工具窗口->渐变->在线/离线切换按钮

您需要发布更多信息以获得帮助

发布build.gradle文件&你的应用程序有多少个模块&gradle.properties文件和settings.gradle文件

您还可以查看Mac上的Activy Monitor,查看后台运行的其他可能占用某些资源的内容。
8GB的RAM并不多,因此您应该尝试关闭可能占用部分RAM的其他元素

在应用程序的build.gradle文件中的“android”块中尝试以下操作:

dexOptions {
        preDexLibraries true
        javaMaxHeapSize "4G"
    }
在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
org.gradle.jvmargs=-Xmx4608M
因为您“只有”8GB的RAM,所以您不应该像以前那样尝试将8GB专用于Gradle。
我有16GB的RAM,Gradle使用4-5GB,构建速度非常快。即使是我们最庞大的项目,7年后仍在开发中,从头开始也需要2-3分钟


但是请把我在这篇文章开头所要求的信息发布出来,我们可以提供更多帮助。

如果你有一个很大的代码库,这需要时间是很正常的。或者更好,这需要一些时间。我刚刚注意到您在项目中使用了Kotlin,这意味着您有两个java代码编译阶段,而不是一个

Kotlin在第一阶段编译(和java引用)。之后,当编译纯Java时,将进入第二个编译阶段。这意味着平均编译时间要长两倍

编译: Java代码+Kotlin->Kotlin编译器 Java代码+解析的Kotlin代码->Java复印机 德兴和其他一切

我的建议是,将代码分成模块。如果您可以用语言来分隔模块,那就更好了。这样一来,Kotlin模块的速度会很慢,而java模块的速度会更快

如果您有完全独立的Java和Kotlin模块,那么所需的时间应该与Java大致相同

结论:

模块化代码将加快构建速度。 如果您想要Kotlin,减少Java代码,它将加快构建速度。 将Kotlin和Java模块分开,它将需要更少的编译,在某些模块上需要更少的阶段,因此它将加快构建速度。

对于Kotlin用户:

增量构建

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

增量版本已在1.0.2版中添加到Kotlin,您可以通过将
Kotlin.Incremental=true
添加到gradle.properties来启用它们

有关详细信息,请参阅“”

此外,将此代码添加到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
如果您的所有依赖项都是从repo center下载的,您可以使用此选项使gradle离线表单:

File->Setting->Build, Execution, Deploymennt->Gradle

我的情况完全不同。我不知道为什么,但这是由这条线引起的

maven{url”https://dl.bintray.com/crysis21/Android“}

它立即将构建速度提高了约99%。。。 因此,在你的项目中寻找这样的链接,如果有任何你不需要的,那么就删除它们


另外,请查看,这将因您试图构建的项目而大不相同。你能给我们更多关于这个项目的信息吗?你看到每个项目都会发生这种情况吗?你能分享gradle消息窗口的输出吗?在大多数情况下,极长的构建时间是由于gradle下载外部LIB而不是使用缓存副本造成的。我们可以从日志中确定。如果启用了Jack编译器,这可能是原因之一。我发现它大大增加了我的构建时间。@cwbowron Jack未启用:(@MarcosPlacona,这个项目不小,但也不太大,我也在使用Java和Kotlin,但令人遗憾的是,即使我不接触代码,只是重新启动应用程序,构建它也需要很长时间。没有理由在第一次运行后,配置良好的gradle构建就下载任何大文件。如果你使用像t这样的play services依赖项他的
编译'com.google.android.gms:play services:9.2.1'
不要使用这个,因为play services有上千个类将被加载到一个项目中,Gradle会很慢…若您使用GCM通知
编译'com.google.android.gms:play services GCM:9.2.1',
您仍然有我没有发布我要求的任何信息。没有它,我就无法再帮助你了。preDexLibraries意味着什么?终于有了帮助!谢谢!谢谢!真是太棒了,我将构建时间从2分钟提高到了2秒。这样的延迟应该是默认值,应该是默认值。为什么Intell