1. Analyze
./gradlew clean build --profile
會在build/reports/profile
下生成一份報(bào)告
- Configuration: 配置項(xiàng)目的時(shí)間
- Dependency Resolution:解析依賴的時(shí)間
- Task Execution:任務(wù)執(zhí)行的時(shí)間
2. Performing Tuning
gradle.properties中設(shè)置一下幾項(xiàng)
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.configureondemand=true
minSdkVersion 設(shè)置為 21也可以加快編譯(thanks to ART?? 沒試過)
一種典型的情況是unit test時(shí)間會很長:
不要用Robolectric丝蹭,Robolectric is slow
Disable Unit Test Reports
android {
testOptions.unitTests.all {
reports.html.enabled = false
reports.junitXml.enabled = false
}
}
- 并行執(zhí)行unit test
testOptions.unitTests.all {
maxParallelForks = 8
}
- 如果unit test占用內(nèi)存很多,在執(zhí)行一定數(shù)量case后,可以fork出新的vm以執(zhí)行新的case(防止當(dāng)個(gè)vm內(nèi)存溢出)
testOptions.unitTests.all {
forkEvery = 200
}
- 使app模塊化可以并行編譯各個(gè)模塊