[英]Android gradle tasks really slow
請注意,此問題僅在使用OSx el capitan的Macbook pro 2013上的此項目中發生。
這是我的grade.properties配置:
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.configureondemand=true
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
我運行一個簡單的命令,例如./gradlew clean --debug,這就是它停留約10分鍾而沒有內存或CPU使用率的問題:
11:27:10.337 [DEBUG] [com.android.build.gradle.internal.pipeline.TransformManager] OutputStream: IntermediateStream{rootLocation=/Users/tiagorocha/Documents/git/golivephone/FamilyLiveApp/build/intermediates/transforms/jarMerging/androidTest/vfpt/debug, scopes=[PROJECT, PROJECT_LOCAL_DEPS, SUB_PROJECTS, SUB_PROJECTS_LOCAL_DEPS, EXTERNAL_LIBRARIES], contentTypes=[CLASSES], dependencies=[transformClassesWithJarMergingForVfptDebugAndroidTest]}
11:27:10.339 [DEBUG] [com.android.build.gradle.internal.pipeline.TransformManager] ADDED TRANSFORM(vfptDebugAndroidTest):
11:27:10.339 [DEBUG] [com.android.build.gradle.internal.pipeline.TransformManager] Name: multidexlist
11:27:10.340 [DEBUG] [com.android.build.gradle.internal.pipeline.TransformManager] Task: transformClassesWithMultidexlistForVfptDebugAndroidTest
11:27:10.340 [DEBUG] [com.android.build.gradle.internal.pipeline.TransformManager] Ref'edStream: IntermediateStream{rootLocation=/Users/tiagorocha/Documents/git/golivephone/FamilyLiveApp/build/intermediates/transforms/jarMerging/androidTest/vfpt/debug, scopes=[PROJECT, PROJECT_LOCAL_DEPS, SUB_PROJECTS, SUB_PROJECTS_LOCAL_DEPS, EXTERNAL_LIBRARIES], contentTypes=[CLASSES], dependencies=[transformClassesWithJarMergingForVfptDebugAndroidTest]}
11:27:10.341 [DEBUG] [com.android.build.gradle.internal.pipeline.TransformManager] ADDED TRANSFORM(vfptDebugAndroidTest):
11:27:10.341 [DEBUG] [com.android.build.gradle.internal.pipeline.TransformManager] Name: dex
11:27:10.341 [DEBUG] [com.android.build.gradle.internal.pipeline.TransformManager] Task: transformClassesWithDexForVfptDebugAndroidTest
11:27:10.341 [DEBUG] [com.android.build.gradle.internal.pipeline.TransformManager] InputStream: IntermediateStream{rootLocation=/Users/tiagorocha/Documents/git/golivephone/FamilyLiveApp/build/intermediates/transforms/jarMerging/androidTest/vfpt/debug, scopes=[PROJECT, PROJECT_LOCAL_DEPS, SUB_PROJECTS, SUB_PROJECTS_LOCAL_DEPS, EXTERNAL_LIBRARIES], contentTypes=[CLASSES], dependencies=[transformClassesWithJarMergingForVfptDebugAndroidTest]}
11:27:10.342 [DEBUG] [com.android.build.gradle.internal.pipeline.TransformManager] OutputStream: IntermediateStream{rootLocation=/Users/tiagorocha/Documents/git/golivephone/FamilyLiveApp/build/intermediates/transforms/dex/androidTest/vfpt/debug, scopes=[PROJECT, PROJECT_LOCAL_DEPS, SUB_PROJECTS, SUB_PROJECTS_LOCAL_DEPS, EXTERNAL_LIBRARIES], contentTypes=[DEX], dependencies=[transformClassesWithDexForVfptDebugAndroidTest]}
*---> Takes forever here <---*
11:39:36.144 [QUIET] [system.out] [VersionsPlugin][VersionCode] = 3000500
11:39:36.168 [QUIET] [system.out] [VersionsPlugin][VersionName] = 3.0.5.x
11:39:36.210 [INFO] [org.gradle.configuration.project.BuildScriptProcessor] Evaluating project ':libraries' using empty build file.
11:39:36.212 [DEBUG] [org.gradle.configuration.project.BuildScriptProcessor] Timing: Running the build script took 0.002 secs
11:39:36.212 [INFO] [org.gradle.execution.TaskNameResolvingBuildConfigurationAction] Selected primary task 'clean' from project :
11:39:36.213 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskGraphExecuter] Timing: Creating the DAG took 0.0 secs
11:39:36.214 [INFO] [org.gradle.BuildLogger] All projects evaluated.
11:39:36.214 [INFO] [org.gradle.BuildLogger] Tasks to be executed: [task ':FamilyLiveApp:clean', task ':libraries:DragSortListViewLib:clean', task ':libraries:LicenseManager:clean', task ':libraries:LocationLib:clean', task ':libraries:SC-Lib:clean', task ':libraries:moverlib:clean']
11:39:36.222 [INFO] [org.gradle.execution.taskgraph.ParallelTaskPlanExecutor] Using 6 parallel executor threads
11:39:36.222 [INFO] [org.gradle.execution.taskgraph.AbstractTaskPlanExecutor] :FamilyLiveApp:clean (Thread[Task worker,5,main]) started.
總時間:13分鍾8.357秒<---無需依賴下載即可進行清理
從11:27到11:39,它閑置在那里,沒有任何內存或CPU使用情況。 我已經嘗試了幾種不同的設置,但均未成功。 在我的Ubuntu計算機中,這一步驟幾乎不需要任何時間,而清理項目則需要10秒鍾。 我知道macbook pro有點過時了,只有4GB的ram,但是那樣閑着仍然沒有任何意義。
編輯:匯編--profile輸出:
Summary:
Description Duration
Total Build Time 15m14.21s
Startup 1.912s
Settings and BuildSrc 0.701s
Loading Projects 0.070s
Configuring Projects 4.273s
Task Execution 1m5.99s
Gradle version 2.2.1
時間數學似乎有點過時:§
好的,我找到了此問題的根本原因。
在我的buildTypes {}中,我有如下內容:
applicationVariants.all { variant ->
buildConfigField STRING_ARRAY, LOCATION_TRANSLATIONS, getSomething()
}
getSomething()方法所做的事情花費了很多時間。 同樣,每種構建類型和風味組合都被調用,在這種情況下總共調用15次。
applicationVariants.all { variant ->
buildConfigField STRING_ARRAY, LOCATION_TRANSLATIONS, "{}"
}
我不確定為什么在諸如clean之類的命令中調用它,但這就是正在發生的情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.