簡體   English   中英

Android Gradle任務真的很慢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM