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

这是我的配置:

MBP 2015,8GB RAM,SSD

Android Studio 2.2.3

平均而言,建造时间为7/8分钟,有时为10/12分钟

我已经尝试了一切,我可以在网上find,但似乎没有工作:

—自定义VM选项:

-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 

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

更新:

从那以后,我换了一个16GB的内存,显然有一些改进,我的印象是不到一分钟左右,但这需要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 

这最后一行保持很长时间。

 File->Setting->Build, Execution, Deploymennt->Gradle Check Offline work Click Apply and Ok 

你需要发布一些更多的信息,以帮助我们。

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

你也可以看看你的Mac上的Activiy Monitor,看看还有什么在后台运行,可能会占用一些资源。
8 GB的内存不多,所以你应该尝试关闭其他可能占用内存的元素。

试试这个在应用程序的build.gradle文件,在’安卓’块:

 dexOptions { preDexLibraries true javaMaxHeapSize "4G" } 

与你的gradle.properties文件一起:

 org.gradle.jvmargs=-Xmx4608M 

既然你只有8 GB的内存,你不应该尝试把8 GB专用于Gradle,就像你之前试过的一样。
我有16 GB的内存,我使用4-5 GB的Gradle,并建立相当快。 即使是我们7年后仍在开发的最庞大的项目,也需要2-3分钟的时间才能完成。

但是,请张贴我在这篇文章开始所要求的信息,我们可以帮助更多。

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

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

编译: Java代码+ Kotlin – > Kotlin编译器Java代码+解析Kotlin代码 – > Java编译器dexing等等

我的建议是,将模块中的代码拆分。 更好的,如果你可以按语言分开模块。 这样Kotlin模块将会变慢,但是Java模块会更快。

如果你完全分离了Java和Kotlin模块,那么它应该和Java一样。

结论:

模块化您的代码将加速构建。 如果你想Kotlin,减少Java代码,它会加快构建。 单独的Kotlin和Java模块,它将需要更少的编译,并减少一些模块的阶段,所以它会加快构建。