Construir fallas con 'task :features:catalog:createDebugCompatibleScreenManifests FAILED' mientras se refactoriza a módulos de características dinámicas en android

Una vez que introduje módulos de funciones dinámicas en mi aplicación, pude refactorizar exitosamente uno (ordenes), construir y desplegar. Pero al refactorizar el segundo módulo, es decir, mover archivos y recursos a ese módulo, obtengo este error en la construcción:


Execution failed for task ':features:catalog:createDebugCompatibleScreenManifests'.
> Failed to calculate the value of task ':features:catalog:createDebugCompatibleScreenManifests' property 'applicationId'.
   > Failed to query the value of property 'testedApplicationId'.
      > Collection has more than one element.

He probado las siguientes correcciones:

  1. invalidate cache
  2. reclone project
  3. asegurar que todos los archivos de gris son idénticos (excepto applicationId bit)
  4. comprobó que no hay errores en los archivos manifiesto
  5. confirmó que no hay dos módulos que compartan el mismo ID de aplicación.
  6. rebajar el proyecto al último compromiso de trabajo.

¿Algún apuntador de lo que está causando este problema de construcción?

Otras informaciones: Estoy usando la inyección de dependencia con koin.

Módulo App/Main manifest.xml

xml version="1.0" encoding="utf-8"?


    

    

    
    

    

        
        

        

        
            
                

                
            
        

        

        
            
                
            
        

        
        

        
            
        
    


Módulo App/Main build.gradle

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-kapt'

apply plugin: "androidx.navigation.safeargs.kotlin"

apply plugin: 'realm-android'

apply plugin: 'com.google.gms.google-services'

apply plugin: 'com.google.firebase.crashlytics'

apply plugin: (BuildPlugins.dependencyUpdateChecker)

android {

    compileSdkVersion AndroidSDK.compileSDKVersion
    buildToolsVersion Versions.buildTools

    defaultConfig {
        applicationId "com.example.app"
        minSdkVersion AndroidSDK.minimumSDKVersion
        targetSdkVersion AndroidSDK.targetSDKVersion
        versionCode Versions.versionCode
        versionName Versions.versionName

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        debug {
            manifestPlaceholders = [crashlyticsCollectionEnabled: "false"]
            applicationIdSuffix(".debug")
            versionNameSuffix("-debug")
            buildConfigField("String", "BASE_URL", debug_url)
        }

        staging {
            initWith(release)
            manifestPlaceholders = [crashlyticsCollectionEnabled: "false"]
            applicationIdSuffix(".staging")
            versionNameSuffix("-staging")
            buildConfigField("String", "BASE_URL", staging_url)
        }

        release {
            manifestPlaceholders = [crashlyticsCollectionEnabled: "true"]
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            buildConfigField("String", "BASE_URL", production_url)
        }
    }

    buildFeatures {
        viewBinding = true
        dataBinding = true
    }

    kotlinOptions {
        jvmTarget = '1.8'
    }

    compileOptions {
        sourceCompatibility 1.8
        targetCompatibility 1.8
    }

    kapt {
        correctErrorTypes = true
    }

    dynamicFeatures = [':features:kiosks', ':features:catalog', ':features:checkout', ':features:summary', ':features:orders']
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation Libraries.kotlinStandardLibrary
    implementation Libraries.appCompat
    implementation Libraries.constraintLayout
    api Libraries.materialComponents
    implementation Libraries.navigationFragment
    implementation Libraries.navigationUI

    implementation Libraries.preferences

    implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'

    //firebase libs
    implementation Libraries.firebaseMessaging
    implementation Libraries.firebaseConfig
    // Recommended: Add the Firebase SDK for Google Analytics.
    implementation Libraries.firebaseAnalytics
    implementation Libraries.firebaseCrashlytics

    // DI
    api Libraries.koinAndroid
    api Libraries.koinLifecycle
    api Libraries.koinViewmodel

    //maps
    implementation 'com.google.android.gms:play-services-maps:17.0.0'

    //own modules
    implementation project(path: ':location-services')
    implementation project(path: ':network')
    api project(path: ':helpers')

    //glide
    implementation 'com.github.bumptech.glide:glide:4.11.0'

    kapt 'com.github.bumptech.glide:compiler:4.11.0'

    //loading button
    api Libraries.buttonProgress

    //pagination lib
    implementation Libraries.jdroidCoder

    //EventBus
    api Libraries.eventBus

    //logging
    api Libraries.timber

    //anko
    api Libraries.ankoDesign
    api Libraries.ankoCommons

    //play core library
    implementation(Libraries.playCore)
    implementation(Libraries.playCorektx)

    // paris for applying styles to views dynamically
    implementation 'com.airbnb.android:paris:1.7.2'

    // lottie for animations
    implementation 'com.airbnb.android:lottie:3.5.0'

    // Okhttp Profiler
    implementation Libraries.loggingInterceptor

    // Test libs
    testImplementation(TestLibraries.junit4)
    androidTestImplementation(TestLibraries.androidX)
    androidTestImplementation(TestLibraries.espresso)
    androidTestImplementation(TestLibraries.annotationLib)
}

Módulo de alimentación 1(ordenes) manifest.xml

xml version="1.0" encoding="utf-8"?


    
        
            
        
        
    

Gráfico 1 (ordenes) build.gradle

apply plugin: 'com.android.dynamic-feature'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: (BuildPlugins.dependencyUpdateChecker)


android {
    compileSdkVersion AndroidSDK.compileSDKVersion
    buildToolsVersion Versions.buildTools

    defaultConfig {
        applicationId "com.example.app.orders"
        minSdkVersion AndroidSDK.minimumSDKVersion
        targetSdkVersion AndroidSDK.targetSDKVersion
        versionCode Versions.versionCode
        versionName Versions.versionName

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        debug {}
        staging {}
        release {}
    }

    compileOptions {
        sourceCompatibility 1.8
        targetCompatibility 1.8
    }

    kotlinOptions {
        jvmTarget = '1.8'
    }

    buildFeatures {
        viewBinding = true
        dataBinding = true
    }
}

dependencies {
    implementation project(":app")
    implementation project(path: ':network')
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation Libraries.kotlinStandardLibrary
    implementation Libraries.ktxCore
    implementation Libraries.appCompat
    implementation Libraries.constraintLayout
    implementation Libraries.materialComponents
    implementation Libraries.navigationFragment
    implementation Libraries.navigationUI

    implementation Libraries.buttonProgress
    implementation Libraries.ankoDesign
    implementation Libraries.ankoCommons

    implementation(Libraries.coroutinesAndroid)

    implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'

    // Test libs
    testImplementation(TestLibraries.junit4)
    androidTestImplementation(TestLibraries.androidX)
    androidTestImplementation(TestLibraries.espresso)
    androidTestImplementation(TestLibraries.annotationLib)
}

Pregunta hecha hace 3 años, 4 meses, 29 días - Por nasean


5 Respuestas:

  • La cuestión terminó siendo una biblioteca que había importado.

    La biblioteca tenía plugin apply plugin: 'com.android.application'en lugar de apply plugin: 'com.android.library'

    Como tal, la tarea de la construcción de cuna estaba buscando applicationId y applicationName en el manifiesto, que no estaba allí.

    Oops, error de desarrollador.

    Respondida el Dec 18, 2020 a las 09:07 - por techtrailblazer

    Votos positivos: 0 | Votos negativos: 0

  • Para mí sucedió cuando se agregó un nuevo módulo de características dinámicas con múltiples sabores.

    Lo resolví cambiando dentro módulo. gris:

    implementation project(path: ':app', configuration: 'default')
    

    en

    implementation project(":app")
    

    Luego añadir sabores en módulo. gris

    flavorDimensions "app"
    
    productFlavors {
        flavor1 {}
        flavor2 {}
        flavor3 {}
    }
    

    Aquí está mi final módulo. gris

    apply plugin: 'com.android.dynamic-feature'
    
    android {
        compileSdkVersion 29
        buildToolsVersion '29.0.3'
    
        defaultConfig {
            minSdkVersion 21
            targetSdkVersion 29
            versionCode 1
            versionName "1.0"
    
            testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        }
    
        flavorDimensions "app"
    
        productFlavors {
            flavor1 {}
            flavor2 {}
            flavor3 {}
        }
    
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
    }
    
    dependencies {
        implementation project(":app")
    }
    

    Respondida el Dec 18, 2020 a las 09:16 - por markupmaestro

    Votos positivos: 0 | Votos negativos: 0

  • Desinstalar la aplicación del emulador y luego reiniciarla

    Respondida el Dec 18, 2020 a las 09:22 - por pixelprodigy

    Votos positivos: 0 | Votos negativos: 0

  • El error que estás experimentando parece estar relacionado con la configuración de los módulos dinámicos en tu proyecto de Android. En particular, el error se menciona al calcular el valor de la propiedad 'applicationId' para la tarea ':features:catalog:createDebugCompatibleScreenManifests'. Esto puede indicar un problema con la configuración de la aplicación principal y cómo se relaciona con los módulos dinámicos.

    Aquí tienes algunas sugerencias para abordar este problema:

    • Verificar la configuración de los módulos dinámicos: Asegúrate de que la configuración de los módulos dinámicos, en este caso, el módulo 'catalog', esté correctamente establecida. Revisa el archivo `build.gradle` del módulo 'catalog' y asegúrate de que la aplicaciónId esté configurada de manera consistente con los otros módulos.
    1. Revisar las dependencias entre módulos: Verifica las dependencias entre los distintos módulos de tu proyecto. Asegúrate de que los módulos estén correctamente referenciados en el archivo settings.gradle y en los archivos build.gradle

    Respondida el Dec 19, 2020 a las 09:10 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Causa Probable:

    La causa del error es la configuración incorrecta del applicationId en el módulo del catálogo. Cuando se refactoriza una aplicación a módulos de características dinámicas, cada módulo debe tener su propio applicationId único. Sin embargo, parece que el módulo del catálogo todavía utiliza el mismo applicationId que la aplicación principal.

    Solución:

    • Verifica el archivo de manifiesto del módulo del catálogo:
    - Abre el archivo `manifest.xml` del módulo del catálogo.
    • Asegúrate de que el atributo `package` se establece en un identificador de paquete único que no coincida con el `applicationId` de la aplicación principal.

    • Elimina la etiqueta dist:module:
    - Si el módulo del catálogo tiene una etiqueta dist:module en su archivo manifest.xml, elimínala. Esta etiqueta solo es necesaria para las aplicaciones instantáneas, que no se utilizan en este caso.

    • Limpia y vuelve a compilar:
    - Una vez que hayas actualizado el package y eliminado la etiqueta dist:module (si procede), limpia y vuelve a compilar el proyecto. Esto debería resolver el error.

    Ejemplo:

    Módulo del catálogo manifest.xml

    xml
    
    
        
    
            
    
        
    
    
    

    Después de realizar estos cambios, vuelve a compilar el proyecto. El error debería desaparecer y deberías poder crear con éxito el módulo del catálogo.

    Respondida el Dec 19, 2020 a las 09:15 - por Gemini

    Votos positivos: 0 | Votos negativos: 0