Сохраняйте вкусы продукта от времени сборки в Android Studio

В моем приложении в настоящее время имеется 5 различных продуктов. Причины этого не очень важны, но по существу нам нужно много продуктов, чтобы ориентироваться на разные серверы тестирования, которые имеют разные данные тестирования.

prod {
 applicationId "com.us.android"
 }
 stage {
 applicationId "com.us.android.stage"
 }
 qa {
 applicationId "com.us.android.qa"
 }
 dev {
 applicationId "com.us.android.dev"
 }
 legacy {
 applicationId "com.us.android.legacy"
 }

Проблема, с которой я сталкиваюсь, - это когда я создаю новую сборку, все из них создаются. Так что для моего проекта для его создания требуется около 50 секунд, если я буду комментировать все, но сборка, о которой я забочусь, в это время идет примерно до 10 секунд. Тем не менее, комментируя их, это здорово, если бы это был только я, но если я случайно сделаю прокомментированную версию, это вызовет больше проблем, когда мы попытаемся построить где-то еще.

Мой вопрос в том, есть ли какой-либо чистый способ, который я могу сделать так, чтобы в локальной разработке была построена только встроенная сборка, но я могу по-прежнему строить другие ветки по мере необходимости?

Мы используем Jenkins, который, как мне кажется, может помочь нам получить эти сборки, где нам не нужно беспокоиться о них, но я не уверен, как это сделать.

Изменить: Вот несколько журналов, потому что это может помочь.

Это когда у нас есть все вкусы продукта, но вариант сборки установлен на stageDebug:

Executing tasks: [:us:assembleStageDebug]
Parallel execution with configuration on demand is an incubating feature.
 :api:compileJava
:datePickerLibrary:compileLint
:us:preBuild UP-TO-DATE
:us:preStageDebugBuild UP-TO-DATE
:datePickerLibrary:copyReleaseLint UP-TO-DATE
:us:checkStageDebugManifest
:datePickerLibrary:preBuild UP-TO-DATE
:datePickerLibrary:preReleaseBuild UP-TO-DATE
:datePickerLibrary:checkReleaseManifest
:us:preDevDebugBuild UP-TO-DATE
:datePickerLibrary:preDebugAndroidTestBuild
:us:preDevReleaseBuild UP-TO-DATE
:datePickerLibrary:preDebugAndroidTestBuild UP-TO-DATE
:datePickerLibrary:preDebugBuild UP-TO-DATE
:us:preProdDebugBuild UP-TO-DATE
:datePickerLibrary:preDebugUnitTestBuild UP-TO-DATE
:us:preProdReleaseBuild UP-TO-DATE
:datePickerLibrary:preReleaseUnitTestBuild UP-TO-DATE
:us:preQaDebugBuild UP-TO-DATE
:datePickerLibrary:prepareComAndroidSupportSupportV132100Library
:us:preQaReleaseBuild UP-TO-DATE
:us:preStageReleaseBuild UP-TO-DATE
:us:prelegacyDebugBuild UP-TO-DATE
:us:prelegacyReleaseBuild UP-TO-DATE
:datePickerLibrary:prepareComAndroidSupportSupportV132100Library UP-TO-DATE
:datePickerLibrary:prepareComAndroidSupportSupportV42100Library
:us:generateStageDebugBuildConfig UP-TO-DATE
:datePickerLibrary:prepareReleaseDependencies UP-TO-DATE
:us:generateStageDebugResValues
:datePickerLibrary:compileReleaseAidl UP-TO-DATE
:api:processResources UP-TO-DATE
:datePickerLibrary:prepareComAndroidSupportSupportV42100Library UP-TO-DATE
:us:processStageDebugGoogleServices
File google-services.json is missing from module root folder. The Google Quickstart Plugin cannot function without it.
 :api:classes
:us:generateStageDebugAssets UP-TO-DATE
:api:classes UP-TO-DATE
:api:compileJava UP-TO-DATE
:api:jar
:us:processStageDebugJavaRes UP-TO-DATE
:datePickerLibrary:compileReleaseRenderscript
:us:compileStageDebugNdk UP-TO-DATE
:us:newRelicInstrumentTask UP-TO-DATE
:datePickerLibrary:generateReleaseBuildConfig UP-TO-DATE
:datePickerLibrary:generateReleaseAssets UP-TO-DATE
:datePickerLibrary:mergeReleaseAssets UP-TO-DATE
:datePickerLibrary:compileReleaseRenderscript UP-TO-DATE
[newrelic.info] Detected cached instrumentation.
:datePickerLibrary:generateReleaseResValues UP-TO-DATE
:datePickerLibrary:generateReleaseResources UP-TO-DATE
:datePickerLibrary:mergeReleaseResources UP-TO-DATE
:datePickerLibrary:processReleaseManifest UP-TO-DATE
:datePickerLibrary:processReleaseResources UP-TO-DATE
:datePickerLibrary:generateReleaseSources UP-TO-DATE
:datePickerLibrary:processReleaseJavaRes UP-TO-DATE
:datePickerLibrary:compileReleaseJavaWithJavac UP-TO-DATE
:datePickerLibrary:extractReleaseAnnotations UP-TO-DATE
:datePickerLibrary:mergeReleaseProguardFiles UP-TO-DATE
:datePickerLibrary:packageReleaseJar UP-TO-DATE
:datePickerLibrary:compileReleaseNdk UP-TO-DATE
:datePickerLibrary:packageReleaseJniLibs UP-TO-DATE
:datePickerLibrary:packageReleaseLocalJar UP-TO-DATE
:datePickerLibrary:packageReleaseRenderscript UP-TO-DATE
:datePickerLibrary:packageReleaseResources
:api:jar UP-TO-DATE
:us:validateDebugSigning
:datePickerLibrary:bundleRelease
:us:validateDebugSigning UP-TO-DATE
:us:prepareAndroidClientDatePickerLibraryUnspecifiedLibrary UP-TO-DATE
:us:prepareComAndroidSupportAppcompatV72221Library UP-TO-DATE
:us:prepareComAndroidSupportCardviewV72221Library UP-TO-DATE
:us:prepareComAndroidSupportDesign2221Library UP-TO-DATE
:us:prepareComAndroidSupportMultidex101Library UP-TO-DATE
:us:prepareComAndroidSupportRecyclerviewV72221Library UP-TO-DATE
:us:prepareComAndroidSupportSupportV132221Library UP-TO-DATE
:us:prepareComAndroidSupportSupportV42301Library UP-TO-DATE
:us:prepareComFacebookAndroidFacebookAndroidSdk3230Library UP-TO-DATE
:us:prepareComGoogleAndroidGmsPlayServicesAnalytics750Library UP-TO-DATE
:us:prepareComGoogleAndroidGmsPlayServicesAppinvite750Library UP-TO-DATE
:us:prepareComGoogleAndroidGmsPlayServicesBase750Library UP-TO-DATE
:us:prepareComGoogleAndroidGmsPlayServicesGcm750Library UP-TO-DATE
:us:prepareComGoogleAndroidGmsPlayServicesLocation750Library UP-TO-DATE
:us:prepareComGoogleAndroidGmsPlayServicesMaps750Library UP-TO-DATE
:us:********************************************** UP-TO-DATE
:us:************************************************* UP-TO-DATE
:us:prepareComMixpanelAndroidMixpanelAndroid462Library UP-TO-DATE
:us:prepareComRengwuxianMaterialedittextLibrary214Library UP-TO-DATE
:us:prepareComRoomoramaCaldroid220Library UP-TO-DATE
:us:prepareComZendeskSdk1322Library UP-TO-DATE
:us:prepareUkCoChrisjenxCalligraphy201Library UP-TO-DATE
:us:prepareStageDebugDependencies
:us:compileStageDebugAidl UP-TO-DATE
:us:compileStageDebugRenderscript UP-TO-DATE
:us:generateStageDebugResources
:us:mergeStageDebugResources UP-TO-DATE
:us:jrebelPinStageDebugResids UP-TO-DATE
:us:mergeStageDebugAssets UP-TO-DATE
:us:processStageDebugManifest UP-TO-DATE
:us:processStageDebugResources UP-TO-DATE
:us:generateStageDebugSources UP-TO-DATE
:us:compileStageDebugJavaWithJavac UP-TO-DATE
:us:compileStageDebugSources UP-TO-DATE
:us:generateStageDebugJrebelLayout
:us:preDexStageDebug UP-TO-DATE
:us:dexStageDebug UP-TO-DATE
:us:newRelicDeinstrumentTask
[newrelic.info] Deinstrumenting...
 :us:jrebelPostProcessStageDebugResids UP-TO-DATE
:us:packageStageDebug UP-TO-DATE
:us:zipalignStageDebug UP-TO-DATE
:us:assembleStageDebug
BUILD SUCCESSFUL
Total time: 34.308 secs

Это когда у нас есть только желаемый вкус продукта стадии:

Executing tasks: [:urbansitter:assembleStageDebug]
Parallel execution with configuration on demand is an incubating feature.
 :api:compileJava
:datePickerLibrary:compileLint
:us:preBuild UP-TO-DATE
:us:preStageDebugBuild UP-TO-DATE
:datePickerLibrary:copyReleaseLint
:us:checkStageDebugManifest UP-TO-DATE
:datePickerLibrary:preBuild UP-TO-DATE
:us:preStageReleaseBuild UP-TO-DATE
:datePickerLibrary:preReleaseBuild UP-TO-DATE
:us:generateStageDebugBuildConfig
:datePickerLibrary:checkReleaseManifest
:datePickerLibrary:preDebugAndroidTestBuild UP-TO-DATE
:datePickerLibrary:preDebugBuild UP-TO-DATE
:datePickerLibrary:preDebugUnitTestBuild UP-TO-DATE
:us:generateStageDebugResValues
:us:generateStageDebugBuildConfig UP-TO-DATE
:datePickerLibrary:preReleaseUnitTestBuild
:us:processStageDebugGoogleServices UP-TO-DATE
File google-services.json is missing from module root folder. The Google Quickstart Plugin cannot function without it.
 :datePickerLibrary:prepareComAndroidSupportSupportV132100Library
:us:generateStageDebugAssets UP-TO-DATE
:us:processStageDebugJavaRes UP-TO-DATE
:datePickerLibrary:prepareComAndroidSupportSupportV132100Library UP-TO-DATE
:us:compileStageDebugNdk
:datePickerLibrary:prepareComAndroidSupportSupportV42100Library UP-TO-DATE
:us:newRelicInstrumentTask UP-TO-DATE
:us:compileStageDebugNdk UP-TO-DATE
:api:processResources UP-TO-DATE
[newrelic.info] Detected cached instrumentation.
:datePickerLibrary:prepareReleaseDependencies
:api:classes UP-TO-DATE
:api:jar
:datePickerLibrary:compileReleaseAidl UP-TO-DATE
:datePickerLibrary:compileReleaseRenderscript UP-TO-DATE
:datePickerLibrary:prepareReleaseDependencies UP-TO-DATE
:datePickerLibrary:generateReleaseBuildConfig UP-TO-DATE
:datePickerLibrary:generateReleaseAssets UP-TO-DATE
:datePickerLibrary:mergeReleaseAssets UP-TO-DATE
:datePickerLibrary:generateReleaseResValues UP-TO-DATE
:datePickerLibrary:generateReleaseResources UP-TO-DATE
:datePickerLibrary:mergeReleaseResources
:us:validateDebugSigning UP-TO-DATE
:datePickerLibrary:processReleaseManifest UP-TO-DATE
:datePickerLibrary:processReleaseResources UP-TO-DATE
:datePickerLibrary:generateReleaseSources UP-TO-DATE
:datePickerLibrary:processReleaseJavaRes UP-TO-DATE
:datePickerLibrary:compileReleaseJavaWithJavac UP-TO-DATE
:datePickerLibrary:extractReleaseAnnotations UP-TO-DATE
:datePickerLibrary:mergeReleaseProguardFiles UP-TO-DATE
:datePickerLibrary:packageReleaseJar UP-TO-DATE
:datePickerLibrary:compileReleaseNdk UP-TO-DATE
:datePickerLibrary:packageReleaseJniLibs UP-TO-DATE
:datePickerLibrary:packageReleaseLocalJar UP-TO-DATE
:datePickerLibrary:packageReleaseRenderscript UP-TO-DATE
:datePickerLibrary:packageReleaseResources UP-TO-DATE
:datePickerLibrary:bundleRelease UP-TO-DATE
:us:prepareAndroidClientDatePickerLibraryUnspecifiedLibrary UP-TO-DATE
:us:prepareComAndroidSupportAppcompatV72221Library UP-TO-DATE
:us:prepareComAndroidSupportCardviewV72221Library UP-TO-DATE
:us:prepareComAndroidSupportDesign2221Library UP-TO-DATE
:us:prepareComAndroidSupportMultidex101Library UP-TO-DATE
:us:prepareComAndroidSupportRecyclerviewV72221Library UP-TO-DATE
:us:prepareComAndroidSupportSupportV132221Library UP-TO-DATE
:us:prepareComAndroidSupportSupportV42301Library UP-TO-DATE
:us:prepareComFacebookAndroidFacebookAndroidSdk3230Library UP-TO-DATE
:us:prepareComGoogleAndroidGmsPlayServicesAnalytics750Library UP-TO-DATE
:us:prepareComGoogleAndroidGmsPlayServicesAppinvite750Library UP-TO-DATE
:us:prepareComGoogleAndroidGmsPlayServicesBase750Library UP-TO-DATE
:us:prepareComGoogleAndroidGmsPlayServicesGcm750Library UP-TO-DATE
:us:prepareComGoogleAndroidGmsPlayServicesLocation750Library UP-TO-DATE
:us:prepareComGoogleAndroidGmsPlayServicesMaps750Library UP-TO-DATE
:us:********************************************** UP-TO-DATE
:us:************************************************* UP-TO-DATE
:us:prepareComMixpanelAndroidMixpanelAndroid462Library UP-TO-DATE
:us:prepareComRengwuxianMaterialedittextLibrary214Library UP-TO-DATE
:us:prepareComRoomoramaCaldroid220Library UP-TO-DATE
:us:prepareComZendeskSdk1322Library UP-TO-DATE
:us:prepareUkCoChrisjenxCalligraphy201Library UP-TO-DATE
:us:prepareStageDebugDependencies
:us:compileStageDebugAidl UP-TO-DATE
:us:compileStageDebugRenderscript UP-TO-DATE
:us:generateStageDebugResources
:us:mergeStageDebugResources UP-TO-DATE
:us:jrebelPinStageDebugResids UP-TO-DATE
:us:mergeStageDebugAssets UP-TO-DATE
:us:processStageDebugManifest UP-TO-DATE
:us:processStageDebugResources UP-TO-DATE
:us:generateStageDebugSources UP-TO-DATE
:us:compileStageDebugJavaWithJavac UP-TO-DATE
:us:compileStageDebugSources UP-TO-DATE
:us:generateStageDebugJrebelLayout
:us:preDexStageDebug UP-TO-DATE
:us:dexStageDebug UP-TO-DATE
:us:newRelicDeinstrumentTask
[newrelic.info] Deinstrumenting...
 :us:jrebelPostProcessStageDebugResids UP-TO-DATE
:us:packageStageDebug UP-TO-DATE
:us:zipalignStageDebug UP-TO-DATE
:us:assembleStageDebug
BUILD SUCCESSFUL
Total time: 8.54 secs

Я вложил журналы сборки из

1 ответ

Используя assembleRelease, он будет создавать все комбинации вкуса. assemble даже построит все 10 команд, включая все отладочные.

Теперь вы не укажете, как вы строите свой проект. В случае дженкинсов assembleRelease - это, вероятно, путь, создающий все ваши комбинации.

Для ваших локальных сборок просто используйте gradle assembleProdRelease или gradle assembleDevDebug, чтобы просто создать необходимый вкус.

Указав несколько целей, вы можете просто создать подмножество на дженкинсах. например.

gradle assembleDevRelease assembleProdRelease [...]

Кроме того, Android Studio имеет встроенную поддержку выбора вкуса, который вы хотите создать. Нажав Build Variants, вы можете выбрать вариант, который вы хотите запустить, с конфигурацией запуска по умолчанию. Чтобы переключиться между вкусами, вы просто выберите тот, который вам нужен.

licensed under cc by-sa 3.0 with attribution.