Android многомодульные, многофакторные проекты и сопоставление задач Gradle - PullRequest
0 голосов
/ 28 января 2020

Предположим, у меня есть модуль проекта под названием app.

apply plugin: 'com.android.application'

android {

    buildTypes {
        debug {
            ...
        }
        release {
            ...
        }
    }

    flavorDimensions 'type'

    productFlavors {
        domestic {
            dimension 'type'
            ...
        }

        international {
            dimension 'type'
            ...
        }
    }

Это дает мне четыре возможных варианта сборки:

  • domesticDebug
  • domesticRelease
  • internationalDebug
  • internationalRelease

Тогда предположим, что у меня есть библиотека, mylibrary. Я не объявляю разновидности, поэтому он просто имеет:

  • debug
  • release

Я добавляю некоторые модульные тесты в эту библиотеку. Я включаю библиотеку в качестве зависимости внутри «приложения».

Когда я запускаю задачу Gradle верхнего уровня testDomesticDebugUnitTest, я случайно ожидаю увидеть выполнение модульных тестов библиотеки.

Однако, похоже, для поиска mylibrary задачи testDomesticDebugUnitTest она не найдена - только testDebugUnitTest - и, следовательно, не выполняется никаких тестов.

Очевидные решения для этого:

  1. объявляйте ароматы везде, или
  2. не запускайте спецификацию ароматов c tasks

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

Ожидается ли то, что я вижу, и как мне с этим справляться?

...