the - Proyecto de desgaste de Android con 3 sabores, 3 buildTypes y 2 applicationIdSuffixes
gradle version android studio (1)
Cuando compilo mi proyecto después de intentar combinar los sabores wearApp y buildTypes con applicationIdSuffixes, aparece el siguiente mensaje de error:
Error:Execution failed for task '':app:handleFirstCustomerTestMicroApk''.
> The main and the micro apps do not have the same package name.
Desde mi 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'')
}
Desde mi 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
}
Sé por esto que <buildType>WearApp
es posible, pero lo que realmente necesito es <flavor><BuildType>WearApp
(que no parece ser posible en este momento):
- El empaquetado de la aplicación de desgaste de Android falla con sabores
- Use la aplicación y con el tipo de compilación personalizado con applicationIdSuffix
- https://code.google.com/p/android/issues/detail?id=74658
Mantener todas las 9 dependencias de WearApp anteriores funciona bien si elimino el applicationIdSuffixes, pero aún así se crea una apk de desgaste por buildType sin importar qué buildType elija en Android Studio, y realmente necesito el applicationIdSuffixes.
¿Alguien tiene una solución para esto? A partir de hoy, estoy agregando y eliminando las dependencias de wearApp manualmente cada vez que necesito cambiar mi BuildType y / o flavour, y no es exactamente una solución con la que me sienta cómodo a largo plazo.
EDITAR: No noté esto al principio, pero por alguna razón, las variantes firstDebug, secondDebug y thirdDebug se desarrollan bien con las 9 dependencias de wearApp en build.gradle. El mensaje de error sigue siendo el mismo para firstCustomerTest, firstRelease, secondCustomerTest, secondRelease, thirdCustomerTest y thirdRelease. Todas las variantes compilan las 9 wearApps cada vez, estarían ordenadas para reducir esto a 1.
Según este post
Prueba esto
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'')
}