Подтвердить что ты не робот

Проект одежды для Android с 3 ароматами, 3 buildTypes и 2 applicationIdSuffixes

Когда я создаю свой проект, пытаясь объединить flavors wearApp и buildTypes с applicationIdSuffixes, я получаю следующее сообщение об ошибке:

Error:Execution failed for task ':app:handleFirstCustomerTestMicroApk'.
> The main and the micro apps do not have the same package name.

Из моего приложения /build.gradle:

buildTypes {
    debug {
        applicationIdSuffix '.debug'
        debuggable true
        embedMicroApp = true
    }
    customerTest {
        applicationIdSuffix '.customertest'
        debuggable true
        embedMicroApp = true
    }
    release {
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        minifyEnabled true
        embedMicroApp = true
    }
}

productFlavors {
    first {
        applicationId 'com.my.app.first'
    }
    second {
        applicationId 'com.my.app.second'
    }
    third {
        applicationId 'com.my.app.third'
    }
}

dependencies {
    firstWearApp project(path: ':wear', configuration: 'firstDebug')
    firstWearApp project(path: ':wear', configuration: 'firstCustomerTest')
    firstWearApp project(path: ':wear', configuration: 'firstRelease')

    secondWearApp project(path: ':wear', configuration: 'secondDebug')
    secondWearApp project(path: ':wear', configuration: 'secondCustomerTest')
    secondWearApp project(path: ':wear', configuration: 'secondRelease')

    thirdWearApp project(path: ':wear', configuration: 'thirdDebug')
    thirdWearApp project(path: ':wear', configuration: 'thirdCustomerTest')
    thirdWearApp project(path: ':wear', configuration: 'thirdRelease')
}

Из моего wear/build.gradle:

buildTypes {
    debug {
        applicationIdSuffix '.debug'
        minifyEnabled false
    }
    customerTest {
        applicationIdSuffix '.customertest'
        minifyEnabled false
    }
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}
productFlavors {
    first {
        applicationId 'com.my.app.first'
    }
    second {
        applicationId 'com.my.app.second'
    }
    third {
        applicationId 'com.my.app.third'
    }
}

android {
    publishNonDefault true
}

Я знаю из них, что <buildType>WearApp возможно, но мне действительно нужно <flavor><BuildType>WearApp (которые сейчас не кажутся возможными):

Сохраняя все вышеперечисленные зависимости wearApp от типов, если я удалю appIdSuffixes, но затем он по-прежнему строит один из них apk per buildType независимо от того, какой тип buildType я выбираю в Android Studio, и мне действительно нужно приложение IdSuffixes.

У кого-нибудь есть обходное решение для этого? На сегодняшний день я добавляю и удаляю зависимости wearApp вручную каждый раз, когда мне нужно изменить свой тип buildType и/или вкус, и это не совсем то решение, с которым мне удобно в конечном итоге.

EDIT: сначала я этого не заметил, но по некоторым причинам варианты firstDebug, secondDebug и thirdDebug строят просто отлично со всеми 9 зависимостями wearApp в build.gradle. Сообщение об ошибке остается неизменным для firstCustomerTest, firstRelease, secondCustomerTest, secondRelease, thirdCustomerTest и thirdRelease. Все варианты скомпилируют 9 wearApps каждый раз, было бы аккуратно уменьшить это до 1.

4b9b3361

Ответ 1

Согласно This Post

Попробуйте это

configurations {
    firstDebugWearApp
    firstCustomerTestWearApp
    firstReleaseWearApp
    secondDebugWearApp
 ...//  And all the others
}
  dependencies {
        firstDebugWearApp project(path: ':wear', configuration: 'firstDebug')
        firstCustomerTestWearApp project(path: ':wear', configuration: 'firstCustomerTest')
        firstReleaseWearApp project(path: ':wear', configuration: 'firstRelease')

        secondDebugWearApp project(path: ':wear', configuration: 'secondDebug')
        secondCustomerTestWearApp project(path: ':wear', configuration: 'secondCustomerTest')
        secondReleaseWearApp project(path: ':wear', configuration: 'secondRelease')

        thirdDebugWearApp project(path: ':wear', configuration: 'thirdDebug')
        thirdCustomerTestWearApp project(path: ':wear', configuration: 'thirdCustomerTest')
        thirdReleaseWearApp project(path: ':wear', configuration: 'thirdRelease')
    }