MBP 2015,8GB RAM,SSD
Android Studio 2.2.3
---自定义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的RAM,显然有一些改进,我的印象是它不到一分钟左右,但需要3-4分钟,这仍然是不可接受的:这里&# 39;我发现的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
这最后一行也能保持这么长时间。
答案 0 :(得分:10)
对于kotlin用户 增量构建
编译器最重要的性能特征之一是使用渐进式编译。正常构建将重新编译项目中的所有源文件,但增量构建将跟踪自上次构建以来哪些文件已更改,并且仅重新编译这些文件以及依赖于它们的文件。这会对编译时间产生巨大影响,特别是对于大型项目。
增量版本已添加到版本1.0.2中的Kotlin,您可以通过将kotlin.incremental = true添加到gradle.properties来启用它们
更多细节: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
如果从repo中心下载所有依赖项,你可以 使gradle离线表格
File->Setting->Build, Execution, Deploymennt->Gradle
答案 1 :(得分:7)
File->Setting->Build, Execution, Deploymennt->Gradle
Check Offline work
Click Apply and Ok
答案 2 :(得分:4)
如果您拥有庞大的代码库,那么这需要时间,这是很正常的。或者更好的是,预计需要一些时间。我刚刚注意到你在项目中使用了Kotlin,这意味着你有两个java代码编译阶段而不是1代。
Kotlin在第一阶段被编译(和java引用)。之后,在编译普通Java时,您将进行第二阶段的编译。这意味着平均编译时间要长两倍。
<强>汇编:强> Java代码+ Kotlin - &gt; Kotlin编译器 Java代码+解析的Kotlin代码 - &gt; Java copiler 德兴和其他一切
我的建议是,将您的代码拆分为模块。如果你可以按语言分离模块,那就更好了。这样Kotlin模块会很慢,但java模块会更快。
如果您拥有完全独立的Java和Kotlin模块,它应该与Java大致相同。
<强>结论:强>
模块化代码将加快构建速度。 如果你想要Kotlin,减少Java代码,它将加速构建。 单独的Kotlin和Java模块,它将需要更少的编译,并且在一些模块上需要更少的阶段,因此它将加速构建。
答案 3 :(得分:3)
您需要发布更多信息以便我们提供帮助。
发布你的build.gradle文件&amp;你的应用程序有多少个模块&amp; gradle.properties文件&amp; settings.gradle文件。
您还可以在Mac上查看Activiy Monitor,看看后台运行的其他内容可能会占用一些资源。
8 GB的RAM不多,所以你应该尝试关闭可能占用一些RAM的其他元素。
在应用程序的build.gradle文件中,在&#39; android&#39;中尝试此操作块:
dexOptions {
preDexLibraries true
javaMaxHeapSize "4G"
}
gradle.properties文件中包含此内容:
org.gradle.jvmargs=-Xmx4608M
因为你只是&#39;有8 GB的RAM,你不应该尝试将8 GB专用于Gradle,就像你之前尝试过的那样 我有16 GB的RAM,我使用4-5 GB用于Gradle,并且构建非常快。即使我们最庞大的项目,仍然在7年后仍在开发,需要2-3分钟从头开始构建。
但是,请发布我在本文开头所要求的信息,我们可以提供更多帮助。
答案 4 :(得分:1)
我的情况完全不同。我不知道为什么,但它是由这条线引起的
maven { url "https://dl.bintray.com/crysis21/Android" }
它立即将构建速度提高了约 99%... 因此,请在您的项目中查找此类链接,如果有任何您不需要的链接,请删除它们。
另请查看 Gradle Doctor 和 The Secrets of the Build Scan Plugin and the internals of Gradle by Nelson Osacky, Soundcloud EN