React-native-onesignal: Absturz mit RN0.60 auf jedem Android

Erstellt am 23. Sept. 2019  ·  43Kommentare  ·  Quelle: OneSignal/react-native-onesignal

1. WENN SIE DIE FOLGENDEN INFORMATIONEN NICHT AUSFÜLLEN, KÖNNEN WIR IHR PROBLEM OHNE UNTERSUCHUNG SCHLIESSEN .gl/BDcfZZ 4. Siehe unsere Beitragsrichtlinien: https://goo.gl/h19DnX

Beschreibung:

(Ihre Beschreibung hier)

Umfeld

System:
    OS: macOS 10.14.6
    CPU: (6) x64 Intel(R) Core(TM) i5-8500B CPU @ 3.00GHz
    Memory: 6.63 GB / 32.00 GB
    Shell: 5.3 - /bin/zsh
  Binaries:
    Node: 10.16.1 - ~/.nvm/versions/node/v10.16.1/bin/node
    Yarn: 1.17.3 - /usr/local/bin/yarn
    npm: 6.9.0 - ~/.nvm/versions/node/v10.16.1/bin/npm
  SDKs:
    iOS SDK:
      Platforms: iOS 13.0, DriverKit 19.0, macOS 10.15, tvOS 13.0, watchOS 6.0
    Android SDK:
      API Levels: 23, 25, 27, 28, 29
      Build Tools: 25.0.2, 25.0.3, 28.0.3, 29.0.1, 29.0.2
      System Images: android-28 | Google APIs Intel x86 Atom, android-29 | Google APIs Intel x86 Atom
  IDEs:
    Android Studio: 3.5 AI-191.8026.42.35.5791312
    Xcode: 11.0/11A419c - /usr/bin/xcodebuild
  npmPackages:
    react: 16.8.6 => 16.8.6
    react-native: 0.60.5 => 0.60.5
[email protected]

Beim Start der Android-App stürzt meine App ohne Nachrichten oder Fenster ab.

adb logcat :

09-23 17:06:37.900 8388 8388 D AndroidRuntime: VM herunterfahren
09-23 17:06:37.901 8388 8388 E AndroidRuntime: FATAL EXCEPTION: main
09-23 17:06:37.901 8388 8388 E AndroidRuntime: Prozess: com.macroactive, PID: 8388
09-23 17:06:37.901 8388 8388 E AndroidRuntime: java.lang.NoClassDefFoundError: Fehler bei der Auflösung von: Lcom/google/android/gms/common/internal/zzbq;
09-23 17:06:37.901 8388 8388 E AndroidRuntime: unter com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unbekannte Quelle)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: unter android.app.ActivityThread.installProvider(ActivityThread.java:5153)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: unter android.app.ActivityThread.installContentProviders(ActivityThread.java:4748)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: unter android.app.ActivityThread.handleBindApplication(ActivityThread.java:4688)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: unter android.app.ActivityThread.-wrap1(ActivityThread.java)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: unter android.os.Handler.dispatchMessage(Handler.java:102)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: unter android.os.Looper.loop(Looper.java:148)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: unter android.app.ActivityThread.main(ActivityThread.java:5417)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Methode)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: unter com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: unter com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: Verursacht durch: java.lang.ClassNotFoundException: Klasse "com.google.android.gms.common.internal.zzbq" nicht gefunden im Pfad: DexPathList[[zip file "/data/app/com.macroactive-2/base.apk"],nativeLibraryDirectories=[/data/app/com.macroactive-2/lib/arm, /data/app/com.macroactive-2/base.apk !/lib/armeabi-v7a, /vendor/lib, /system/lib]]
09-23 17:06:37.901 8388 8388 E AndroidRuntime: at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: ... 12 mehr
09-23 17:06:37.901 8388 8388 E AndroidRuntime: Unterdrückt: java.lang.ClassNotFoundException: com.google.android.gms.common.internal.zzbq
09-23 17:06:37.901 8388 8388 E AndroidRuntime: at java.lang.Class.classForName(native Methode)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: ... 13 mehr
09-23 17:06:37.901 8388 8388 E AndroidRuntime: Verursacht durch: java.lang.NoClassDefFoundError: Klasse nicht mit dem Boot-Klassenlader gefunden; kein Stacktrace verfügbar

Kann in einer neuen App nicht reproduziert werden, daher hängt es möglicherweise mit Bibliotheken zusammen. Einige Probleme mit "com/google/android/gms/common/internal/zzbq" gefunden, aber keine nützlichen gefunden.
Sag mir, wo ich anfangen soll?

Help Wanted

Hilfreichster Kommentar

gleicher Fehler in React-Native 0.60.5 , mit [email protected]

Alle 43 Kommentare

Ebenso stürzt meine App ab, wenn eine Benachrichtigung auf Android erhalten wird. Getestet habe ich es auf Mi Note 4 (Android 7.0, RN 0.60.3, React-Native-Onesignal 3.3.3).

@SAHITYASAI Könntest du adb logcat ?

Screenshot_2019-09-22-17-55-21-844_com miui bugreport
Dies ist der Laufzeitfehler, den ich bekomme, wenn die App abstürzt.

gleicher Fehler in React-Native 0.60.5 , mit [email protected]

Können Sie sicherstellen, dass Sie onesignal-gradle-plugin oben zu Ihrem in Schritt 1.1 notierten app/build.gradle hinzugefügt haben?
https://documentation.onesignal.com/docs/android-sdk-setup#section -1-gradle-setup

Das Fehlen dieser oder das Hinzufügen zu den falschen build.gradle ist das häufigste Problem für diesen Laufzeitfehler.

Der Anfang meiner app/build.gradle

buildscript {
    repositories {
        maven { url 'https://plugins.gradle.org/m2/'}
    }
    dependencies {
        classpath 'gradle.plugin.com.onesignal:onesignal-gradle-plugin:[0.12.4, 0.99.99]'
    }
}
apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'

repositories {
    maven { url 'https://maven.google.com' }
}

apply plugin: "com.android.application"

import com.android.build.OutputFile

btw, habe ich vorher nur benutzt

apply plugin: "com.onesignal.androidsdk.onesignal-gradle-plugin"

für reaktiv-nativ 0.59 & reaktiv-nativ-einssignal: 3.2.12

Ich habe alles wie in der Installationsanleitung beschrieben hinzugefügt. Aber die Zeile apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin' führt dazu, dass mein App-Build mit diesem Fehler fehlschlägt

  • Was schief gelaufen ist: Beim Konfigurieren des Root-Projekts '' ist ein Problem aufgetreten. >Die unbekannte Eigenschaft 'android' für das Stammprojekt '' vom Typ org.gradle.api.Project konnte nicht abgerufen werden."

so dass ich diese Zeile kommentiert habe, da ich bei Google keine Lösung finden konnte.
Kann mir auch jemand einen Beispielcode zum Senden geplanter Benachrichtigungen mit der onesignal REST API geben. Danke im Voraus.

Können Sie sicherstellen, dass Sie onesignal-gradle-plugin oben zu Ihrem in Schritt 1.1 notierten app/build.gradle hinzugefügt haben?
https://documentation.onesignal.com/docs/android-sdk-setup#section -1-gradle-setup

Das Fehlen dieser oder das Hinzufügen zu den falschen build.gradle ist das häufigste Problem für diesen Laufzeitfehler.

Ja hinzugefügt und der gleiche Fehler tritt auf

Der Anfang meiner app/build.gradle

buildscript {
    repositories {
        maven { url 'https://plugins.gradle.org/m2/'}
    }
    dependencies {
        classpath 'gradle.plugin.com.onesignal:onesignal-gradle-plugin:[0.12.4, 0.99.99]'
    }
}
apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'

repositories {
    maven { url 'https://maven.google.com' }
}

apply plugin: "com.android.application"

import com.android.build.OutputFile

wie ich es sehe! du machst das falsch! es ist nicht alles für die app/build.gradle-Datei, das Apply-Plugin geht nur dorthin und der Rest des Klassenpfads, Maven-URL und Gradle-Plugin-Repo-URL geht in das Projekt build.gradle

@indapublic ich habe es gerade gelöst! ich hatte den gleichen Fehler! danke für das posten.! Wenn Sie noch suchen, bin ich offen, um zu helfen, mich zu erreichen!

Hallo,
Bitte aktualisieren Sie auf die neueste Version des Plugins (3.4.1) und versuchen Sie es erneut.

@SAHITYASAI schau mal hier

@indapublic ich habe es gerade gelöst! ich hatte den gleichen Fehler! danke für das posten.! Wenn Sie noch suchen, bin ich offen, um zu helfen, mich zu erreichen!

Danke, Gelöst!!

Im Projektordner "app/build.gradle" wurde dies oben in der Datei hinzugefügt.

buildscript {
Repositorys {
maven { url ' https://plugins.gradle.org/m2/ ' } // Gradle Plugin-Portal
}
Abhängigkeiten {
Klassenpfad 'gradle.plugin.com. onesignal:onesignal-gradle-plugin :[0.12.1, 0.99.99]'
}
}

Plugin anwenden: 'com.onesignal.androidsdk.onesignal-gradle-plugin'

Plugin anwenden: "com.android.application"

com.android.build.OutputFile importieren

Es klappt!

Gut zu hören!

@indapublic ich habe es gerade gelöst! ich hatte den gleichen Fehler! danke für das posten.! Wenn Sie noch suchen, bin ich offen, um zu helfen, mich zu erreichen!

Zeig mir deine build.gradle

@indapublic ich habe es gerade gelöst! ich hatte den gleichen Fehler! danke für das posten.! Wenn Sie noch suchen, bin ich offen, um zu helfen, mich zu erreichen!

Zeig mir deine build.gradle

buildscript {
Repositorys {
maven { url ' https://plugins.gradle.org/m2/ ' } // Gradle Plugin-Portal
}
Abhängigkeiten {
Klassenpfad 'gradle.plugin.com. onesignal:onesignal-gradle-plugin :[0.12.1, 0.99.99]'
}
}

Plugin anwenden: 'com.onesignal.androidsdk.onesignal-gradle-plugin'

Plugin anwenden: "com.android.application"

com.android.build.OutputFile importieren

/**

  • Die Datei React.gradle registriert eine Task für jede Build-Variante (zB BundleDebugJsAndAssets
  • und BundleReleaseJsAndAssets).
  • Diese rufen im Grunde react-native bundle mit den richtigen Argumenten während des Android-Builds auf
  • Kreislauf. Standardmäßig wird BundleDebugJsAndAssets übersprungen, da wir im Debug-/Dev-Modus es vorziehen, die
  • Bundle direkt vom Entwicklungsserver. Unten sehen Sie alle möglichen Konfigurationen
  • und ihre Voreinstellungen. Wenn Sie einen Konfigurationsblock hinzufügen möchten, fügen Sie ihn vor dem
  • apply from: "../../node_modules/react-native/react.gradle" Zeile.
    *
  • project.ext.react = [
  • // der Name der generierten Asset-Datei, die Ihr JS-Bundle enthält
  • BundleAssetName: "index.android.bundle",
    *
  • // die Eingabedatei für die Bundle-Generierung
  • Eintragsdatei: "index.android.js",
    *
  • // https://facebook.github.io/react-native/docs/performance#enable -the-ram-format
  • BundleCommand: "ram-bundle",
    *
  • // ob JS und Assets im Debug-Modus gebündelt werden sollen
  • BundleInDebug: false,
    *
  • // ob JS und Assets im Release-Modus gebündelt werden sollen
  • BundleInRelease: wahr,
    *
  • // ob JS und Assets in einer anderen Build-Variante gebündelt werden sollen (sofern konfiguriert).
  • // Siehe http://tools.android.com/tech-docs/new-build-system/user-guide#TOC -Build-Variants
  • // Die Konfigurationseigenschaft kann die folgenden Formate haben
  • // 'bundleIn${productFlavor}${buildType}'
  • // 'bundleIn${buildType}'
  • // BundleInFreeDebug: wahr,
  • // BundleInPaidRelease: true,
  • // BundleInBeta: wahr,
    *
  • // ob der Dev-Modus in benutzerdefinierten Build-Varianten deaktiviert werden soll (standardmäßig nur in der Version deaktiviert)
  • // zum Beispiel: um den Dev-Modus im Staging-Build-Typ zu deaktivieren (falls konfiguriert)
  • devDisabledInStaging: wahr,
  • // Die Konfigurationseigenschaft kann die folgenden Formate haben
  • // 'devDisabledIn${productFlavor}${buildType}'
  • // 'devDisabledIn${buildType}'
    *
  • // die Wurzel Ihres Projekts, dh wo "package.json" lebt
  • Wurzel: "../../",
    *
  • // wo das JS-Bundle-Asset in den Debug-Modus versetzt werden soll
  • jsBundleDirDebug: "$buildDir/intermediates/assets/debug",
    *
  • // wo das JS-Bundle-Asset in den Release-Modus versetzt werden soll
  • jsBundleDirRelease: "$buildDir/intermediates/assets/release",
    *
  • // wo ziehbare Ressourcen abgelegt werden sollen / Reagieren Sie Native Assets, z. B. die, die Sie über verwenden
  • // require('./image.png')), im Debug-Modus
  • RessourcenDirDebug: "$buildDir/intermediates/res/merged/debug",
    *
  • // wo ziehbare Ressourcen abgelegt werden sollen / Reagieren Sie Native Assets, z. B. die, die Sie über verwenden
  • // require('./image.png')), im Release-Modus
  • RessourcenDirRelease: "$buildDir/intermediates/res/merged/release",
    *
  • // standardmäßig werden die Gradle-Aufgaben übersprungen, wenn sich keine der JS-Dateien oder Assets ändert; das heisst
  • // dass wir uns keine Dateien in Android/ oder ios/ ansehen, um festzustellen, ob die Aufgaben gewachsen sind
  • // Datum; wenn Sie andere Ordner haben, die Sie aus Leistungsgründen ignorieren möchten (gradle
  • // indiziert den gesamten Baum), fügen Sie sie hier hinzu. Alternativ, wenn Sie JS-Dateien in Android/
  • // Sie können es beispielsweise von hier entfernen.
  • inputExcludes: ["android/ ", "ios/ "],
    *
  • // überschreibe, welcher Knoten aufgerufen wird und mit welchen zusätzlichen Argumenten
  • nodeExecutableAndArgs: ["Knoten"],
    *
  • // dem Paketierer zusätzliche Argumente liefern
  • extraPackagerArgs: []
  • ]
    */

project.ext.react = [
Eintragsdatei: "index.js",
enableHermes: false, // bei Änderung bereinigen und neu erstellen
]

bewerben von: "../../node_modules/react-native/react.gradle"

/**

  • Setzen Sie dies auf "true", um zwei separate APKs anstelle von einem zu erstellen:

    • Eine APK, die nur auf ARM-Geräten funktioniert


    • Ein APK, das nur auf x86-Geräten funktioniert

  • Der Vorteil ist, dass die Größe der APK um ca. 4 MB reduziert wird.
  • Laden Sie alle APKs in den Play Store hoch und die Leute werden herunterladen
  • die richtige basierend auf der CPU-Architektur ihres Geräts.
    */
    def enableSeparateBuildPerCPUArchitecture = false

/**

  • Führen Sie Proguard aus, um den Java-Bytecode in Release-Builds zu verkleinern.
    */
    def enableProguardInReleaseBuilds = false

/**

  • Die bevorzugte Build-Variante von JavaScriptCore.
    *
  • Um beispielsweise die internationale Variante zu verwenden, können Sie Folgendes verwenden:
  • def jscFlavor = 'org.webkit:android-jsc-intl:+'
    *
  • Die internationale Variante beinhaltet die ICU i18n Bibliothek und notwendige Daten
  • erlaubt zB Date.toLocaleString und String.localeCompare , die
  • geben korrekte Ergebnisse bei Verwendung mit anderen Gebietsschemas als en-US. Beachten Sie, dass
  • diese Variante ist pro Architektur etwa 6MiB größer als der Standard.
    */
    def jscFlavor = 'org. webkit:android-jsc :+'

/**

  • Ob die Hermes-VM aktiviert werden soll.
    *
  • Dies sollte auf project.ext.react eingestellt und hier gespiegelt werden. Wenn es nicht eingestellt ist
  • auf project.ext.react wird JavaScript nicht zu Hermes Bytecode kompiliert
  • und der Nutzen der Hermes-Nutzung wird daher stark reduziert.
    */
    def enableHermes = project.ext.react.get("enableHermes", false);

Android {
compileSdkVersion rootProject.ext.compileSdkVersion

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

defaultConfig {
    applicationId "com.yourappid"
    minSdkVersion rootProject.ext.minSdkVersion
    targetSdkVersion rootProject.ext.targetSdkVersion
    versionCode 1
    versionName "1.0"
    missingDimensionStrategy 'react-native-camera', 'general'
}
splits {
    abi {
        reset()
        enable enableSeparateBuildPerCPUArchitecture
        universalApk false  // If true, also generate a universal APK
        include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
    }
}
signingConfigs {
    debug {
        storeFile file('debug.keystore')
        storePassword 'android'
        keyAlias 'androiddebugkey'
        keyPassword 'android'
    }
}
buildTypes {
    debug {
        signingConfig signingConfigs.debug
    }
    release {
        // Caution! In production, you need to generate your own keystore file.
        // see https://facebook.github.io/react-native/docs/signed-apk-android.
        signingConfig signingConfigs.debug
        minifyEnabled enableProguardInReleaseBuilds
        proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
    }
}
// applicationVariants are e.g. debug, release
applicationVariants.all { variant ->
    variant.outputs.each { output ->
        // For each separate APK per architecture, set a unique version code as described here:
        // https://developer.android.com/studio/build/configure-apk-splits.html
        def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4]
        def abi = output.getFilter(OutputFile.ABI)
        if (abi != null) {  // null for the universal-debug, universal-release variants
            output.versionCodeOverride =
                    versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
        }

    }
}

packagingOptions {
    pickFirst '**/armeabi-v7a/libc++_shared.so'
    pickFirst '**/x86/libc++_shared.so'
    pickFirst '**/arm64-v8a/libc++_shared.so'
    pickFirst '**/x86_64/libc++_shared.so'
    pickFirst '**/x86/libjsc.so'
    pickFirst '**/armeabi-v7a/libjsc.so'
}

}

Abhängigkeiten {
Implementierung fileTree(dir: "libs", include: ["*.jar"])
Implementierung "com.facebook. React :react-native :+" // Von node_modules

if (enableHermes) {
  def hermesPath = "../../node_modules/hermesvm/android/";
  debugImplementation files(hermesPath + "hermes-debug.aar")
  releaseImplementation files(hermesPath + "hermes-release.aar")
} else {
  implementation jscFlavor
}

}

// Führen Sie dies einmal aus, um die Anwendung mit BUCK ausführen zu können
// legt alle Kompilierungsabhängigkeiten in den Ordner libs, damit BUCK sie verwenden kann
Aufgabe copyDownloadableDepsToLibs(Typ: Kopieren) {
von configurations.compile
in 'libs'
}

bewerben von: file(../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); ApplyNativeModulesAppBuildGradle(Projekt)

Danke, @lucasferreiraestevam. Übrigens, Sie können diesen Code zum besseren Lesen als Quelle formatieren.
Jedenfalls habe ich bei deinem Beispiel keinen großen Unterschied gesehen. Aber danke nochmal

Arbeiten Sie für mich, nachdem Sie alle Bibliotheken für ein neues Projekt erneut hinzugefügt haben. Danke an alle

Mein Problem ist noch nicht behoben. Ich bekomme immer noch den gleichen Laufzeitfehler. Kann mir bitte jemand helfen.

@SAHITYASAI zeige deine build.gradle

android/build.gradle :-

buildscript { ext { buildToolsVersion = "28.0.3" minSdkVersion = 16 compileSdkVersion = 28 targetSdkVersion = 28 supportLibVersion = "28.0.0" googlePlayServicesVersion: "15.0.0" firebaseVersion: "15.0.0" } repositories { google() jcenter() mavenLocal() maven { url 'https://plugins.gradle.org/m2/' } // Gradle Plugin Portal } dependencies { classpath("com.android.tools.build:gradle:3.4.1") classpath 'com.google.gms:google-services:4.3.2' classpath 'gradle.plugin.com.onesignal:onesignal-gradle-plugin:[0.12.5, 0.99.99]' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { mavenLocal() maven { // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm url("$rootDir/../node_modules/react-native/android") } maven { // Android JSC is installed from npm url("$rootDir/../node_modules/jsc-android/dist") } google() jcenter() } } apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'

android/app/build.gradle :-

apply plugin: "com.android.application" import com.android.build.OutputFile project.ext.react = [ entryFile: "index.js", enableHermes: false, // clean and rebuild if changing ] apply from: "../../node_modules/react-native/react.gradle" def enableSeparateBuildPerCPUArchitecture = false def enableProguardInReleaseBuilds = false def jscFlavor = 'org.webkit:android-jsc:+' def enableHermes = project.ext.react.get("enableHermes", false); android { compileSdkVersion rootProject.ext.compileSdkVersion compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } defaultConfig { applicationId "com.tutelage" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode 3 versionName "1.2" multiDexEnabled true } splits { abi { reset() enable enableSeparateBuildPerCPUArchitecture universalApk false // If true, also generate a universal APK include "armeabi-v7a", "x86", "arm64-v8a", "x86_64" } } signingConfigs { debug { storeFile file('debug.keystore') storePassword 'android' keyAlias 'androiddebugkey' keyPassword 'android' } release { storeFile file(MYAPP_RELEASE_STORE_FILE) storePassword MYAPP_RELEASE_STORE_PASSWORD keyAlias MYAPP_RELEASE_KEY_ALIAS keyPassword MYAPP_RELEASE_KEY_PASSWORD } } } buildTypes { debug { signingConfig signingConfigs.debug } release { signingConfig signingConfigs.release minifyEnabled enableProguardInReleaseBuilds proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" } } applicationVariants.all { variant -> variant.outputs.each { output -> def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4] def abi = output.getFilter(OutputFile.ABI) if (abi != null) { // null for the universal-debug, universal-release variants output.versionCodeOverride = versionCodes.get(abi) * 1048576 + defaultConfig.versionCode } } } packagingOptions { pickFirst '**/armeabi-v7a/libc++_shared.so' pickFirst '**/x86/libc++_shared.so' pickFirst '**/arm64-v8a/libc++_shared.so' pickFirst '**/x86_64/libc++_shared.so' pickFirst '**/x86/libjsc.so' pickFirst '**/armeabi-v7a/libjsc.so' } } dependencies { implementation project(':react-native-onesignal') compile project(':react-native-admob') implementation "com.google.android.gms:play-services-base:17.0.0" implementation ('com.google.android.gms:play-services-ads:18.1.1') { force = true; } implementation 'com.google.firebase:firebase-analytics:17.2.0' implementation 'com.google.firebase:firebase-auth:18.1.0' implementation 'com.google.firebase:firebase-firestore:20.2.0' implementation 'com.google.firebase:firebase-ads:18.1.1' implementation project(':@react-native-community_netinfo') implementation fileTree(dir: "libs", include: ["*.jar"]) implementation "com.facebook.react:react-native:+" // From node_modules implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}" // implementation "com.google.android.gms:play-services-ads-lite:[18.1.1]" if (enableHermes) { def hermesPath = "../../node_modules/hermesvm/android/"; debugImplementation files(hermesPath + "hermes-debug.aar") releaseImplementation files(hermesPath + "hermes-release.aar") } else { implementation jscFlavor } } task copyDownloadableDepsToLibs(type: Copy) { from configurations.compile into 'libs' } apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) apply plugin: 'com.google.gms.google-services'

@SAHITYASAI Laut Dokumentation sollten Sie diesen Code verschieben

buildscript {
    repositories {
        maven { url 'https://plugins.gradle.org/m2/'}
    }
    dependencies {
        classpath 'gradle.plugin.com.onesignal:onesignal-gradle-plugin:[0.12.4, 0.99.99]'
    }
}
apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'

repositories {
    maven { url 'https://maven.google.com' }
}

zu app/build.gradle . Verschieben Sie es an den Anfang der Datei

Und formatiere deinen Code bitte neu

gleiches Problem hier
`BUILD FEHLGESCHLAGEN in 3s

error Die App konnte nicht installiert werden. Stellen Sie sicher, dass Sie die Android-Entwicklungsumgebung eingerichtet haben: https://facebook.github.io/react-native/docs/getting-started.html#android -development-environment.
Fehler: Befehl fehlgeschlagen: gradlew.bat app:installDebug -PreactNativeDevServerPort=8081

FAILURE: Build ist mit einer Ausnahme fehlgeschlagen.

  • Was schief gelaufen ist:
    Ausführung für Aufgabe ': app:validateSigningDebug ' fehlgeschlagen.

    Die Keystore-Datei 'E:\React Native\push notification\react-native-onesignal\examples\RNOneSignal\android\app\debug.keystore' wurde für die Signierkonfiguration 'debug' nicht gefunden.

  • Versuchen:
    Führen Sie mit der Option --stacktrace aus, um den Stacktrace abzurufen. Führen Sie mit der Option --info oder --debug aus, um mehr Protokollausgaben zu erhalten. Führen Sie mit --scan aus, um vollständige Einblicke zu erhalten.

  • Weitere Hilfe erhalten Sie unter https://help.gradle.org

BAUEN FEHLGESCHLAGEN in 3s

at checkExecSyncError (child_process.js:601:13)
at execFileSync (child_process.js:621:13)
at runOnAllDevices (E:\React Native\push notification\react-native-onesignal\examples\RNOneSignal\node_modules\@react-native-community\cli-platform-android\build\commands\runAndroid\runOnAllDevices.js:74:39)
at buildAndRun (E:\React Native\push notification\react-native-onesignal\examples\RNOneSignal\node_modules\@react-native-community\cli-platform-android\build\commands\runAndroid\index.js:158:41)
at then.result (E:\React Native\push notification\react-native-onesignal\examples\RNOneSignal\node_modules\@react-native-community\cli-platform-android\build\commands\runAndroid\index.js:125:12)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)`

Ich habe es mit dem neuesten React-Native-Onesignal-Paket arbeiten!

hier ist mein project/build.gradle

Screenshot 2019-10-04 at 8 01 09 PM

Hier ist meine Datei project/app/build.gradle

Screenshot 2019-10-04 at 8 01 37 PM

SCHRITTE ZUR NUTZUNG sind

yarn add react-native-onesignal

dann für ios
einfach
cd ios && pod install

für andorid

einfach

react-native run-android es verknüpft das Paket automatisch

@waqaramjad Ihr Problem hängt mit der Code-Signierung zusammen

Keystore file 'E:\React Native\push notification\react-native-onesignal\examples\RNOneSignal\android\app\debug.keystore' not found for signing config 'debug'.

@indapublic, also was ist die Lösung dafür?

@waqaramjad Zeige deinen android/app/build.gradle , signingConfigs Abschnitt

@indapublic hier ist android/app/build.gradle
`// Build-Datei der obersten Ebene, in der Sie Konfigurationsoptionen hinzufügen können, die allen Unterprojekten/Modulen gemeinsam sind.

buildscript {
ext {
buildToolsVersion = "28.0.3"
minSdkVersion = 16
compilierenSdkVersion = 28
targetSdkVersion = 28
supportLibVersion = "28.0.0"
}
Repositorys {
Google()
jcenter()
}
Abhängigkeiten {
classpath("com.android.tools.build:gradle:3.4.1")

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}

}

alleProjekte {
Repositorys {
mavenLokal()
Meister {
// Alles von React Native (JS, Obj-C-Quellen, Android-Binärdateien) wird von npm installiert
url("$rootDir/../node_modules/react-native/android")
}
Meister {
// Android JSC wird von npm installiert
url("$rootDir/../node_modules/jsc-android/dist")
}

    google()
    jcenter()
}

}
`

@waqaramjad Welche RN-Version hast du?

"0,60,5"

Haben Sie eine bestehende App aktualisiert oder eine neue erstellt?

Ich klone einfach ein vorhandenes App-Beispiel, das sich in einem Signal-Repo befindet, und starte es einfach

@waqaramjad Das

Erstens: Sie haben android/build.gradle gedruckt, nicht android/app/build.gradle

Zweitens: Sie sollten zum Beispiel Debug- und Release-Keystores in Bezug auf dieses Handbuch erstellen

btw: Ich habe gesehen, dass Sie Windows verwenden, also sollten Sie wahrscheinlich etwas zum Starten von Keytools verwenden, ich habe keine Erfahrung mit Windows.

aber warum brauche ich keystore weil ich keine signierte apk will, ich will es nur testen

Hier ist der Code für android/app/build.gradle

`Plugin anwenden: "com.android.application"

com.android.build.OutputFile importieren

/**

  • Die Datei React.gradle registriert eine Task für jede Build-Variante (zB BundleDebugJsAndAssets
  • und BundleReleaseJsAndAssets).
  • Diese rufen im Grunde react-native bundle mit den richtigen Argumenten während des Android-Builds auf
  • Kreislauf. Standardmäßig wird BundleDebugJsAndAssets übersprungen, da wir im Debug-/Dev-Modus es vorziehen, die
  • Bundle direkt vom Entwicklungsserver. Unten sehen Sie alle möglichen Konfigurationen
  • und ihre Voreinstellungen. Wenn Sie einen Konfigurationsblock hinzufügen möchten, fügen Sie ihn vor dem
  • apply from: "../../node_modules/react-native/react.gradle" Zeile.
    *
  • project.ext.react = [
  • // der Name der generierten Asset-Datei, die Ihr JS-Bundle enthält
  • BundleAssetName: "index.android.bundle",
    *
  • // die Eingabedatei für die Bundle-Generierung
  • Eintragsdatei: "index.android.js",
    *
  • // https://facebook.github.io/react-native/docs/performance#enable -the-ram-format
  • BundleCommand: "ram-bundle",
    *
  • // ob JS und Assets im Debug-Modus gebündelt werden sollen
  • BundleInDebug: false,
    *
  • // ob JS und Assets im Release-Modus gebündelt werden sollen
  • BundleInRelease: wahr,
    *
  • // ob JS und Assets in einer anderen Build-Variante gebündelt werden sollen (sofern konfiguriert).
  • // Siehe http://tools.android.com/tech-docs/new-build-system/user-guide#TOC -Build-Variants
  • // Die Konfigurationseigenschaft kann die folgenden Formate haben
  • // 'bundleIn${productFlavor}${buildType}'
  • // 'bundleIn${buildType}'
  • // BundleInFreeDebug: wahr,
  • // BundleInPaidRelease: true,
  • // BundleInBeta: wahr,
    *
  • // ob der Dev-Modus in benutzerdefinierten Build-Varianten deaktiviert werden soll (standardmäßig nur in der Version deaktiviert)
  • // zum Beispiel: um den Dev-Modus im Staging-Build-Typ zu deaktivieren (falls konfiguriert)
  • devDisabledInStaging: wahr,
  • // Die Konfigurationseigenschaft kann die folgenden Formate haben
  • // 'devDisabledIn${productFlavor}${buildType}'
  • // 'devDisabledIn${buildType}'
    *
  • // die Wurzel Ihres Projekts, dh wo "package.json" lebt
  • Wurzel: "../../",
    *
  • // wo das JS-Bundle-Asset in den Debug-Modus versetzt werden soll
  • jsBundleDirDebug: "$buildDir/intermediates/assets/debug",
    *
  • // wo das JS-Bundle-Asset in den Release-Modus versetzt werden soll
  • jsBundleDirRelease: "$buildDir/intermediates/assets/release",
    *
  • // wo ziehbare Ressourcen abgelegt werden sollen / Reagieren Sie Native Assets, z. B. die, die Sie über verwenden
  • // require('./image.png')), im Debug-Modus
  • RessourcenDirDebug: "$buildDir/intermediates/res/merged/debug",
    *
  • // wo ziehbare Ressourcen abgelegt werden sollen / Reagieren Sie Native Assets, z. B. die, die Sie über verwenden
  • // require('./image.png')), im Release-Modus
  • RessourcenDirRelease: "$buildDir/intermediates/res/merged/release",
    *
  • // standardmäßig werden die Gradle-Aufgaben übersprungen, wenn sich keine der JS-Dateien oder Assets ändert; das heisst
  • // dass wir uns keine Dateien in Android/ oder ios/ ansehen, um festzustellen, ob die Aufgaben gewachsen sind
  • // Datum; wenn Sie andere Ordner haben, die Sie aus Leistungsgründen ignorieren möchten (gradle
  • // indiziert den gesamten Baum), fügen Sie sie hier hinzu. Alternativ, wenn Sie JS-Dateien in Android/
  • // Sie können es beispielsweise von hier entfernen.
  • inputExcludes: ["android/ ", "ios/ "],
    *
  • // überschreibe, welcher Knoten aufgerufen wird und mit welchen zusätzlichen Argumenten
  • nodeExecutableAndArgs: ["Knoten"],
    *
  • // dem Paketierer zusätzliche Argumente liefern
  • extraPackagerArgs: []
  • ]
    */

project.ext.react = [
Eintragsdatei: "index.js",
enableHermes: false, // bei Änderung bereinigen und neu erstellen
]

bewerben von: "../../node_modules/react-native/react.gradle"

/**

  • Setzen Sie dies auf "true", um zwei separate APKs anstelle von einem zu erstellen:

    • Eine APK, die nur auf ARM-Geräten funktioniert


    • Ein APK, das nur auf x86-Geräten funktioniert

  • Der Vorteil ist, dass die Größe der APK um ca. 4 MB reduziert wird.
  • Laden Sie alle APKs in den Play Store hoch und die Leute werden herunterladen
  • die richtige basierend auf der CPU-Architektur ihres Geräts.
    */
    def enableSeparateBuildPerCPUArchitecture = false

/**

  • Führen Sie Proguard aus, um den Java-Bytecode in Release-Builds zu verkleinern.
    */
    def enableProguardInReleaseBuilds = false

/**

  • Die bevorzugte Build-Variante von JavaScriptCore.
    *
  • Um beispielsweise die internationale Variante zu verwenden, können Sie Folgendes verwenden:
  • def jscFlavor = 'org.webkit:android-jsc-intl:+'
    *
  • Die internationale Variante beinhaltet die ICU i18n Bibliothek und notwendige Daten
  • erlaubt zB Date.toLocaleString und String.localeCompare , die
  • geben korrekte Ergebnisse bei Verwendung mit anderen Gebietsschemas als en-US. Beachten Sie, dass
  • diese Variante ist pro Architektur etwa 6MiB größer als der Standard.
    */
    def jscFlavor = 'org. webkit:android-jsc :+'

/**

  • Ob die Hermes-VM aktiviert werden soll.
    *
  • Dies sollte auf project.ext.react eingestellt und hier gespiegelt werden. Wenn es nicht eingestellt ist
  • auf project.ext.react wird JavaScript nicht zu Hermes Bytecode kompiliert
  • und der Nutzen der Hermes-Nutzung wird daher stark reduziert.
    */
    def enableHermes = project.ext.react.get("enableHermes", false);

Android {
compileSdkVersion rootProject.ext.compileSdkVersion

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

defaultConfig {
    applicationId "com.rnonesignal"
    minSdkVersion rootProject.ext.minSdkVersion
    targetSdkVersion rootProject.ext.targetSdkVersion
    versionCode 1
    versionName "1.0"
}
splits {
    abi {
        reset()
        enable enableSeparateBuildPerCPUArchitecture
        universalApk false  // If true, also generate a universal APK
        include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
    }
}
signingConfigs {
    debug {
        storeFile file('debug.keystore')
        storePassword 'android'
        keyAlias 'androiddebugkey'
        keyPassword 'android'
    }
}
buildTypes {
    debug {
        signingConfig signingConfigs.debug
    }
    release {
        // Caution! In production, you need to generate your own keystore file.
        // see https://facebook.github.io/react-native/docs/signed-apk-android.
        signingConfig signingConfigs.debug
        minifyEnabled enableProguardInReleaseBuilds
        proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
    }
}
// applicationVariants are e.g. debug, release
applicationVariants.all { variant ->
    variant.outputs.each { output ->
        // For each separate APK per architecture, set a unique version code as described here:
        // https://developer.android.com/studio/build/configure-apk-splits.html
        def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4]
        def abi = output.getFilter(OutputFile.ABI)
        if (abi != null) {  // null for the universal-debug, universal-release variants
            output.versionCodeOverride =
                    versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
        }

    }
}

packagingOptions {
    pickFirst '**/armeabi-v7a/libc++_shared.so'
    pickFirst '**/x86/libc++_shared.so'
    pickFirst '**/arm64-v8a/libc++_shared.so'
    pickFirst '**/x86_64/libc++_shared.so'
    pickFirst '**/x86/libjsc.so'
    pickFirst '**/armeabi-v7a/libjsc.so'
}

}

Abhängigkeiten {
Implementierung fileTree(dir: "libs", include: ["*.jar"])
Implementierung "com.facebook. React :react-native :+" // Von node_modules

if (enableHermes) {
  def hermesPath = "../../node_modules/hermesvm/android/";
  debugImplementation files(hermesPath + "hermes-debug.aar")
  releaseImplementation files(hermesPath + "hermes-release.aar")
} else {
  implementation jscFlavor
}

}

// Führen Sie dies einmal aus, um die Anwendung mit BUCK ausführen zu können
// legt alle Kompilierungsabhängigkeiten in den Ordner libs, damit BUCK sie verwenden kann
Aufgabe copyDownloadableDepsToLibs(Typ: Kopieren) {
von configurations.compile
in 'libs'
}

bewerben von: file(../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); ApplyNativeModulesAppBuildGradle(Projekt)
`

Aber Sie möchten es für Ihr Gerät installieren, nicht wahr?
Zeichenkonfiguration ist hier

@indapublic danke, meine App wird jetzt erfolgreich erstellt. Aber ich muss nur programmgesteuert Benachrichtigungen an diejenigen Benutzer senden, die 15 aufeinanderfolgende Tage inaktiv sind, ohne das Onesignal-Benachrichtigungs-Dashboard zu verwenden. Kann mir bitte jemand helfen.

Ich denke, Sie sollten dafür eine neue Ausgabe erstellen, nicht wahr?

@SAHITYASAI ,
Bitte wenden Sie sich für weitere Unterstützung an unseren Support-Kanal unter OneSignal.com. Danke schön

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen