React-native-onesignal: Crash con RN0.60 en cualquier Android

Creado en 23 sept. 2019  ·  43Comentarios  ·  Fuente: OneSignal/react-native-onesignal

1. SI NO COMPLETA LA SIGUIENTE INFORMACIÓN, PODEMOS CERRAR SU PROBLEMA SIN INVESTIGACIÓN 2. BUSQUE PROBLEMAS EXISTENTES PARA OBTENER UNA RESPUESTA: https://goo.gl/pspQNY 3. Consulte nuestra documentación de Problemas comunes: https: // goo .gl / BDcfZZ 4. Consulte nuestras pautas de contribución: https://goo.gl/h19DnX

Descripción:

(tu descripción aquí)

Medio ambiente

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]

Al iniciar la aplicación de Android, mi aplicación se bloquea sin mensajes ni ventanas.

adb logcat :

09-23 17: 06: 37.900 8388 8388 D AndroidRuntime: Apagando VM
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: EXCEPCIÓN FATAL: principal
09-23 17: 06: 37.901 8388 8388 E Android Tiempo de ejecución: Proceso: com.macroactive, PID: 8388
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: java.lang.NoClassDefFoundError: Falló la resolución de: Lcom / google / android / gms / common / internal / zzbq;
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: en com.google.firebase.provider.FirebaseInitProvider.attachInfo (fuente desconocida)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: en android.app.ActivityThread.installProvider (ActivityThread.java:5153)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: en android.app.ActivityThread.installContentProviders (ActivityThread.java:4748)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: en android.app.ActivityThread.handleBindApplication (ActivityThread.java:4688)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: en android.app.ActivityThread.-wrap1 (ActivityThread.java)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: en android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1405)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: en android.os.Handler.dispatchMessage (Handler.java:102)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: en android.os.Looper.loop (Looper.java:148)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: en android.app.ActivityThread.main (ActivityThread.java:5417)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: en java.lang.reflect.Method.invoke (método nativo)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: en com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: en com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: Causado por: java.lang.ClassNotFoundException: No se encontró la clase "com.google.android.gms.common.internal.zzbq" en la ruta: DexPathList [[archivo 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: en dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:56)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: en java.lang.ClassLoader.loadClass (ClassLoader.java:511)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: en java.lang.ClassLoader.loadClass (ClassLoader.java:469)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: ... 12 más
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: Suprimido: java.lang.ClassNotFoundException: com.google.android.gms.common.internal.zzbq
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: en java.lang.Class.classForName (método nativo)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: en java.lang.BootClassLoader.findClass (ClassLoader.java:781)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: en java.lang.BootClassLoader.loadClass (ClassLoader.java:841)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: en java.lang.ClassLoader.loadClass (ClassLoader.java:504)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: ... 13 más
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: Causado por: java.lang.NoClassDefFoundError: Clase no encontrada usando el cargador de clases de arranque; no hay rastro de pila disponible

No se puede reproducir en una aplicación nueva, por lo que tal vez esté relacionado con alguna biblioteca. Encontré algunos problemas con "com / google / android / gms / common / internal / zzbq" pero no puedo encontrar ninguno útil.
Dime por donde empezar

Help Wanted

Comentario más útil

mismo error en react-native 0.60.5, usando [email protected]

Todos 43 comentarios

Del mismo modo, mi aplicación también se bloquea al recibir notificaciones en Android. Lo probé en mi nota 4 (android 7.0, RN 0.60.3, react-native-onesignal 3.3.3).

@SAHITYASAI ¿Podrías mostrar adb logcat ?

Screenshot_2019-09-22-17-55-21-844_com miui bugreport
Este es el error de tiempo de ejecución que obtengo cada vez que la aplicación falla.

mismo error en react-native 0.60.5, usando [email protected]

¿Puede asegurarse de haber agregado onesignal-gradle-plugin a la parte superior de su app/build.gradle anotado en el paso 1.1?
https://documentation.onesignal.com/docs/android-sdk-setup#section -1-gradle-setup

Falta esto o agregarlo al build.gradle incorrecto es el problema más común de este error de tiempo de ejecución.

El comienzo de mi 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

por cierto, usé antes solo

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

para react-native 0.59 y react-native-onesignal: 3.2.12

Agregué todo como se describe en la guía de instalación. Pero la línea apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin' hace que la compilación de mi aplicación falle con este error

  • Qué salió mal: Ocurrió un problema al configurar el proyecto raíz ''. > No se pudo obtener la propiedad desconocida 'android' para el proyecto raíz '' de tipo org.gradle.api.Project ".

por lo que comenté esa línea ya que no pude encontrar ninguna solución en google.
También puede alguien darme un código de ejemplo sobre cómo enviar notificaciones programadas usando la API REST de oneignal. Gracias por adelantado.

¿Puede asegurarse de haber agregado onesignal-gradle-plugin a la parte superior de su app/build.gradle anotado en el paso 1.1?
https://documentation.onesignal.com/docs/android-sdk-setup#section -1-gradle-setup

Falta esto o agregarlo al build.gradle incorrecto es el problema más común de este error de tiempo de ejecución.

Sí agregado y ocurre el mismo error

El comienzo de mi 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 manera en que lo veo! ¡lo estas haciendo mal! no es todo para el archivo app / build.gradle, el complemento de aplicación solo va allí y el resto de la ruta de clase, la URL de maven y la URL del repositorio del complemento de gradle van en el proyecto build.gradle

@indapublic ¡ Acabo de resolverlo! ¡Tuve el mismo error! gracias por publicar esto.! Si todavía estás buscando, ¡estoy dispuesto a ayudarte a contactarme!

Hola,
Actualice a la última versión del complemento (3.4.1) y vuelva a intentarlo.

@SAHITYASAI echa un vistazo aquí

@indapublic ¡ Acabo de resolverlo! ¡Tuve el mismo error! gracias por publicar esto.! Si todavía estás buscando, ¡estoy dispuesto a ayudarte a contactarme!

Gracias, resuelto !!

Dentro de la carpeta del proyecto, "app / build.gradle" agregó esto en la parte superior del archivo.

buildscript {
repositorios {
maven {url ' https://plugins.gradle.org/m2/ '} // Portal de complementos de Gradle
}
dependencias {
classpath 'gradle.plugin.com. onesignal: onesignal-gradle-plugin : [0.12.1, 0.99.99] '
}
}

aplicar el complemento: 'com.onesignal.androidsdk.onesignal-gradle-plugin'

aplicar complemento: "com.android.application"

import com.android.build.OutputFile

¡funciona!

¡Me alegro de oirlo!

@indapublic ¡ Acabo de resolverlo! ¡Tuve el mismo error! gracias por publicar esto.! Si todavía estás buscando, ¡estoy dispuesto a ayudarte a contactarme!

Muéstrame tu build.gradle

@indapublic ¡ Acabo de resolverlo! ¡Tuve el mismo error! gracias por publicar esto.! Si todavía estás buscando, ¡estoy dispuesto a ayudarte a contactarme!

Muéstrame tu build.gradle

buildscript {
repositorios {
maven {url ' https://plugins.gradle.org/m2/ '} // Portal de complementos de Gradle
}
dependencias {
classpath 'gradle.plugin.com. onesignal: onesignal-gradle-plugin : [0.12.1, 0.99.99] '
}
}

aplicar el complemento: 'com.onesignal.androidsdk.onesignal-gradle-plugin'

aplicar complemento: "com.android.application"

import com.android.build.OutputFile

/ **

  • El archivo react.gradle registra una tarea para cada variante de compilación (por ejemplo, bundleDebugJsAndAssets
  • y bundleReleaseJsAndAssets).
  • Básicamente, llaman a react-native bundle con los argumentos correctos durante la compilación de Android
  • ciclo. De forma predeterminada, se omite bundleDebugJsAndAssets, ya que en el modo debug / dev preferimos cargar el
  • empaquetar directamente desde el servidor de desarrollo. A continuación puedes ver todas las configuraciones posibles
  • y sus incumplimientos. Si decide agregar un bloque de configuración, asegúrese de agregarlo antes del
  • apply from: "../../node_modules/react-native/react.gradle" línea.
    *
  • project.ext.react = [
  • // el nombre del archivo de activos generado que contiene su paquete JS
  • bundleAssetName: "index.android.bundle",
    *
  • // el archivo de entrada para la generación de paquetes
  • entryFile: "index.android.js",
    *
  • // https://facebook.github.io/react-native/docs/performance#enable -the-ram-format
  • bundleCommand: "ram-bundle",
    *
  • // si agrupar JS y activos en modo de depuración
  • bundleInDebug: falso,
    *
  • // si agrupar JS y activos en modo de lanzamiento
  • bundleInRelease: cierto,
    *
  • // si se debe agrupar JS y activos en otra variante de compilación (si está configurada).
  • // Ver http://tools.android.com/tech-docs/new-build-system/user-guide#TOC -Build-Variants
  • // La propiedad de configuración puede estar en los siguientes formatos
  • // 'bundleIn $ {productFlavor} $ {buildType}'
  • // 'bundleIn $ {buildType}'
  • // bundleInFreeDebug: true,
  • // bundleInPaidRelease: true,
  • // bundleInBeta: verdadero,
    *
  • // si se debe deshabilitar el modo de desarrollo en variantes de compilación personalizadas (de forma predeterminada, solo se deshabilita en la versión)
  • // por ejemplo: para deshabilitar el modo de desarrollo en el tipo de construcción provisional (si está configurado)
  • devDisabledInStaging: verdadero,
  • // La propiedad de configuración puede estar en los siguientes formatos
  • // 'devDisabledIn $ {productFlavor} $ {buildType}'
  • // 'devDisabledIn $ {buildType}'
    *
  • // la raíz de su proyecto, es decir, donde vive "package.json"
  • raíz: "../../",
    *
  • // dónde poner el activo del paquete JS en modo de depuración
  • jsBundleDirDebug: "$ buildDir / intermedios / assets / debug",
    *
  • // dónde poner el activo del paquete JS en modo de lanzamiento
  • jsBundleDirRelease: "$ buildDir / intermedios / assets / release",
    *
  • // dónde colocar los recursos dibujables / activos React Native, por ejemplo, los que usa a través de
  • // require ('./ image.png')), en modo de depuración
  • resourcesDirDebug: "$ buildDir / intermediates / res / merged / debug",
    *
  • // dónde colocar los recursos dibujables / activos React Native, por ejemplo, los que usa a través de
  • // require ('./ image.png')), en modo de lanzamiento
  • resourcesDirRelease: "$ buildDir / intermediates / res / merged / release",
    *
  • // de forma predeterminada, las tareas de Gradle se omiten si ninguno de los archivos o activos JS cambia; esto significa
  • // que no miramos archivos en android / o ios / para determinar si las tareas están a la altura
  • // fecha; si tiene otras carpetas que desea ignorar por razones de rendimiento (gradle
  • // indexa todo el árbol), agréguelos aquí. Alternativamente, si tiene archivos JS en Android /
  • // por ejemplo, es posible que desee eliminarlo de aquí.
  • inputExcludes: ["android / ", "ios / "],
    *
  • // anula qué nodo se llama y con qué argumentos adicionales
  • nodeExecutableAndArgs: ["nodo"],
    *
  • // proporcionar argumentos adicionales al empaquetador
  • extraPackagerArgs: []
  • ]
    * /

project.ext.react = [
entryFile: "index.js",
enableHermes: false, // limpiar y reconstruir si se cambia
]

aplicar desde: "../../node_modules/react-native/react.gradle"

/ **

  • Establezca esto en verdadero para crear dos APK separados en lugar de uno:

    • Un APK que solo funciona en dispositivos ARM


    • Un APK que solo funciona en dispositivos x86

  • La ventaja es que el tamaño del APK se reduce en aproximadamente 4 MB.
  • Sube todos los APK a Play Store y la gente los descargará.
  • el correcto en función de la arquitectura de CPU de su dispositivo.
    * /
    def enableSeparateBuildPerCPUArchitecture = false

/ **

  • Ejecute Proguard para reducir el código de bytes de Java en las versiones de lanzamiento.
    * /
    def enableProguardInReleaseBuilds = false

/ **

  • El sabor de compilación preferido de JavaScriptCore.
    *
  • Por ejemplo, para usar la variante internacional, puede usar:
  • def jscFlavor = 'org.webkit:android-jsc-intl:+'
    *
  • La variante internacional incluye la biblioteca ICU i18n y los datos necesarios
  • permitiendo usar, por ejemplo, Date.toLocaleString y String.localeCompare que
  • dar resultados correctos cuando se usa con configuraciones regionales que no sean en-US. Tenga en cuenta que
  • esta variante es aproximadamente 6MiB más grande por arquitectura que la predeterminada.
    * /
    def jscFlavor = 'org. webkit: android-jsc : + '

/ **

  • Ya sea para habilitar Hermes VM.
    *
  • Esto debe establecerse en project.ext.react y reflejarse aquí. Si no está configurado
  • en project.ext.react, JavaScript no se compilará en Hermes Bytecode
  • y los beneficios de usar Hermes, por lo tanto, se reducirán drásticamente.
    * /
    def enableHermes = project.ext.react.get ("enableHermes", falso);

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

}

dependencias {
implementación fileTree (dir: "libs", incluye: ["* .jar"])
implementación "com.facebook. react: react-native : +" // Desde 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
}

}

// Ejecuta esto una vez para poder ejecutar la aplicación con BUCK
// pone todas las dependencias de compilación en carpetas libs para que las use BUCK
tarea copyDownloadableDepsToLibs (tipo: Copiar) {
de configurations.compile
en 'libs'
}

aplicar desde: file ("../../ node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle (proyecto)

Gracias, @lucasferreiraestevam. Por cierto, puede formatear este código como fuente para una mejor lectura.
De todos modos, no vi mucha diferencia con tu ejemplo. Pero gracias de nuevo

Trabaja para mí después de agregar todas las bibliotecas nuevamente para un proyecto nuevo. Gracias a todos

Mi problema aún no se ha solucionado. Sigo recibiendo el mismo error de tiempo de ejecución. Puede alguien ayudarme por favor.

@SAHITYASAI muestra tu 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 De acuerdo con la documentación , debe mover este código

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

a app/build.gradle . Moverlo al principio del archivo

Y reformatea tu código por favor

mismo problema aquí
FALLÓ LA CONSTRUCCIÓN en 3 s

error No se pudo instalar la aplicación. Asegúrese de tener configurado el entorno de desarrollo de Android: https://facebook.github.io/react-native/docs/getting-started.html#android -development-environment.
Error: el comando falló: aplicación gradlew.bat: installDebug -PreactNativeDevServerPort = 8081

FALLO: la compilación falló con una excepción.

  • Qué salió mal:
    Error en la ejecución de la tarea ': app: validateSigningDebug '.

    El archivo de almacén de claves 'E: \ React Native \ push notification \ react-native-onesignal \ examples \ RNOneSignal \ android \ app \ debug.keystore' no se encuentra para firmar la configuración 'debug'.

  • Tratar:
    Ejecute con la opción --stacktrace para obtener el seguimiento de la pila. Ejecute con la opción --info o --debug para obtener más resultados de registro. Ejecute con --scan para obtener información completa.

  • Obtenga más ayuda en https://help.gradle.org

CONSTRUCCIÓN FALLIDA en 3 s

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)`

¡Lo tengo funcionando con el último paquete react-native-onesignal!

aquí está mi project/build.gradle

Screenshot 2019-10-04 at 8 01 09 PM

Aquí está el archivo mine project / app / build.gradle

Screenshot 2019-10-04 at 8 01 37 PM

LOS PASOS TOMADOS PARA UTILIZARLO son

yarn add react-native-onesignal

entonces para ios
simplemente
cd ios && pod install

para andorid

simplemente

react-native run-android enlaza automáticamente el paquete

@waqaramjad Su problema está relacionado con la firma de código

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

@indapublic, ¿cuál es la solución para eso?

@waqaramjad Muestra tu android/app/build.gradle , signingConfigs

@indapublic aquí está android / app / build.gradle
`// Archivo de compilación de nivel superior donde puede agregar opciones de configuración comunes a todos los subproyectos / módulos.

buildscript {
ext {
buildToolsVersion = "28.0.3"
minSdkVersion = 16
compileSdkVersion = 28
targetSdkVersion = 28
supportLibVersion = "28.0.0"
}
repositorios {
Google()
jcenter ()
}
dependencias {
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
}

}

allprojects {
repositorios {
mavenLocal ()
maven {
// Todo React Native (JS, fuentes Obj-C, binarios de Android) se instala desde npm
url ("$ rootDir /../ node_modules / react-native / android")
}
maven {
// Android JSC se instala desde npm
url ("$ rootDir /../ node_modules / jsc-android / dist")
}

    google()
    jcenter()
}

}
'

@waqaramjad ¿Qué versión de RN tienes?

"0,60,5"

¿Actualizó la aplicación existente o creó una nueva?

Simplemente clono un ejemplo de aplicación existente que está en un repositorio de señal y simplemente lo inicio

@waqaramjad Deberías decir esto primero :)

Primero: imprimiste android/build.gradle , no android/app/build.gradle

Segundo: debe generar depuraciones y liberar almacenes de claves con respecto a este manual , por ejemplo

Por cierto: Vi que usas Windows, así que probablemente deberías usar algunas cosas para el lanzamiento de keytool, no tengo experiencia con Windows.

pero por qué necesito el almacén de claves porque no quiero apk firmado, solo quiero probarlo

mientras que aquí está el código de android/app/build.gradle

`aplicar complemento:" com.android.application "

import com.android.build.OutputFile

/ **

  • El archivo react.gradle registra una tarea para cada variante de compilación (por ejemplo, bundleDebugJsAndAssets
  • y bundleReleaseJsAndAssets).
  • Básicamente, llaman a react-native bundle con los argumentos correctos durante la compilación de Android
  • ciclo. De forma predeterminada, se omite bundleDebugJsAndAssets, ya que en el modo debug / dev preferimos cargar el
  • empaquetar directamente desde el servidor de desarrollo. A continuación puedes ver todas las configuraciones posibles
  • y sus incumplimientos. Si decide agregar un bloque de configuración, asegúrese de agregarlo antes del
  • apply from: "../../node_modules/react-native/react.gradle" línea.
    *
  • project.ext.react = [
  • // el nombre del archivo de activos generado que contiene su paquete JS
  • bundleAssetName: "index.android.bundle",
    *
  • // el archivo de entrada para la generación de paquetes
  • entryFile: "index.android.js",
    *
  • // https://facebook.github.io/react-native/docs/performance#enable -the-ram-format
  • bundleCommand: "ram-bundle",
    *
  • // si agrupar JS y activos en modo de depuración
  • bundleInDebug: falso,
    *
  • // si agrupar JS y activos en modo de lanzamiento
  • bundleInRelease: cierto,
    *
  • // si se debe agrupar JS y activos en otra variante de compilación (si está configurada).
  • // Ver http://tools.android.com/tech-docs/new-build-system/user-guide#TOC -Build-Variants
  • // La propiedad de configuración puede estar en los siguientes formatos
  • // 'bundleIn $ {productFlavor} $ {buildType}'
  • // 'bundleIn $ {buildType}'
  • // bundleInFreeDebug: true,
  • // bundleInPaidRelease: true,
  • // bundleInBeta: verdadero,
    *
  • // si se debe deshabilitar el modo de desarrollo en variantes de compilación personalizadas (de forma predeterminada, solo se deshabilita en la versión)
  • // por ejemplo: para deshabilitar el modo de desarrollo en el tipo de construcción provisional (si está configurado)
  • devDisabledInStaging: verdadero,
  • // La propiedad de configuración puede estar en los siguientes formatos
  • // 'devDisabledIn $ {productFlavor} $ {buildType}'
  • // 'devDisabledIn $ {buildType}'
    *
  • // la raíz de su proyecto, es decir, donde vive "package.json"
  • raíz: "../../",
    *
  • // dónde poner el activo del paquete JS en modo de depuración
  • jsBundleDirDebug: "$ buildDir / intermedios / assets / debug",
    *
  • // dónde poner el activo del paquete JS en modo de lanzamiento
  • jsBundleDirRelease: "$ buildDir / intermedios / assets / release",
    *
  • // dónde colocar los recursos dibujables / activos React Native, por ejemplo, los que usa a través de
  • // require ('./ image.png')), en modo de depuración
  • resourcesDirDebug: "$ buildDir / intermediates / res / merged / debug",
    *
  • // dónde colocar los recursos dibujables / activos React Native, por ejemplo, los que usa a través de
  • // require ('./ image.png')), en modo de lanzamiento
  • resourcesDirRelease: "$ buildDir / intermediates / res / merged / release",
    *
  • // de forma predeterminada, las tareas de Gradle se omiten si ninguno de los archivos o activos JS cambia; esto significa
  • // que no miramos archivos en android / o ios / para determinar si las tareas están a la altura
  • // fecha; si tiene otras carpetas que desea ignorar por razones de rendimiento (gradle
  • // indexa todo el árbol), agréguelos aquí. Alternativamente, si tiene archivos JS en Android /
  • // por ejemplo, es posible que desee eliminarlo de aquí.
  • inputExcludes: ["android / ", "ios / "],
    *
  • // anula qué nodo se llama y con qué argumentos adicionales
  • nodeExecutableAndArgs: ["nodo"],
    *
  • // proporcionar argumentos adicionales al empaquetador
  • extraPackagerArgs: []
  • ]
    * /

project.ext.react = [
entryFile: "index.js",
enableHermes: false, // limpiar y reconstruir si se cambia
]

aplicar desde: "../../node_modules/react-native/react.gradle"

/ **

  • Establezca esto en verdadero para crear dos APK separados en lugar de uno:

    • Un APK que solo funciona en dispositivos ARM


    • Un APK que solo funciona en dispositivos x86

  • La ventaja es que el tamaño del APK se reduce en aproximadamente 4 MB.
  • Sube todos los APK a Play Store y la gente los descargará.
  • el correcto en función de la arquitectura de CPU de su dispositivo.
    * /
    def enableSeparateBuildPerCPUArchitecture = false

/ **

  • Ejecute Proguard para reducir el código de bytes de Java en las versiones de lanzamiento.
    * /
    def enableProguardInReleaseBuilds = false

/ **

  • El sabor de compilación preferido de JavaScriptCore.
    *
  • Por ejemplo, para usar la variante internacional, puede usar:
  • def jscFlavor = 'org.webkit:android-jsc-intl:+'
    *
  • La variante internacional incluye la biblioteca ICU i18n y los datos necesarios
  • permitiendo usar, por ejemplo, Date.toLocaleString y String.localeCompare que
  • dar resultados correctos cuando se usa con configuraciones regionales que no sean en-US. Tenga en cuenta que
  • esta variante es aproximadamente 6MiB más grande por arquitectura que la predeterminada.
    * /
    def jscFlavor = 'org. webkit: android-jsc : + '

/ **

  • Ya sea para habilitar Hermes VM.
    *
  • Esto debe establecerse en project.ext.react y reflejarse aquí. Si no está configurado
  • en project.ext.react, JavaScript no se compilará en Hermes Bytecode
  • y los beneficios de usar Hermes, por lo tanto, se reducirán drásticamente.
    * /
    def enableHermes = project.ext.react.get ("enableHermes", falso);

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

}

dependencias {
implementación fileTree (dir: "libs", incluye: ["* .jar"])
implementación "com.facebook. react: react-native : +" // Desde 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
}

}

// Ejecuta esto una vez para poder ejecutar la aplicación con BUCK
// pone todas las dependencias de compilación en carpetas libs para que las use BUCK
tarea copyDownloadableDepsToLibs (tipo: Copiar) {
de configurations.compile
en 'libs'
}

aplicar desde: file ("../../ node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle (proyecto)
'

Pero quieres instalarlo en tu dispositivo, ¿no es así?
La configuración de la señal está aquí

@indapublic gracias, mi aplicación se está construyendo con éxito ahora. Pero necesito enviar notificaciones solo a aquellos usuarios que están inactivos durante 15 días continuos solo de manera programática sin usar el panel de notificación de oneignal. ¿Alguien puede ayudarme por favor?

Creo que deberías crear un nuevo problema para esto, ¿no es así?

@SAHITYASAI ,
Comuníquese con nuestro canal de soporte en OneSignal.com para obtener más ayuda. Salud

¿Fue útil esta página
0 / 5 - 0 calificaciones