La description
Lors de l'assemblage de l'application de test Android à l'aide de ./gradlew assembleAndroidTest
, la fusion du manifeste échoue avec les erreurs suivantes :
> 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.
Un problème similaire a été signalé avec le numéro 579 en juillet 2018 et a ensuite été fermé en janvier 2019 sans aucune résolution apparente.
Environnement
L'exemple de projet à examples/RNOneSignal@31b5242
qui utilise react-native-onesignal v3.2.14.
Étapes à reproduire
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
Courir là-dessus aussi.
@sonicdoe Utilisez -vous productFlavors
? Si c'est le cas, vous devrez modifier la commande comme :
buildType = "déboguer"
productFlavor = "dev"
./gradlew assembleDevDebugAndroidTest
Non, l'exemple de projet à examples/RNOneSignal@31b5242
(que j'ai utilisé pour reproduire cela) n'utilise pas de saveurs de produits.
Je rencontre également cela - une recherche google aléatoire a montré ce problème https://github.com/crosswalk-project/cordova-plugin-crosswalk-webview/issues/207 qui suggère d'utiliser buildToolsVersion: 28.0.0.
Nous le faisons déjà, mais j'ai remarqué un avertissement lors de la construction
<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"/>
où ce projet le force à rétrograder ;(
Mon problème personnel a été résolu lorsque j'ai construit en utilisant le bon task-name
après la commande gradlew
(décrite ci-dessus).
FWIW, voici une partie de mon fichier 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"
}
}
}
}
Merci de votre patience pendant que nous étudions le problème.
Salut à tous,
Nous ne savons pas encore comment résoudre définitivement ce problème. En attendant, vous pouvez exécuter :
./gradlew app:assembleAndroidTest
Nous avons également réalisé que nous rencontrions des problèmes avec ./gradlew build
, nous créons donc un PR qui résoudra également ce problème.
Merci d'avoir porté cela à notre attention.
J'ai pu faire fonctionner assembleAndroidTest
en injectant les espaces réservés du manifeste dans react-native-onesignal lui-même (similaire à https://github.com/geektimecoil/react-native-onesignal/issues/579#issuecomment- 442504553) et en supprimant la classe ApplicationTest
dans android/src/androidTest
(ce qui semble n'avoir aucun effet de toute façon). Voir ma branche gradle-android-test
pour tous les changements.
Malheureusement, je n'ai pas pu comprendre pourquoi ce problème se produit et pourquoi ces changements sont nécessaires. Pour autant que j'ai pu le savoir, androidTest
résout en un arbre de dépendance différent, c'est pourquoi la fusion manifeste se comporte différemment dans ce cas.
@rgomezp Faites-moi savoir si vous avez plus d'informations et si les modifications ci-dessus seraient acceptables. Si c'est le cas, j'ouvrirais une pull request.
@sonicdoe ,
Merci pour la correction @sonicdoe ! Veuillez créer le PR
@rgomezp ajoutant ma question ici depuis que vous avez fermé l'autre ticket
ce répertoire doit-il être inclus dans le package npm ou ne peut-il vivre que dans le référentiel GitHub ?
Parce que si la réponse est non, alors ce problème est résolu pour moi.
Je demande parce que je ne sais pas quelles sont les bonnes pratiques mais je ne vois pas d'autres packages RN avec ce répertoire androidTest donc je suppose que personne ne teste ou qu'ils n'incluent pas de tests dans le package npm?
@mtt87 ,
Ce n'est pas nécessaire. Les créateurs originaux doivent l'avoir inclus accidentellement. Nous le supprimons dans la prochaine version du SDK RN OneSignal. Merci!
Fantastique 😄 Merci
Salut à tous,
Nous publierons très bientôt la dernière version du SDK réactif natif avec des correctifs. Si vous souhaitez tester les modifications maintenant, modifiez simplement votre react-native-onesignal dans votre package.json pour pointer vers ce référentiel.
"react-native-onesignal":"geektimecoil/react-native-onesignal"
J'aimerais entendre vos commentaires avant la sortie. Acclamations!
EDIT : IGNOREZ CES INSTRUCTIONS CAR LE PLUGIN A ÉTÉ POUSSÉ SUR NPM
Je vois que vous avez déjà publié la dernière version, v3.3.0 . Cette version devrait-elle changer quelque chose à propos de ce problème ? Si je répète les étapes de reproduction du message d'origine , je rencontre exactement la même erreur.
@sonicdoe ,
Es-tu sûr de l'avoir réinstallé correctement ?
Edit : je viens de tester. Vous avez raison. Mes excuses ici. Je pensais que le #791 avait corrigé ça. Je discuterai avec @jkasten2 concernant le #789
Commentaire le plus utile
Merci de votre patience pendant que nous étudions le problème.