Beschreibung
Beim Zusammenstellen der Android-Testanwendung mit ./gradlew assembleAndroidTest
schlägt die Manifest-Zusammenführung mit den folgenden Fehlern fehl:
> 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.
Ein ähnliches Problem wurde im Juli 2018 mit #579 gemeldet und anschließend im Januar 2019 ohne offensichtliche Lösung geschlossen.
Umgebung
Das Beispielprojekt bei examples/RNOneSignal@31b5242
das React-native-Onesignal v3.2.14 verwendet.
Schritte zum Reproduzieren
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
Läuft auch darauf ein.
@sonicdoe Verwenden Sie productFlavors
? In diesem Fall müssen Sie den Befehl wie folgt ändern:
buildType = "debuggen"
productFlavour = "dev"
./gradlew assembleDevDebugAndroidTest
Nein, das Beispielprojekt bei examples/RNOneSignal@31b5242
(das ich verwendet habe, um dies zu reproduzieren) verwendet keine Produktvarianten.
Ich stoße auch darauf - eine zufällige Google-Suche zeigte dieses Problem https://github.com/crosswalk-project/cordova-plugin-crosswalk-webview/issues/207, das die Verwendung von buildToolsVersion: 28.0.0 vorschlägt.
Das machen wir schon, aber dann habe ich beim Build eine Warnung bemerkt
<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"/>
wo dieses Projekt es zum Downgrade zwingt ;(
Mein persönliches Problem wurde gelöst, als ich nach dem Befehl gradlew
(oben beschrieben) das richtige task-name
.
FWIW, hier ist ein Teil meiner android/build.gradle
Datei:
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"
}
}
}
}
Vielen Dank für Ihre Geduld, während wir das Problem untersuchen.
Hallo zusammen,
Wir sind uns derzeit nicht sicher, wie wir dies dauerhaft beheben können. In der Zwischenzeit können Sie Folgendes ausführen:
./gradlew app:assembleAndroidTest
Wir haben auch festgestellt, dass wir Probleme mit ./gradlew build
also erstellen wir eine PR, die auch dieses Problem beheben wird.
Danke, dass Sie uns darauf aufmerksam gemacht haben.
Ich konnte assembleAndroidTest
zum Laufen bringen, indem ich die Manifest-Platzhalter in das React-native-Onesignal selbst einfügte (ähnlich wie https://github.com/geektimecoil/react-native-onesignal/issues/579#issuecomment- 442504553) und Entfernen der Klasse ApplicationTest
in android/src/androidTest
(was sowieso keine Wirkung zu haben scheint). Alle Änderungen finden Sie in meinem gradle-android-test
Zweig.
Leider konnte ich nicht auf den Grund gehen, warum dieses Problem auftritt und warum diese Änderungen notwendig sind. Soweit ich herausfinden konnte, wird androidTest
in einen anderen Abhängigkeitsbaum aufgelöst, weshalb sich die manifeste Zusammenführung in diesem Fall anders verhält.
@rgomezp Lassen Sie es mich wissen, wenn Sie weitere Erkenntnisse haben und ob die oben genannten Änderungen in Ordnung wären. Wenn ja, würde ich eine Pull-Anfrage öffnen.
@sonicdoe ,
Danke für die Korrektur @sonicdoe! Bitte erstellen Sie die PR
@rgomezp füge meine Frage hier hinzu, da du das andere Ticket geschlossen hast
Muss dieses Verzeichnis in das npm-Paket aufgenommen werden oder kann es nur im GitHub-Repository leben?
Denn wenn die Antwort nein ist, dann ist dieses Problem für mich gelöst.
Ich frage, weil ich nicht weiß, was gute Praktiken sind, aber ich sehe keine anderen RN-Pakete mit diesem Verzeichnis androidTest, also denke ich, dass entweder niemand testet oder keine Tests im npm-Paket enthalten sind?
@mtt87 ,
Es ist nicht notwendig. Die ursprünglichen Ersteller müssen es versehentlich eingefügt haben. Wir entfernen es in der kommenden RN OneSignal SDK-Version. Vielen Dank!
Fantastisch Danke
Hallo zusammen,
Wir werden in Kürze die neueste Version des reaktiven SDK mit Fixes veröffentlichen. Wenn Sie die Änderungen jetzt testen möchten, ändern Sie einfach Ihr React-native-Onesignal in Ihrer package.json so, dass es auf dieses Repository zeigt.
"react-native-onesignal":"geektimecoil/react-native-onesignal"
Würde gerne Ihr Feedback vor der Veröffentlichung hören. Prost!
BEARBEITEN :
Wie ich sehe, haben Sie bereits die neueste Version ursprünglichen Beitrag wiederhole, erhalte ich genau den gleichen Fehler.
@sonicdoe ,
Bist du sicher, dass du es richtig neu installiert hast?
Edit: gerade getestet. Du hast Recht. Ich entschuldige mich hier. Ich dachte, #791 hätte das behoben. Ich werde mit @jkasten2 über #789 diskutieren
Hilfreichster Kommentar
Vielen Dank für Ihre Geduld, während wir das Problem untersuchen.