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
git clone https://github.com/geektimecoil/react-native-onesignal.git
cd react-native-onesignal
git checkout 31b52420c807c22405e70b44800e20f3a8e3456e
cd examples/RNOneSignal
yarn
cd android
./gradlew assembleAndroidTest
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
Comentario más útil
Gracias por su paciencia mientras investigamos el problema.