React-native-onesignal: Crash avec RN0.60 sur n'importe quel Android

Créé le 23 sept. 2019  ·  43Commentaires  ·  Source: OneSignal/react-native-onesignal

1. SI VOUS NE REMPLISSEZ PAS LES INFORMATIONS SUIVANTES, NOUS POUVONS FERMER VOTRE PROBLÈME SANS ENQUÊTE 2. RECHERCHEZ UNE RÉPONSE SUR LES PROBLÈMES EXISTANTS : https://goo.gl/pspQNY 3. Consultez notre documentation sur les problèmes courants : https://goo .gl/BDcfZZ 4. Consultez nos consignes de contribution : https://goo.gl/h19DnX

La description:

(votre description ici)

Environnement

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]

Au démarrage de l'application Android, mon application plante sans aucun message ni fenêtre.

adb logcat :

09-23 17:06:37.900 8388 8388 D AndroidRuntime : Arrêt de la VM
09-23 17:06:37.901 8388 8388 E AndroidRuntime : FATAL EXCEPTION : principal
09-23 17:06:37.901 8388 8388 E AndroidRuntime : Processus : com.macroactive, PID : 8388
09-23 17:06:37.901 8388 8388 E AndroidRuntime : java.lang.NoClassDefFoundError : Échec de la résolution de : Lcom/google/android/gms/common/internal/zzbq ;
09-23 17:06:37.901 8388 8388 E AndroidRuntime : sur com.google.firebase.provider.FirebaseInitProvider.attachInfo (source inconnue)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: sur android.app.ActivityThread.installProvider(ActivityThread.java:5153)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: sur android.app.ActivityThread.installContentProviders(ActivityThread.java:4748)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: sur android.app.ActivityThread.handleBindApplication(ActivityThread.java:4688)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: sur android.app.ActivityThread.-wrap1(ActivityThread.java)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: sur android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: sur android.os.Handler.dispatchMessage(Handler.java:102)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: sur android.os.Looper.loop(Looper.java:148)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: sur android.app.ActivityThread.main(ActivityThread.java:5417)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: à java.lang.reflect.Method.invoke (méthode native)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: sur com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: sur com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
09-23 17:06:37.901 8388 8388 E AndroidRuntime : Causé par : java.lang.ClassNotFoundException : n'a pas trouvé la classe "com.google.android.gms.common.internal.zzbq" sur le chemin : DexPathList[[fichier zip "/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: à dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: à java.lang.ClassLoader.loadClass(ClassLoader.java:511)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: à java.lang.ClassLoader.loadClass(ClassLoader.java:469)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: ... 12 more
09-23 17:06:37.901 8388 8388 E AndroidRuntime : supprimé : java.lang.ClassNotFoundException : com.google.android.gms.common.internal.zzbq
09-23 17:06:37.901 8388 8388 E AndroidRuntime: à java.lang.Class.classForName (méthode native)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: à java.lang.BootClassLoader.findClass(ClassLoader.java:781)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: à java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: à java.lang.ClassLoader.loadClass(ClassLoader.java:504)
09-23 17:06:37.901 8388 8388 E AndroidRuntime: ... 13 more
09-23 17:06:37.901 8388 8388 E AndroidRuntime : causé par : java.lang.NoClassDefFoundError : classe introuvable à l'aide du chargeur de classe de démarrage ; aucune trace de pile disponible

Impossible de le reproduire sur une nouvelle application, il est donc peut-être lié à des bibliothèques. J'ai trouvé des problèmes avec "com/google/android/gms/common/internal/zzbq" mais je n'en trouve aucun utile.
Dites-moi par où commencer ?

Help Wanted

Commentaire le plus utile

même erreur dans react-native 0.60.5 , en utilisant [email protected]

Tous les 43 commentaires

De même, mon application plante également lors de la réception d'une notification sur Android. Je l'ai testé sur mi note 4 (android 7.0, RN 0.60.3, react-native-onesignal 3.3.3).

@SAHITYASAI Pourriez-vous montrer adb logcat ?

Screenshot_2019-09-22-17-55-21-844_com miui bugreport
C'est l'erreur d'exécution que j'obtiens chaque fois que l'application se bloque.

même erreur dans react-native 0.60.5 , en utilisant [email protected]

Pouvez-vous vous assurer que vous avez ajouté le onesignal-gradle-plugin en haut de votre app/build.gradle noté à l'étape 1.1 ?
https://documentation.onesignal.com/docs/android-sdk-setup#section -1-gradle-setup

Manquer cela ou l'ajouter au mauvais build.gradle est le problème le plus courant pour cette erreur d'exécution.

Le début de mon 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

d'ailleurs, j'ai utilisé avant seulement

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

pour react-native 0.59 & react-native-onesignal : 3.2.12

J'ai tout ajouté comme décrit dans le guide d'installation. Mais la ligne applique le plug-in : « com.onesignal.androidsdk.onesignal-gradle-plugin » fait échouer la création de mon application avec cette erreur

  • Ce qui s'est mal passé : un problème est survenu lors de la configuration du projet racine ''. >Impossible d'obtenir la propriété inconnue 'android' pour le projet racine '' de type org.gradle.api.Project."

J'ai donc commenté cette ligne car je n'ai trouvé aucune solution sur google.
Quelqu'un peut-il également me donner un exemple de code sur la façon d'envoyer des notifications planifiées à l'aide de l'API REST onesignal. Merci d'avance.

Pouvez-vous vous assurer que vous avez ajouté le onesignal-gradle-plugin en haut de votre app/build.gradle noté à l'étape 1.1 ?
https://documentation.onesignal.com/docs/android-sdk-setup#section -1-gradle-setup

Manquer cela ou l'ajouter au mauvais build.gradle est le problème le plus courant pour cette erreur d'exécution.

Oui ajouté et la même erreur se produit

Le début de mon 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

la façon dont je le vois! Tu le fais incorectement! ce n'est pas tout pour le fichier app/build.gradle le plugin d'application va seulement là et le reste du chemin de classe, l'url maven et l'url du repo du plugin gradle vont dans le projet build.gradle

@indapublic je viens de le résoudre ! j'ai eu le même bug ! Merci d'avoir posté ceci.! si vous cherchez toujours, je suis ouvert pour m'aider à me contacter!

Bonjour,
Veuillez mettre à niveau vers la dernière version du plugin (3.4.1) et réessayer.

@SAHITYASAI regarde ici

@indapublic je viens de le résoudre ! j'ai eu le même bug ! Merci d'avoir posté ceci.! si vous cherchez toujours, je suis ouvert pour m'aider à me contacter!

Merci, résolu !!

Dans le dossier du projet "app/build.gradle" a ajouté ceci en haut du fichier.

script de construction {
référentiels {
maven { url ' https://plugins.gradle.org/m2/ ' } // Portail des plugins Gradle
}
dépendances {
chemin de classe 'gradle.plugin.com. onesignal:onesignal-gradle-plugin :[0.12.1, 0.99.99]'
}
}

appliquer le plug-in : 'com.onesignal.androidsdk.onesignal-gradle-plugin'

appliquer le plugin : "com.android.application"

importer com.android.build.OutputFile

Ça marche!

Ravi de l'entendre!

@indapublic je viens de le résoudre ! j'ai eu le même bug ! Merci d'avoir posté ceci.! si vous cherchez toujours, je suis ouvert pour m'aider à me contacter!

Montrez-moi votre build.gradle

@indapublic je viens de le résoudre ! j'ai eu le même bug ! Merci d'avoir posté ceci.! si vous cherchez toujours, je suis ouvert pour m'aider à me contacter!

Montrez-moi votre build.gradle

script de construction {
référentiels {
maven { url ' https://plugins.gradle.org/m2/ ' } // Portail des plugins Gradle
}
dépendances {
chemin de classe 'gradle.plugin.com. onesignal:onesignal-gradle-plugin :[0.12.1, 0.99.99]'
}
}

appliquer le plug-in : 'com.onesignal.androidsdk.onesignal-gradle-plugin'

appliquer le plugin : "com.android.application"

importer com.android.build.OutputFile

/**

  • Le fichier react.gradle enregistre une tâche pour chaque variante de build (par exemple bundleDebugJsAndAssets
  • et bundleReleaseJsAndAssets).
  • Ceux-ci appellent essentiellement react-native bundle avec les bons arguments lors de la construction d'Android
  • cycle. Par défaut, bundleDebugJsAndAssets est ignoré, car en mode debug/dev nous préférons charger le
  • bundle directement depuis le serveur de développement. Ci-dessous vous pouvez voir toutes les configurations possibles
  • et leurs valeurs par défaut. Si vous décidez d'ajouter un bloc de configuration, assurez-vous de l'ajouter avant le
  • apply from: "../../node_modules/react-native/react.gradle" .
    *
  • project.ext.react = [
  • // le nom du fichier d'asset généré contenant votre bundle JS
  • bundleAssetName : "index.android.bundle",
    *
  • // le fichier d'entrée pour la génération de bundle
  • fichier d'entrée : "index.android.js",
    *
  • // https://facebook.github.io/react-native/docs/performance#enable -the-ram-format
  • bundleCommand: "ram-bundle",
    *
  • // s'il faut regrouper JS et les actifs en mode débogage
  • bundleInDebug : faux,
    *
  • // s'il faut regrouper JS et les assets en mode release
  • bundleInRelease : vrai,
    *
  • // s'il faut regrouper JS et les actifs dans une autre variante de build (si configuré).
  • // Voir http://tools.android.com/tech-docs/new-build-system/user-guide#TOC -Build-Variants
  • // La propriété de configuration peut être dans les formats suivants
  • // 'bundleIn${productFlavor}${buildType}'
  • // 'bundleIn${buildType}'
  • // bundleInFreeDebug : vrai,
  • // bundleInPaidRelease : vrai,
  • // bundleInBeta : vrai,
    *
  • // s'il faut désactiver le mode dev dans les variantes de build personnalisées (par défaut uniquement désactivé dans la version)
  • // par exemple : pour désactiver le mode dev dans le type de build intermédiaire (si configuré)
  • devDisabledInStaging : vrai,
  • // La propriété de configuration peut être dans les formats suivants
  • // 'devDisabledIn${productFlavor}${buildType}'
  • // 'devDisabledIn${buildType}'
    *
  • // la racine de votre projet, c'est-à-dire où réside "package.json"
  • racine: "../../",
    *
  • // où mettre l'actif du bundle JS en mode débogage
  • jsBundleDirDebug : "$buildDir/intermediates/assets/debug",
    *
  • // où mettre l'asset bundle JS en mode release
  • jsBundleDirRelease : "$buildDir/intermediates/assets/release",
    *
  • // où mettre les ressources pouvant être dessinées / React Native assets, par exemple ceux que vous utilisez via
  • // require('./image.png')), en mode débogage
  • resourcesDirDebug : "$buildDir/intermediates/res/merged/debug",
    *
  • // où mettre les ressources pouvant être dessinées / React Native assets, par exemple ceux que vous utilisez via
  • // require('./image.png')), en mode release
  • resourcesDirRelease: "$buildDir/intermediates/res/merged/release",
    *
  • // par défaut, les tâches de gradle sont ignorées si aucun des fichiers ou actifs JS ne change ; ça signifie
  • // que nous ne regardons pas les fichiers dans android/ ou ios/ pour déterminer si les tâches sont à la hauteur
  • // Date; si vous avez d'autres dossiers que vous souhaitez ignorer pour des raisons de performances (gradle
  • // indexe l'arbre entier), ajoutez-les ici. Alternativement, si vous avez des fichiers JS dans Android/
  • // par exemple, vous voudrez peut-être le supprimer d'ici.
  • inputExclut : ["android/ ", "ios/ "],
    *
  • // remplace quel nœud est appelé et avec quels arguments supplémentaires
  • nodeExecutableAndArgs : ["nœud"],
    *
  • // fournit des arguments supplémentaires au packager
  • extraPackagerArgs : []
  • ]
    */

project.ext.react = [
fichier d'entrée : "index.js",
enableHermes : false, // nettoyer et reconstruire en cas de modification
]

appliquer à partir de : "../../node_modules/react-native/react.gradle"

/**

  • Définissez ceci sur true pour créer deux APK distincts au lieu d'un :

    • Un APK qui ne fonctionne que sur les appareils ARM


    • Un APK qui ne fonctionne que sur les appareils x86

  • L'avantage est que la taille de l'APK est réduite d'environ 4 Mo.
  • Téléchargez tous les APK sur le Play Store et les gens téléchargeront
  • le bon en fonction de l'architecture CPU de leur appareil.
    */
    def enableSeparateBuildPerCPUArchitecture = false

/**

  • Exécutez Proguard pour réduire le bytecode Java dans les versions de version.
    */
    def enableProguardInReleaseBuilds = false

/**

  • La version de build préférée de JavaScriptCore.
    *
  • Par exemple, pour utiliser la variante internationale, vous pouvez utiliser :
  • def jscFlavor = 'org.webkit:android-jsc-intl:+'
    *
  • La variante internationale comprend la bibliothèque ICU i18n et les données nécessaires
  • permettant d'utiliser par exemple Date.toLocaleString et String.localeCompare qui
  • donner des résultats corrects lors de l'utilisation avec des paramètres régionaux autres que en-US. Noter que
  • cette variante est environ 6 Mio de plus par architecture que la valeur par défaut.
    */
    def jscFlavor = 'org. kit web :

/**

  • S'il faut activer la machine virtuelle Hermes.
    *
  • Cela doit être défini sur project.ext.react et mis en miroir ici. S'il n'est pas défini
  • sur project.ext.react, JavaScript ne sera pas compilé en Hermes Bytecode
  • et les bénéfices de l'utilisation d'Hermès seront donc fortement réduits.
    */
    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'
}

}

dépendances {
implémentation fileTree(dir : "libs", inclure : ["*.jar"])
implémentation "com.facebook. react : react

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

}

// Exécutez ceci une fois pour pouvoir exécuter l'application avec BUCK
// met toutes les dépendances de compilation dans les bibliothèques de dossiers pour que BUCK puisse les utiliser
copie de tâcheDownloadableDepsToLibs(type : copie) {
à partir de configurations.compile
dans 'libs'
}

appliquer à partir de : file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle (projet)

Merci @lucasferreiraestevam. Au fait, vous pouvez formater ce code comme source pour une meilleure lecture.
De toute façon, je n'ai pas vu beaucoup de différence avec votre exemple. Mais merci encore

Travaillez pour moi après avoir ajouté à nouveau toutes les bibliothèques pour un nouveau projet. Merci à tous

Mon problème n'est pas encore résolu. j'ai toujours la même erreur d'exécution. Quelqu'un peut-il m'aider s'il vous plaît.

@SAHITYASAI montre votre 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 Selon la documentation, vous devriez déplacer ce code

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' }
}

à app/build.gradle . Déplacez-le au début du fichier

Et reformatez votre code s'il vous plaît

même problème ici
`ÉCHEC DE LA CONSTRUCTION en 3s

erreur Échec de l'installation de l'application. Assurez-vous que l'environnement de développement Android est configuré : https://facebook.github.io/react-native/docs/getting-started.html#android -development-environment.
Erreur : La commande a échoué : gradlew.bat app: installDebug -PreactNativeDevServerPort=8081

ÉCHEC : la génération a échoué avec une exception.

  • Qu'est ce qui ne s'est pas bien passé:
    L'exécution a échoué pour la tâche ': app:validateSigningDebug '.

    Fichier de magasin de clés 'E:\React Native\push notification\react-native-onesignal\examples\RNOneSignal\android\app\debug.keystore' introuvable pour la signature de la configuration 'debug'.

  • Essayer:
    Exécutez avec l'option --stacktrace pour obtenir la trace de la pile. Exécutez avec l'option --info ou --debug pour obtenir plus de sorties de journal. Exécutez avec --scan pour obtenir des informations complètes.

  • Obtenez plus d'aide sur https://help.gradle.org

ÉCHEC DE LA CONSTRUCTION en 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)`

Je l'ai fait fonctionner avec le dernier package react-native-onesignal !

voici mon project/build.gradle

Screenshot 2019-10-04 at 8 01 09 PM

Voici le mien fichier project/app/build.gradle

Screenshot 2019-10-04 at 8 01 37 PM

LES ÉTAPES À PRENDRE POUR L'UTILISER sont

yarn add react-native-onesignal

puis pour ios
simplement
cd ios && pod install

pour andoride

simplement

react-native run-android il lie automatiquement le paquet

@waqaramjad Votre problème est lié à la signature de code

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

@indapublic alors quelle est la solution pour ça ?

@waqaramjad Montrez votre section android/app/build.gradle , signingConfigs

@indapublic voici android/app/build.gradle
`// Fichier de construction de niveau supérieur où vous pouvez ajouter des options de configuration communes à tous les sous-projets/modules.

script de construction {
poste {
buildToolsVersion = "28.0.3"
minSdkVersion = 16
compileSdkVersion = 28
cibleSdkVersion = 28
supportLibVersion = "28.0.0"
}
référentiels {
Google()
jcenter()
}
dépendances {
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
}

}

tous les projets {
référentiels {
mavenLocal()
maven {
// Tout React Native (sources JS, Obj-C, binaires Android) est installé à partir de npm
url("$rootDir/../node_modules/react-native/android")
}
maven {
// Android JSC est installé depuis npm
url("$rootDir/../node_modules/jsc-android/dist")
}

    google()
    jcenter()
}

}
`

@waqaramjad Quelle version RN avez-vous ?

"0.60.5"

Avez-vous mis à jour l'application existante ou en avez-vous créé une nouvelle ?

je viens de cloner l'exemple d'application existant qui se trouve dans un dépôt de signal et de le démarrer

@waqaramjad Vous devriez dire ceci en premier :)

Premièrement : vous avez imprimé android/build.gradle , pas android/app/build.gradle

Deuxièmement : vous devez générer des magasins de clés de débogage et de publication concernant ce manuel , par exemple

btw: j'ai vu que vous utilisiez Windows, vous devriez donc probablement utiliser des trucs pour le lancement de keytool, je n'ai pas d'expérience avec Windows.

mais pourquoi j'ai besoin de keystore parce que je ne veux pas d'apk signé, je veux seulement le tester

alors que voici le code pour android/app/build.gradle

`appliquer le plugin : "com.android.application"

importer com.android.build.OutputFile

/**

  • Le fichier react.gradle enregistre une tâche pour chaque variante de build (par exemple bundleDebugJsAndAssets
  • et bundleReleaseJsAndAssets).
  • Ceux-ci appellent essentiellement react-native bundle avec les bons arguments lors de la construction d'Android
  • cycle. Par défaut, bundleDebugJsAndAssets est ignoré, car en mode debug/dev nous préférons charger le
  • bundle directement depuis le serveur de développement. Ci-dessous vous pouvez voir toutes les configurations possibles
  • et leurs valeurs par défaut. Si vous décidez d'ajouter un bloc de configuration, assurez-vous de l'ajouter avant le
  • apply from: "../../node_modules/react-native/react.gradle" .
    *
  • project.ext.react = [
  • // le nom du fichier d'asset généré contenant votre bundle JS
  • bundleAssetName : "index.android.bundle",
    *
  • // le fichier d'entrée pour la génération de bundle
  • fichier d'entrée : "index.android.js",
    *
  • // https://facebook.github.io/react-native/docs/performance#enable -the-ram-format
  • bundleCommand: "ram-bundle",
    *
  • // s'il faut regrouper JS et les actifs en mode débogage
  • bundleInDebug : faux,
    *
  • // s'il faut regrouper JS et les assets en mode release
  • bundleInRelease : vrai,
    *
  • // s'il faut regrouper JS et les actifs dans une autre variante de build (si configuré).
  • // Voir http://tools.android.com/tech-docs/new-build-system/user-guide#TOC -Build-Variants
  • // La propriété de configuration peut être dans les formats suivants
  • // 'bundleIn${productFlavor}${buildType}'
  • // 'bundleIn${buildType}'
  • // bundleInFreeDebug : vrai,
  • // bundleInPaidRelease : vrai,
  • // bundleInBeta : vrai,
    *
  • // s'il faut désactiver le mode dev dans les variantes de build personnalisées (par défaut uniquement désactivé dans la version)
  • // par exemple : pour désactiver le mode dev dans le type de build intermédiaire (si configuré)
  • devDisabledInStaging : vrai,
  • // La propriété de configuration peut être dans les formats suivants
  • // 'devDisabledIn${productFlavor}${buildType}'
  • // 'devDisabledIn${buildType}'
    *
  • // la racine de votre projet, c'est-à-dire où réside "package.json"
  • racine: "../../",
    *
  • // où mettre l'actif du bundle JS en mode débogage
  • jsBundleDirDebug : "$buildDir/intermediates/assets/debug",
    *
  • // où mettre l'asset bundle JS en mode release
  • jsBundleDirRelease : "$buildDir/intermediates/assets/release",
    *
  • // où mettre les ressources pouvant être dessinées / React Native assets, par exemple ceux que vous utilisez via
  • // require('./image.png')), en mode débogage
  • resourcesDirDebug : "$buildDir/intermediates/res/merged/debug",
    *
  • // où mettre les ressources pouvant être dessinées / React Native assets, par exemple ceux que vous utilisez via
  • // require('./image.png')), en mode release
  • resourcesDirRelease: "$buildDir/intermediates/res/merged/release",
    *
  • // par défaut, les tâches de gradle sont ignorées si aucun des fichiers ou actifs JS ne change ; ça signifie
  • // que nous ne regardons pas les fichiers dans android/ ou ios/ pour déterminer si les tâches sont à la hauteur
  • // Date; si vous avez d'autres dossiers que vous souhaitez ignorer pour des raisons de performances (gradle
  • // indexe l'arbre entier), ajoutez-les ici. Alternativement, si vous avez des fichiers JS dans Android/
  • // par exemple, vous voudrez peut-être le supprimer d'ici.
  • inputExclut : ["android/ ", "ios/ "],
    *
  • // remplace quel nœud est appelé et avec quels arguments supplémentaires
  • nodeExecutableAndArgs : ["nœud"],
    *
  • // fournit des arguments supplémentaires au packager
  • extraPackagerArgs : []
  • ]
    */

project.ext.react = [
fichier d'entrée : "index.js",
enableHermes : false, // nettoyer et reconstruire en cas de modification
]

appliquer à partir de : "../../node_modules/react-native/react.gradle"

/**

  • Définissez ceci sur true pour créer deux APK distincts au lieu d'un :

    • Un APK qui ne fonctionne que sur les appareils ARM


    • Un APK qui ne fonctionne que sur les appareils x86

  • L'avantage est que la taille de l'APK est réduite d'environ 4 Mo.
  • Téléchargez tous les APK sur le Play Store et les gens téléchargeront
  • le bon en fonction de l'architecture CPU de leur appareil.
    */
    def enableSeparateBuildPerCPUArchitecture = false

/**

  • Exécutez Proguard pour réduire le bytecode Java dans les versions de version.
    */
    def enableProguardInReleaseBuilds = false

/**

  • La version de build préférée de JavaScriptCore.
    *
  • Par exemple, pour utiliser la variante internationale, vous pouvez utiliser :
  • def jscFlavor = 'org.webkit:android-jsc-intl:+'
    *
  • La variante internationale comprend la bibliothèque ICU i18n et les données nécessaires
  • permettant d'utiliser par exemple Date.toLocaleString et String.localeCompare qui
  • donner des résultats corrects lors de l'utilisation avec des paramètres régionaux autres que en-US. Noter que
  • cette variante est environ 6 Mio de plus par architecture que la valeur par défaut.
    */
    def jscFlavor = 'org. kit web :

/**

  • S'il faut activer la machine virtuelle Hermes.
    *
  • Cela doit être défini sur project.ext.react et mis en miroir ici. S'il n'est pas défini
  • sur project.ext.react, JavaScript ne sera pas compilé en Hermes Bytecode
  • et les bénéfices de l'utilisation d'Hermès seront donc fortement réduits.
    */
    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'
}

}

dépendances {
implémentation fileTree(dir : "libs", inclure : ["*.jar"])
implémentation "com.facebook. react : react

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

}

// Exécutez ceci une fois pour pouvoir exécuter l'application avec BUCK
// met toutes les dépendances de compilation dans les bibliothèques de dossiers pour que BUCK puisse les utiliser
copie de tâcheDownloadableDepsToLibs(type : copie) {
à partir de configurations.compile
dans 'libs'
}

appliquer à partir de : file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle (projet)
`

Mais vous voulez l'installer pour votre appareil, n'est-ce pas ?
La configuration du signe est ici

@indapublic merci, mon application se construit avec succès maintenant. Mais je dois envoyer une notification uniquement aux utilisateurs qui sont inactifs pendant 15 jours continus uniquement par programmation sans utiliser le tableau de bord de notification onesignal. Quelqu'un peut-il m'aider s'il-vous-plaît.

Je pense que vous devriez créer un nouveau problème pour cela, n'est-ce pas?

@SAHITYASAI ,
Veuillez contacter notre canal d'assistance sur OneSignal.com pour obtenir de l'aide. À votre santé

Cette page vous a été utile?
0 / 5 - 0 notes