React-native-onesignal: Manifest-Fusion schlägt fehl, wenn Android-Testanwendung zusammengestellt wird

Erstellt am 12. Juni 2019  ·  15Kommentare  ·  Quelle: OneSignal/react-native-onesignal

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

  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

Hilfreichster Kommentar

Vielen Dank für Ihre Geduld, während wir das Problem untersuchen.

Alle 15 Kommentare

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

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen