Quando costruisco il mio progetto dopo aver cercato di coniugare sapori e buildTypes wearApp con applicationIdSuffixes, ricevo il seguente messaggio di errore:progetto di usura Android con 3 gusti, 3 buildTypes e 2 applicationIdSuffixes
Error:Execution failed for task ':app:handleFirstCustomerTestMicroApk'.
> The main and the micro apps do not have the same package name.
Da mia app/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')
}
Dal mio usura/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
}
So per questi che <buildType>WearApp
è possibile, ma quello che mi ha realmente bisogno è <flavor><BuildType>WearApp
(che non sembra possibile in questo momento):
- Android wear application packaging fails with flavours
- Wear App and with custom build type with applicationIdSuffix
- https://code.google.com/p/android/issues/detail?id=74658
Mantenere tutte le suddette dipendenze da WearApp di qualche tipo funziona se rimuovo applicationIdSuffixes, ma poi costruisce ancora un apk di usura per buildType, non importa quale buildType scelgo in Android Studio - e reall ho bisogno di applicationIdSuffixes.
Qualcuno ha una soluzione alternativa per questo? A partire da oggi aggiungo e rimuovo manualmente le dipendenze wearApp ogni volta che ho bisogno di modificare il mio buildType e/o il sapore e non è esattamente una soluzione con cui mi trovo a mio agio nel lungo periodo.
EDIT: Inizialmente non l'avevo notato, ma per qualche ragione le varianti firstDebug, secondDebug e thirdDebug si adattano perfettamente a tutte e 9 le dipendenze wearApp in build.gradle. Il messaggio di errore rimane lo stesso per firstCustomerTest, firstRelease, secondCustomerTest, secondRelease, thirdCustomerTest e thirdRelease. Tutte le varianti compilare i 9 wearApps ogni volta, sarebbe pulito per ridurre questo a 1.
non correlati alla propria domanda: definire "initwith debug" in buildTypes -customerTest, quindi il tuo tipo di build personalizzato utilizzerà automaticamente tutte le impostazioni di "debug". Ora è sufficiente definire "applicationIdSuffix": l'unico diverso rispetto a "debug" Vedere dev.android.com per riferimento: https://developer.android.com/studio/build/build-variants.html#build- tipi ... Sono consapevole che non è incredibilmente utile nel tuo caso, ma mi piacerebbe ancora sottolineare la possibilità. –