please - Problema de compilación de Android Studio 3.0(no se puede elegir entre configuraciones)
jdk android studio (7)
Problema con la última versión 3.0 (Beta 2) Mi proyecto tiene 1 submódulo de un tercero, por lo que solo tengo acceso a su build.gradle.
Mi proyecto tiene 3 sabores, snap, uat, producción. Cada uno tiene 2 tipos de compilación, depuración y lanzamiento. Cuando trato de construir me sale esto.
Error:Cannot choose between the following configurations of project :lp_messaging_sdk:
- debugApiElements
- debugRuntimeElements
- releaseApiElements
- releaseRuntimeElements
All of them match the consumer attributes:
- Configuration ''debugApiElements'':
- Found com.android.build.api.attributes.BuildTypeAttr ''debug'' but wasn''t required.
- Found com.android.build.gradle.internal.dependency.AndroidTypeAttr ''Aar'' but wasn''t required.
- Found com.android.build.gradle.internal.dependency.VariantAttr ''debug'' but wasn''t required.
- Found org.gradle.api.attributes.Usage ''java-api'' but wasn''t required.
- Configuration ''debugRuntimeElements'':
- Found com.android.build.api.attributes.BuildTypeAttr ''debug'' but wasn''t required.
- Found com.android.build.gradle.internal.dependency.AndroidTypeAttr ''Aar'' but wasn''t required.
- Found com.android.build.gradle.internal.dependency.VariantAttr ''debug'' but wasn''t required.
- Found org.gradle.api.attributes.Usage ''java-runtime'' but wasn''t required.
- Configuration ''releaseApiElements'':
- Found com.android.build.api.attributes.BuildTypeAttr ''release'' but wasn''t required.
- Found com.android.build.gradle.internal.dependency.AndroidTypeAttr ''Aar'' but wasn''t required.
- Found com.android.build.gradle.internal.dependency.VariantAttr ''release'' but wasn''t required.
- Found org.gradle.api.attributes.Usage ''java-api'' but wasn''t required.
- Configuration ''releaseRuntimeElements'':
- Found com.android.build.api.attributes.BuildTypeAttr ''release'' but wasn''t required.
- Found com.android.build.gradle.internal.dependency.AndroidTypeAttr ''Aar'' but wasn''t required.
- Found com.android.build.gradle.internal.dependency.VariantAttr ''release'' but wasn''t required.
- Found org.gradle.api.attributes.Usage ''java-runtime'' but wasn''t required.
Leí que había problemas con los submódulos y los tipos de compilación, pero luego leí que se solucionó. Debía agregar los mismos tipos de compilación o algo así a los submódulos build.gradle y luego agregar
buildTypeMatching ''debug'', ''release''
Sin embargo, cuando hago esto, aparece este error,
Error:Could not select value from candidates [debug, release] using AlternateDisambiguationRule.BuildTypeRule.
apply plugin: ''com.android.application''
android {
repositories {
flatDir {
dirs project('':lp_messaging_sdk'').file(''aars'')
}
}
// Android parameters
compileSdkVersion = 26
buildToolsVersion = ''26.0.1''
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
dexOptions {
preDexLibraries true
}
defaultConfig {
minSdkVersion 19
versionName buildName
versionCode buildVersion
multiDexEnabled true
resConfigs "en", "fr", "fr-rCA"
}
signingConfigs {
release {
}
}
flavorDimensions "default"
productFlavors {
snap {
ext.betaDistributionGroupAliases = "INTERNAL"
ext.betaDistributionReleaseNotesFilePath = ''changelog.txt''
ext.betaDistributionNotifications = true
dimension "default"
}
uat {
ext.betaDistributionGroupAliases = "INTERNAL"
ext.betaDistributionNotifications = true
}
production {
}
}
buildTypes {
debug {
versionNameSuffix createVersionNameSuffix()
applicationIdSuffix ''.debug''
minifyEnabled true
testCoverageEnabled false
buildConfigField "String", "PLAY_STORE_VERSION_NAME", ''"'' + PLAY_STORE_VERSION_NAME + ''"''
// Workaround for : https://code.google.com/p/android/issues/detail?id=212882
proguardFiles fileTree(dir: ''proguard'', include: [''*.pro'']).asList().toArray()
ext.enableCrashlytics = false
}
release {
versionNameSuffix createVersionNameSuffix()
minifyEnabled true
testCoverageEnabled = false
signingConfig signingConfigs.release
buildConfigField "String", "PLAY_STORE_VERSION_NAME", ''"'' + PLAY_STORE_VERSION_NAME + ''"''
// Workaround for : https://code.google.com/p/android/issues/detail?id=212882
proguardFiles fileTree(dir: ''proguard'', include: [''*.pro'']).asList().toArray()
}
}
//Used to ignore duplicated entries added to meta-inf
packagingOptions {
exclude ''LICENSE.txt''
exclude ''META-INF/LICENSE''
exclude ''META-INF/LICENSE.txt''
exclude ''META-INF/license''
exclude ''META-INF/license.txt''
exclude ''META-INF/NOTICE''
exclude ''META-INF/NOTICE.txt''
exclude ''META-INF/notice''
exclude ''META-INF/notice.txt''
exclude ''META-INF/services/javax.annotation.processing.Processor''
}
dexOptions {
javaMaxHeapSize "2048m"
dexInProcess true
}
lintOptions {
abortOnError true
xmlReport true
htmlReport true
disable ''MissingTranslation'', ''InvalidPackage''
disable ''GradleCompatible'', ''GradleCompatible''
disable ''NewApi'', ''NewApi''
disable ''GradleDependency''
disable ''UnusedResources''
disable ''IconDensities''
disable ''TypographyDashes''
disable ''ContentDescription''
htmlOutput file("$project.buildDir/reports/lint/lint-result.html")
xmlOutput file("$project.buildDir/reports/lint/lint-result.xml")
}
testOptions {
unitTests.returnDefaultValues = true
}
}
greendao {
schemaVersion 13
targetGenDir ''src/main/java/''
}
ext.betaDistributionReleaseNotes = System.getenv("CHANGELOG")
def createVersionNameSuffix() {
def buildNumber = System.env.BUILD_NUMBER
def buildTimestamp = new Date().format(''HH:mm dd/MM/yy'')
return buildNumber ? " ($buildNumber)" : " ($buildTimestamp)"
}
def getBuildVersionFromName(String buildName) {
List data = buildName.tokenize(".")
String resultString = "19";
for (String s : data) {
resultString += s;
}
if (System.env.BUILD_NUMBER) {
resultString += System.env.BUILD_NUMBER
}
return Integer.parseInt(resultString);
}
//Verify the app before creating a Pull Request
task verifyPR
verifyPR.dependsOn(''clean'')
verifyPR.dependsOn(''lint'')
verifyPR.dependsOn(''checkstyle'')
verifyPR.dependsOn(''pmd'')
verifyPR.dependsOn(''testSnapDebugUnitTest'')
dependencies {
// Android Dependencies
compile ''com.android.support:appcompat-v7:26.0.1''
compile ''com.android.support:design:26.0.1''
compile ''com.android.support:recyclerview-v7:26.0.1''
compile ''com.android.support:multidex:1.0.2''
// Dagger Dependencies
apt ''com.google.dagger:dagger-compiler:2.11''
compile ''org.glassfish:javax.annotation:10.0-b28''
compile ''com.google.dagger:dagger:2.11''
// Rx Dependencies
compile ''io.reactivex:rxandroid:1.2.1''
compile ''io.reactivex:rxjava:1.3.0''
compile ''com.jakewharton.rxbinding:rxbinding-appcompat-v7:0.4.0''
compile ''com.jakewharton.rxbinding:rxbinding-support-v4:0.4.0''
compile ''com.squareup.whorlwind:whorlwind:1.0.1''
compile ''com.tbruyelle.rxpermissions:rxpermissions:0.9.4@aar''
compile ''com.jenzz:RxAppState:2.0.0''
// Tools
compile ''com.crashlytics.sdk.android:crashlytics:2.6.5''
// ButterKnife
compile ''com.jakewharton:butterknife:8.4.0''
// Google Maps
compile ''com.google.android.gms:play-services-maps:11.0.4''
compile "com.google.android.gms:play-services-analytics:11.0.4"
compile ''com.google.android.gms:play-services-location:11.0.4''
compile ''com.google.android.gms:play-services-places:11.0.4''
compile ''com.google.android.gms:play-services-gcm:11.0.4''
// Geofence
compile(''pl.charmas.android:android-reactive-location:0.10@aar'') {
transitive = true
}
// Retrofit
compile ''com.squareup.retrofit2:retrofit:2.3.0''
compile ''com.squareup.retrofit2:adapter-rxjava:2.3.0''
// OKHTTP
compile ''com.squareup.okhttp:okhttp-urlconnection:2.7.5''
// Libphonenumber
compile ''com.googlecode.libphonenumber:libphonenumber:7.3.2''
// UI
compile ''com.tubb.smrv:swipemenu-recyclerview:5.0.2''
// EventBus
compile ''org.greenrobot:eventbus:3.0.0''
// Database
compile ''org.greenrobot:greendao:3.2.0''
// Chuck HTTP Inspector
debugCompile ''com.readystatesoftware.chuck:library:1.0.4''
releaseCompile ''com.readystatesoftware.chuck:library-no-op:1.0.4''
// ViewPager Indicator
compile ''com.github.JakeWharton:ViewPagerIndicator:2.4.1''
// Amplitude
compile ''com.amplitude:android-sdk:2.13.2''
// TESTS
testCompile ''junit:junit:4.12''
testCompile "org.mockito:mockito-core:1.10.19"
testCompile "org.powermock:powermock-module-junit4:1.6.5"
testCompile "org.powermock:powermock-module-junit4-rule:1.6.4"
testCompile "org.powermock:powermock-api-mockito:1.6.5"
testCompile "org.powermock:powermock-classloading-xstream:1.6.4"
compile project('':lp_messaging_sdk'')
}
Y aquí está la biblioteca de terceros build.gradle
apply plugin: ''com.android.library''
android {
compileSdkVersion 26
buildToolsVersion "26.0.1"
defaultConfig {
minSdkVersion 14
targetSdkVersion 26
versionCode 250
versionName "2.5.0"
}
flavorDimensions "default"
productFlavors {
snap {
ext.betaDistributionGroupAliases = "INTERNAL"
ext.betaDistributionReleaseNotesFilePath = ''changelog.txt''
ext.betaDistributionNotifications = true
dimension "default"
}
uat {
ext.betaDistributionGroupAliases = "INTERNAL"
ext.betaDistributionNotifications = true
}
production {
}
}
signingConfigs {
release {
}
}
buildTypeMatching ''snap'', ''debug'', ''release''
buildTypes {
debug {
applicationIdSuffix ''.debug''
minifyEnabled true
testCoverageEnabled false
buildConfigField "String", "PLAY_STORE_VERSION_NAME", ''"'' + PLAY_STORE_VERSION_NAME + ''"''
// Workaround for : https://code.google.com/p/android/issues/detail?id=212882
proguardFiles fileTree(dir: ''proguard'', include: [''*.pro'']).asList().toArray()
ext.enableCrashlytics = false
}
release {
minifyEnabled true
testCoverageEnabled = false
signingConfig signingConfigs.release
buildConfigField "String", "PLAY_STORE_VERSION_NAME", ''"'' + PLAY_STORE_VERSION_NAME + ''"''
// Workaround for : https://code.google.com/p/android/issues/detail?id=212882
proguardFiles fileTree(dir: ''proguard'', include: [''*.pro'']).asList().toArray()
}
}
defaultConfig {
consumerProguardFiles ''proguard.cfg''
}
repositories {
flatDir {
dirs ''aars''
}
}
lintOptions {
disable ''InvalidPackage''
}
}
dependencies {
compile ''com.android.support:appcompat-v7:26.0.1''
compile ''com.android.support:design:26.0.1''
compile ''com.android.support:recyclerview-v7:26.0.1''
compile ''com.android.support:percent:26.0.1''
compile ''com.android.support.constraint:constraint-layout:1.0.2''
compile ''com.squareup.picasso:picasso:2.5.2''
compile ''com.neovisionaries:nv-websocket-client:1.31''
compile ''com.squareup.okhttp3:okhttp:3.8.0''
compile(name: ''infra'', ext: ''aar'')
compile(name: ''messaging'', ext: ''aar'')
compile(name: ''messaging_ui'', ext: ''aar'')
compile(name: ''ui'', ext: ''aar'')
}
¿Alguien sabe cómo puedo resolver este problema? Gracias
Cuando actualicé mi proyecto del nivel 23 al 27 de la API y gradle a 3.1, apareció este error
"No se puede elegir entre diferentes configuraciones".
Entonces para resolver este problema.
reemplace el proyecto de compilación ('': su nombre de proyecto'')
con proyecto de implementación ('': nombre del proyecto'')
en gradle esto resuelve el problema.
En mi caso similar, la solución fue:
build.gradle:
android { defaultConfig { // because I have two project flavors in that library missingDimensionStrategy ''project'', ''myProjectName'' // because I have a "full" and a "debug" flavor in that library missingDimensionStrategy ''mode'', ''full'' } buildTypes { debug { ... } release { ... } } } dependencies { // because the project(path:'''', configuration:'''') did not work in this case implementation project('':myModuleName1'') implementation project('':myModuleName2'') }
Tal vez esto ayude a otros que terminan aquí con un problema similar.
Error: no se puede elegir entre las siguientes configuraciones de proyecto .......
Puede haber problemas de escritura de Gradle Cuando cambié a la siguiente redacción, no existe tal error
// compilar proyecto ('': MPChartLib'')
implementation project('':MPChartLib'')
Quizás cuando la referencia dependa de otros módulos debería escribirse en esta implementación
Mi problema fue el hecho de que estaba cambiando el nombre del archivo de salida (y la ruta)
Una vez que eliminé el código gradle que estaba cambiando el nombre del aar, el camino hacia mi solución fue más simple.
Si está utilizando el complemento android-apt para el procesamiento de anotaciones, intente eliminar ese complemento y reemplazar todas las referencias de
apt some_dependency
con
annotationProcessor some_dependency
como se sugiere en
la guía de migración para Android Gradle Plugin 3.0.0
.
Tratar
implementation project(path: '':lp_messaging_sdk'', configuration: ''default'')
Nota:
Puede evitar este error actualizando gradle a
4.3
verifique esto
.
Explicacion :
El uso de configuraciones de dependencia facilita la definición y especificación de qué usar en un subproyecto.
En mi respuesta, utilizamos la configuración predeterminada y esto publicará y expondrá solo el sabor de "lanzamiento" a otros proyectos y módulos de Android.
Suponga que necesita incluir este sabor solo con sabor de demostración o con sabor de liberación, sería como :
configurations {
// Initializes placeholder configurations that the Android plugin can use when targeting
// the corresponding variant of the app.
demoDebugCompile {}
fullReleaseCompile {}
...
}
dependencies {
// If the library configures multiple build variants using product flavors,
// you must target one of the library''s variants using its full configuration name.
demoDebugCompile project(path: '':lp_messaging_sdk'', configuration: ''demoDebug'')
fullReleaseCompile project(path: '':lp_messaging_sdk'', configuration: ''fullRelease'')
...
}
Entonces, en su caso, puede usar sus sabores de compilación, y eso es lo que apareció en el registro de errores.
Cannot choose between the following configurations of project :lp_messaging_sdk
Y eso significa que su
lp_messaging_sdk
tiene varias configuraciones de compilación:
- debugApiElements
- debugRuntimeElements
- releaseApiElements
- releaseRuntimeElements
Y android-studio te dice que "no puedo elegir una configuración de estas diferentes, ¿definirías una para mí?"
Puedes leer más here .
para AndroidStudio 3.0+, mainMoudle tiene buildTypes y buildTypes igual que libModule buildTypes y buildTypes, le gustaría:
mainModule:
buildTypes {
release {
buildConfigField "boolean", "LOG_DEBUG", "false"
zipAlignEnabled true
shrinkResources true
minifyEnabled true
proguardFiles ''proguard-rules.pro''
}
debug {
buildConfigField "boolean", "LOG_DEBUG", "true"
zipAlignEnabled true
shrinkResources false
minifyEnabled false
proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro''
}
debug2{
}
}
libModule:
buildTypes {
release {
}
debug {
}
debug2{
}
}
o puedes usar MatchFallbacks para resolver este click