请注意,此问题仅在使用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()方法所做的事情花费了很多时间。同样,每种构建类型和 flavor 组合都需要调用它,在这种情况下,总共需要调用15次。
applicationVariants.all { variant ->
buildConfigField STRING_ARRAY, LOCATION_TRANSLATIONS, "{}"
}
我不确定为什么在诸如clean之类的命令中调用它,但这就是正在发生的情况。
关于android - Android Gradle任务真的很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34856726/