React-native-onesignal: La fusión de manifiesto falla al ensamblar la aplicación de prueba de Android

Creado en 12 jun. 2019  ·  15Comentarios  ·  Fuente: OneSignal/react-native-onesignal

Descripción

Al ensamblar la aplicación de prueba de Android usando ./gradlew assembleAndroidTest , la fusión del manifiesto falla con los siguientes errores:

> Task :react-native-onesignal:processDebugAndroidTestManifest FAILED
/…/react-native-onesignal/examples/RNOneSignal/node_modules/react-native-onesignal/android/build/intermediates/tmp/manifest/androidTest/debug/manifestMerger8422387923641009676.xml Error:
        Attribute meta-data#onesignal_app_id<strong i="9">@value</strong> at manifestMerger8422387923641009676.xml requires a placeholder substitution but no value for <onesignal_app_id> is provided.
/…/react-native-onesignal/examples/RNOneSignal/node_modules/react-native-onesignal/android/build/intermediates/tmp/manifest/androidTest/debug/manifestMerger8422387923641009676.xml Error:
        Attribute meta-data#onesignal_google_project_number<strong i="10">@value</strong> at manifestMerger8422387923641009676.xml requires a placeholder substitution but no value for <onesignal_google_project_number> is provided.

See http://g.co/androidstudio/manifest-merger for more information about the manifest merger.

Se informó un problema similar con el número 579 en julio de 2018 y posteriormente se cerró en enero de 2019 sin ninguna resolución aparente.

Ambiente

El proyecto de ejemplo en examples/RNOneSignal@31b5242 que usa react-native-onesignal v3.2.14.

pasos para reproducir

  1. git clone https://github.com/geektimecoil/react-native-onesignal.git
  2. cd react-native-onesignal
  3. git checkout 31b52420c807c22405e70b44800e20f3a8e3456e
  4. cd examples/RNOneSignal
  5. yarn
  6. cd android
  7. ./gradlew assembleAndroidTest
Android Help Wanted

Comentario más útil

Gracias por su paciencia mientras investigamos el problema.

Todos 15 comentarios

Me encontré con esto también.

@sonicdoe ¿Estás usando productFlavors ? Si es así, deberá cambiar el comando como:

buildType = "debug"
productFlavor = "dev"

./gradlew assembleDevDebugAndroidTest

No, el proyecto de ejemplo en examples/RNOneSignal@31b5242 (que he usado para reproducir esto) no usa sabores de productos.

También me encuentro con esto: una búsqueda aleatoria en Google mostró este problema https://github.com/crosswalk-project/cordova-plugin-crosswalk-webview/issues/207 que sugiere usar buildToolsVersion: 28.0.0.

Ya hacemos esto, pero luego noté una advertencia durante la compilación

<br i="8"/> OneSignalPlugin: WARNING: OneSignalPlugin: Downgraded 'com.android.support:28.0.0' -> 27.+ to prevent compile errors! Recommend updating your project's compileSdkVersion!<br i="9"/>

donde este proyecto lo está obligando a degradar; (

Mi problema personal se resolvió cuando construí usando el task-name adecuado después del comando gradlew (descrito arriba).

FWIW, aquí está parte de mi archivo android/build.gradle :

subprojects {
    afterEvaluate {project ->
        if (project.hasProperty("android")) {
            android {
                compileSdkVersion 28
                buildToolsVersion '28.0.3'
            }
        }
    }
    project.configurations.all {
        resolutionStrategy.eachDependency { details ->
            if (details.requested.group == 'com.android.support'
                    && !details.requested.name.contains('multidex') ) {
                details.useVersion "28.0.0"
            }
        }
    }
}

Gracias por su paciencia mientras investigamos el problema.

Hola a todos,
Actualmente, no estamos seguros de cómo solucionar este problema de forma permanente. Mientras tanto, puede ejecutar:
./gradlew app:assembleAndroidTest

También nos dimos cuenta de que teníamos problemas con ./gradlew build por lo que estamos creando un PR que también solucionará esto.

Gracias por informarnos sobre esto.

Pude hacer que assembleAndroidTest funcionara inyectando los marcadores de posición del manifiesto en react-native-onesignal en sí (similar a https://github.com/geektimecoil/react-native-onesignal/issues/579#issuecomment- 442504553) y eliminando la clase ApplicationTest en android/src/androidTest (que parece no tener ningún efecto de todos modos). Consulte mi rama gradle-android-test para ver todos los cambios.

Desafortunadamente, no pude llegar al fondo de por qué ocurre este problema y por qué estos cambios son necesarios. Por lo que pude averiguar, androidTest resuelve en un árbol de dependencia diferente, por lo que la fusión de manifiesto se comporta de manera diferente en ese caso.

@rgomezp Avísame si tienes más información y si los cambios anteriores estarían bien. Si es así, abriría una solicitud de extracción.

@sonicdoe ,
¡Gracias por la corrección @sonicdoe! Por favor cree el PR

@rgomezp agregando mi pregunta aquí ya que cerró el otro boleto

¿Es necesario incluir este directorio en el paquete npm o solo puede vivir en el repositorio de GitHub?

Porque si la respuesta es no, entonces este problema está resuelto para mí.

Lo pregunto porque no sé cuáles son las buenas prácticas, pero no veo otros paquetes RN con este directorio androidTest, así que supongo que nadie está probando o no incluyen pruebas en el paquete npm.

@ mtt87 ,
No es necesario. Los creadores originales deben haberlo incluido accidentalmente. Lo eliminaremos en la próxima versión del SDK de RN OneSignal. ¡Gracias!

Fantástico 😄 Gracias

Hola a todos,
Muy pronto lanzaremos la versión más reciente del SDK react-native con correcciones. Si desea probar los cambios ahora, simplemente cambie su react-native-onesignal en su package.json para que apunte a este repositorio.

"react-native-onesignal":"geektimecoil/react-native-onesignal"

Me encantaría escuchar sus comentarios antes del lanzamiento. ¡Salud!

EDITAR: IGNORE ESTAS INSTRUCCIONES COMO EL PLUGIN HA SIDO PULSADO A NPM

Veo que ya ha lanzado la versión más reciente, v3.3.0 . ¿Debería esta versión cambiar algo sobre este problema? Si repito los pasos de reproducción de la publicación original , me encuentro exactamente con el mismo error.

@sonicdoe ,
¿Estás seguro de que lo reinstalaste correctamente?

Editar: recién probado. Estás en lo correcto. Mis disculpas aquí. Pensé que el número 791 solucionó esto. Hablaré con

¿Fue útil esta página
0 / 5 - 0 calificaciones