React-native-onesignal: Bater com RN0.60 em qualquer Android

Criado em 23 set. 2019  ·  43Comentários  ·  Fonte: OneSignal/react-native-onesignal

1. SE VOCÊ NÃO PREENCHER AS SEGUINTES INFORMAÇÕES, PODEMOS ENCERRAR SEU PROBLEMA SEM INVESTIGAÇÃO 2. PESQUISAR PROBLEMAS EXISTENTES PARA OBTER UMA RESPOSTA: https://goo.gl/pspQNY 3. Consulte nossa documentação de Problemas Comuns: https: // goo .gl / BDcfZZ 4. Veja nossas diretrizes de contribuição: https://goo.gl/h19DnX

Descrição:

(sua descrição aqui)

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]

No início do aplicativo Android, meu aplicativo está travando sem nenhuma mensagem ou janela.

adb logcat :

09-23 17: 06: 37.900 8388 8388 D AndroidRuntime: Desligando a VM
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: EXCEÇÃO FATAL: principal
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: Processo: com.macroactive, PID: 8388
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: java.lang.NoClassDefFoundError: Resolução com falha de: Lcom / google / android / gms / common / internal / zzbq;
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: em com.google.firebase.provider.FirebaseInitProvider.attachInfo (fonte desconhecida)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: em android.app.ActivityThread.installProvider (ActivityThread.java:5153)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: em android.app.ActivityThread.installContentProviders (ActivityThread.java:4748)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: em android.app.ActivityThread.handleBindApplication (ActivityThread.java:4688)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: em android.app.ActivityThread.-wrap1 (ActivityThread.java)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: em android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1405)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: em android.os.Handler.dispatchMessage (Handler.java:102)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: em android.os.Looper.loop (Looper.java:148)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: em android.app.ActivityThread.main (ActivityThread.java:5417)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: em java.lang.reflect.Method.invoke (método nativo)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: em com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: em com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: causado por: java.lang.ClassNotFoundException: não encontrou a classe "com.google.android.gms.common.internal.zzbq" no caminho: DexPathList [[arquivo 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: em dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:56)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: em java.lang.ClassLoader.loadClass (ClassLoader.java:511)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: em java.lang.ClassLoader.loadClass (ClassLoader.java:469)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: ... mais 12
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: em java.lang.Class.classForName (método nativo)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: em java.lang.BootClassLoader.findClass (ClassLoader.java:781)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: em java.lang.BootClassLoader.loadClass (ClassLoader.java:841)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: em java.lang.ClassLoader.loadClass (ClassLoader.java:504)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: ... mais 13
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: Causado por: java.lang.NoClassDefFoundError: Classe não encontrada usando o carregador de classes de inicialização; nenhum rastreamento de pilha disponível

Não é possível reproduzi-lo em um aplicativo novo, então talvez esteja relacionado a alguma biblioteca. Encontrei alguns problemas com "com / google / android / gms / common / internal / zzbq", mas não consigo encontrar nenhum útil.
Diga-me por onde começar?

Help Wanted

Comentários muito úteis

mesmo erro em reagente nativo 0.60.5, usando [email protected]

Todos 43 comentários

Da mesma forma, meu aplicativo também está travando ao receber notificações no Android. Eu testei no mi note 4 (android 7.0, RN 0.60.3, react-native-onesignal 3.3.3).

@SAHITYASAI Você poderia mostrar adb logcat ?

Screenshot_2019-09-22-17-55-21-844_com miui bugreport
Este é o erro de tempo de execução que recebo sempre que o aplicativo trava.

mesmo erro em reagente nativo 0.60.5, usando [email protected]

Você pode ter certeza de que adicionou onesignal-gradle-plugin ao topo de seu app/build.gradle anotado na etapa 1.1?
https://documentation.onesignal.com/docs/android-sdk-setup#section -1-gradle-setup

Deixar de fazer isso ou adicioná-lo ao build.gradle errado é o problema mais comum para esse erro de tempo de execução.

O início do meu 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

a propósito, eu usei antes apenas

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

para reagente nativo 0,59 e reagente nativo-ona: 3.2.12

Eu adicionei tudo conforme descrito no guia de instalação. Mas a linha de aplicação do plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin' está fazendo com que a compilação do meu aplicativo falhe com este erro

  • O que deu errado: Ocorreu um problema ao configurar o projeto raiz ''. > Não foi possível obter a propriedade desconhecida 'android' para o projeto raiz '' do tipo org.gradle.api.Project. "

de modo que comentei essa linha porque não consegui encontrar nenhuma solução no google.
Alguém também pode me dar algum código de exemplo sobre como enviar notificações programadas usando a API REST de um sinal. Desde já, obrigado.

Você pode ter certeza de que adicionou onesignal-gradle-plugin ao topo de seu app/build.gradle anotado na etapa 1.1?
https://documentation.onesignal.com/docs/android-sdk-setup#section -1-gradle-setup

Deixar de fazer isso ou adicioná-lo ao build.gradle errado é o problema mais comum para esse erro de tempo de execução.

Sim adicionado e o mesmo erro acontece

O início do meu 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

do jeito que eu vejo! você está fazendo isso errado! nem tudo para o arquivo app / build.gradle, o plugin apply vai apenas lá e o resto do caminho da classe, maven url e gradle plugin repo url vai no projeto build.gradle

@indapublic acabei de resolver! eu tive o mesmo bug! Obrigado por postar isso.! Se você ainda estiver procurando, estou aberto para ajudar a me contactar em!

Olá,
Atualize para a versão mais recente do plug-in (3.4.1) e tente novamente.

@SAHITYASAI dê uma olhada aqui

@indapublic acabei de resolver! eu tive o mesmo bug! Obrigado por postar isso.! Se você ainda estiver procurando, estou aberto para ajudar a me contactar em!

Obrigado, resolvido !!

Dentro da pasta do projeto "app / build.gradle" adicionado no início do arquivo.

buildscript {
repositórios {
maven {url ' https://plugins.gradle.org/m2/ '} // Portal de plug-ins do Gradle
}
dependências {
classpath 'gradle.plugin.com. onesignal: onesignal-gradle-plugin : [0.12.1, 0.99.99] '
}
}

aplique o plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'

aplique o plugin: "com.android.application"

import com.android.build.OutputFile

funciona!

Que bom ouvir!

@indapublic acabei de resolver! eu tive o mesmo bug! Obrigado por postar isso.! Se você ainda estiver procurando, estou aberto para ajudar a me contactar em!

Mostre-me seu build.gradle

@indapublic acabei de resolver! eu tive o mesmo bug! Obrigado por postar isso.! Se você ainda estiver procurando, estou aberto para ajudar a me contactar em!

Mostre-me seu build.gradle

buildscript {
repositórios {
maven {url ' https://plugins.gradle.org/m2/ '} // Portal de plug-ins do Gradle
}
dependências {
classpath 'gradle.plugin.com. onesignal: onesignal-gradle-plugin : [0.12.1, 0.99.99] '
}
}

aplique o plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'

aplique o plugin: "com.android.application"

import com.android.build.OutputFile

/ **

  • O arquivo react.gradle registra uma tarefa para cada variante de compilação (por exemplo, bundleDebugJsAndAssets
  • e bundleReleaseJsAndAssets).
  • Basicamente, eles chamam react-native bundle com os argumentos corretos durante a construção do Android
  • ciclo. Por padrão, bundleDebugJsAndAssets é ignorado, pois no modo debug / dev preferimos carregar o
  • empacotar diretamente do servidor de desenvolvimento. Abaixo você pode ver todas as configurações possíveis
  • e seus padrões. Se você decidir adicionar um bloco de configuração, certifique-se de adicioná-lo antes de
  • Linha apply from: "../../node_modules/react-native/react.gradle" .
    *
  • project.ext.react = [
  • // o nome do arquivo de ativo gerado contendo seu pacote JS
  • bundleAssetName: "index.android.bundle",
    *
  • // o arquivo de entrada para geração de pacote
  • entryFile: "index.android.js",
    *
  • // https://facebook.github.io/react-native/docs/performance#enable -the-ram-format
  • bundleCommand: "ram-bundle",
    *
  • // se deve agrupar JS e ativos no modo de depuração
  • bundleInDebug: false,
    *
  • // se deve agrupar JS e recursos no modo de lançamento
  • bundleInRelease: true,
    *
  • // se deve agrupar JS e recursos em outra variante de compilação (se configurada).
  • // Consulte http://tools.android.com/tech-docs/new-build-system/user-guide#TOC -Build-Variants
  • // A propriedade de configuração pode estar nos seguintes formatos
  • // 'bundleIn $ {productFlavor} $ {buildType}'
  • // 'bundleIn $ {buildType}'
  • // bundleInFreeDebug: true,
  • // bundleInPaidRelease: true,
  • // bundleInBeta: true,
    *
  • // se deve desativar o modo dev em variantes de compilação personalizadas (por padrão, desativado apenas na versão)
  • // por exemplo: para desativar o modo dev no tipo de compilação de teste (se configurado)
  • devDisabledInStaging: true,
  • // A propriedade de configuração pode estar nos seguintes formatos
  • // 'devDisabledIn $ {productFlavor} $ {buildType}'
  • // 'devDisabledIn $ {buildType}'
    *
  • // a raiz do seu projeto, ou seja, onde mora "package.json"
  • raiz: "../../",
    *
  • // onde colocar o ativo do pacote JS no modo de depuração
  • jsBundleDirDebug: "$ buildDir / intermediates / assets / debug",
    *
  • // onde colocar o ativo do pacote JS no modo de liberação
  • jsBundleDirRelease: "$ buildDir / intermediates / assets / release",
    *
  • // onde colocar recursos drawable / React Native assets, por exemplo, aqueles que você usa por meio de
  • // require ('./ image.png')), no modo de depuração
  • resourcesDirDebug: "$ buildDir / intermediates / res / merged / debug",
    *
  • // onde colocar recursos drawable / React Native assets, por exemplo, aqueles que você usa por meio de
  • // require ('./ image.png')), no modo de liberação
  • resourcesDirRelease: "$ buildDir / intermediates / res / merged / release",
    *
  • // por padrão, as tarefas gradle são ignoradas se nenhum dos arquivos JS ou ativos mudar; isso significa
  • // que não olhamos para arquivos em android / ou ios / para determinar se as tarefas estão até
  • // encontro; se você tiver quaisquer outras pastas que deseja ignorar por motivos de desempenho (gradle
  • // indexa a árvore inteira), adicione-os aqui. Como alternativa, se você tiver arquivos JS em android /
  • // por exemplo, você pode querer removê-lo daqui.
  • inputExcludes: ["android / ", "ios / "],
    *
  • // sobrescreve qual nó é chamado e com quais argumentos adicionais
  • nodeExecutableAndArgs: ["node"],
    *
  • // fornece argumentos adicionais para o empacotador
  • extraPackagerArgs: []
  • ]
    * /

project.ext.react = [
entryFile: "index.js",
enableHermes: false, // limpar e reconstruir se mudar
]

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

/ **

  • Defina como verdadeiro para criar dois APKs separados em vez de um:

    • Um APK que funciona apenas em dispositivos ARM


    • Um APK que funciona apenas em dispositivos x86

  • A vantagem é que o tamanho do APK é reduzido em cerca de 4 MB.
  • Faça upload de todos os APKs para a Play Store e as pessoas farão o download
  • o correto com base na arquitetura da CPU de seu dispositivo.
    * /
    def enableSeparateBuildPerCPUArchitecture = false

/ **

  • Execute o Proguard para reduzir o bytecode Java em compilações de lançamento.
    * /
    def enableProguardInReleaseBuilds = false

/ **

  • O tipo de compilação preferido de JavaScriptCore.
    *
  • Por exemplo, para usar a variante internacional, você pode usar:
  • def jscFlavor = 'org.webkit:android-jsc-intl:+'
    *
  • A variante internacional inclui a biblioteca ICU i18n e os dados necessários
  • permitindo usar, por exemplo, Date.toLocaleString e String.localeCompare que
  • forneça resultados corretos ao usar com localidades diferentes de en-US. Observe que
  • esta variante é cerca de 6 MiB maior do que o padrão por arquitetura.
    * /
    def jscFlavor = 'org. webkit: android-jsc : + '

/ **

  • Se deve ativar o Hermes VM.
    *
  • Isso deve ser definido em project.ext.react e espelhado aqui. Se não estiver definido
  • em project.ext.react, JavaScript não será compilado para o Bytecode Hermes
  • e os benefícios do uso de Hermes serão, portanto, drasticamente reduzidos.
    * /
    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'
}

}

dependências {
implementação fileTree (dir: "libs", inclui: ["* .jar"])
implementação "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
}

}

// Execute uma vez para poder executar o aplicativo com BUCK
// coloca todas as dependências de compilação em bibliotecas de pastas para o BUCK usar
tarefa copyDownloadableDepsToLibs (tipo: Copy) {
de configurations.compile
em 'libs'
}

aplique a partir de: file ("../../ node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle (projeto)

Obrigado, @lucasferreiraestevam. A propósito, você pode formatar este código como fonte para uma melhor leitura.
De qualquer forma, não vi muita diferença no seu exemplo. Mas obrigado de novo

Trabalhe para mim depois de adicionar todas as bibliotecas novamente para um novo projeto. Obrigado a todos

Meu problema ainda não foi corrigido. ainda estou recebendo o mesmo erro de tempo de execução. Alguém pode me ajudar, por favor.

@SAHITYASAI mostre seu 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 acordo com a documentação, você deve 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' }
}

para app/build.gradle . Mova-o para o início do arquivo

E reformate o seu código, por favor

mesmo problema aqui
`FALHA NA CONSTRUÇÃO em 3s

erro Falha ao instalar o aplicativo. Certifique-se de ter o ambiente de desenvolvimento Android configurado: https://facebook.github.io/react-native/docs/getting-started.html#android -development-environment.
Erro: Falha no comando: gradlew.bat app: installDebug -PreactNativeDevServerPort = 8081

FALHA: a compilação falhou com uma exceção.

  • O que deu errado:
    A execução falhou para a tarefa ': app: validateSigningDebug '.

    Arquivo de armazenamento de chave 'E: \ React Native \ push notification \ react-native-onesignal \ examples \ RNOneSignal \ android \ app \ debug.keystore' não encontrado para a configuração de assinatura 'debug'.

  • Experimente:
    Execute com a opção --stacktrace para obter o rastreamento da pilha. Execute com a opção --info ou --debug para obter mais saída de log. Execute com --scan para obter informações completas.

  • Obtenha mais ajuda em https://help.gradle.org

FALHA NA CONSTRUÇÃO em 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)`

Eu o tenho funcionando com o mais recente pacote de sinal-reativo-nativo!

aqui está meu project/build.gradle

Screenshot 2019-10-04 at 8 01 09 PM

Aqui está o meu arquivo project / app / build.gradle

Screenshot 2019-10-04 at 8 01 37 PM

AS ETAPAS PARA USÁ-LO são

yarn add react-native-onesignal

então para ios
simplesmente
cd ios && pod install

para andorid

simplesmente

react-native run-android it vincula automaticamente o pacote

@waqaramjad Seu problema está relacionado à assinatura 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 então qual é a solução para isso?

@waqaramjad Mostre sua android/app/build.gradle , signingConfigs

@indapublic aqui é android / app / build.gradle
`// Arquivo de construção de nível superior onde você pode adicionar opções de configuração comuns a todos os subprojetos / módulos.

buildscript {
ext {
buildToolsVersion = "28.0.3"
minSdkVersion = 16
compileSdkVersion = 28
targetSdkVersion = 28
supportLibVersion = "28.0.0"
}
repositórios {
Google()
jcenter ()
}
dependências {
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 {
repositórios {
mavenLocal ()
maven {
// Todo o React Native (JS, fontes Obj-C, binários Android) é instalado a partir do npm
url ("$ rootDir /../ node_modules / react-native / android")
}
maven {
// Android JSC é instalado a partir do npm
url ("$ rootDir /../ node_modules / jsc-android / dist")
}

    google()
    jcenter()
}

}
`

@waqaramjad Qual versão RN você tem?

"0,60,5"

Você atualizou o aplicativo existente ou criou um novo?

Acabei de clonar um exemplo de aplicativo existente que está em um repositório de sinal e apenas iniciá-lo

@waqaramjad Você deve dizer isso primeiro :)

Primeiro: você imprimiu android/build.gradle , não android/app/build.gradle

Segundo: você deve gerar debug e liberar keystores em relação a este manual , por exemplo

btw: Eu vi que você está usando o Windows, então provavelmente você deve usar algumas coisas para a inicialização do keytool, não tenho experiência com o Windows.

mas porque eu preciso do armazenamento de chaves porque não quero um apk assinado, só quero testá-lo

enquanto aqui está o código para android/app/build.gradle

`aplique o plugin:" com.android.application "

import com.android.build.OutputFile

/ **

  • O arquivo react.gradle registra uma tarefa para cada variante de compilação (por exemplo, bundleDebugJsAndAssets
  • e bundleReleaseJsAndAssets).
  • Basicamente, eles chamam react-native bundle com os argumentos corretos durante a construção do Android
  • ciclo. Por padrão, bundleDebugJsAndAssets é ignorado, pois no modo debug / dev preferimos carregar o
  • empacotar diretamente do servidor de desenvolvimento. Abaixo você pode ver todas as configurações possíveis
  • e seus padrões. Se você decidir adicionar um bloco de configuração, certifique-se de adicioná-lo antes de
  • Linha apply from: "../../node_modules/react-native/react.gradle" .
    *
  • project.ext.react = [
  • // o nome do arquivo de ativo gerado contendo seu pacote JS
  • bundleAssetName: "index.android.bundle",
    *
  • // o arquivo de entrada para geração de pacote
  • entryFile: "index.android.js",
    *
  • // https://facebook.github.io/react-native/docs/performance#enable -the-ram-format
  • bundleCommand: "ram-bundle",
    *
  • // se deve agrupar JS e ativos no modo de depuração
  • bundleInDebug: false,
    *
  • // se deve agrupar JS e recursos no modo de lançamento
  • bundleInRelease: true,
    *
  • // se deve agrupar JS e recursos em outra variante de compilação (se configurada).
  • // Consulte http://tools.android.com/tech-docs/new-build-system/user-guide#TOC -Build-Variants
  • // A propriedade de configuração pode estar nos seguintes formatos
  • // 'bundleIn $ {productFlavor} $ {buildType}'
  • // 'bundleIn $ {buildType}'
  • // bundleInFreeDebug: true,
  • // bundleInPaidRelease: true,
  • // bundleInBeta: true,
    *
  • // se deve desativar o modo dev em variantes de compilação personalizadas (por padrão, desativado apenas na versão)
  • // por exemplo: para desativar o modo dev no tipo de compilação de teste (se configurado)
  • devDisabledInStaging: true,
  • // A propriedade de configuração pode estar nos seguintes formatos
  • // 'devDisabledIn $ {productFlavor} $ {buildType}'
  • // 'devDisabledIn $ {buildType}'
    *
  • // a raiz do seu projeto, ou seja, onde mora "package.json"
  • raiz: "../../",
    *
  • // onde colocar o ativo do pacote JS no modo de depuração
  • jsBundleDirDebug: "$ buildDir / intermediates / assets / debug",
    *
  • // onde colocar o ativo do pacote JS no modo de liberação
  • jsBundleDirRelease: "$ buildDir / intermediates / assets / release",
    *
  • // onde colocar recursos drawable / React Native assets, por exemplo, aqueles que você usa por meio de
  • // require ('./ image.png')), no modo de depuração
  • resourcesDirDebug: "$ buildDir / intermediates / res / merged / debug",
    *
  • // onde colocar recursos drawable / React Native assets, por exemplo, aqueles que você usa por meio de
  • // require ('./ image.png')), no modo de liberação
  • resourcesDirRelease: "$ buildDir / intermediates / res / merged / release",
    *
  • // por padrão, as tarefas gradle são ignoradas se nenhum dos arquivos JS ou ativos mudar; isso significa
  • // que não olhamos para arquivos em android / ou ios / para determinar se as tarefas estão até
  • // encontro; se você tiver quaisquer outras pastas que deseja ignorar por motivos de desempenho (gradle
  • // indexa a árvore inteira), adicione-os aqui. Como alternativa, se você tiver arquivos JS em android /
  • // por exemplo, você pode querer removê-lo daqui.
  • inputExcludes: ["android / ", "ios / "],
    *
  • // sobrescreve qual nó é chamado e com quais argumentos adicionais
  • nodeExecutableAndArgs: ["node"],
    *
  • // fornece argumentos adicionais para o empacotador
  • extraPackagerArgs: []
  • ]
    * /

project.ext.react = [
entryFile: "index.js",
enableHermes: false, // limpar e reconstruir se mudar
]

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

/ **

  • Defina como verdadeiro para criar dois APKs separados em vez de um:

    • Um APK que funciona apenas em dispositivos ARM


    • Um APK que funciona apenas em dispositivos x86

  • A vantagem é que o tamanho do APK é reduzido em cerca de 4 MB.
  • Faça upload de todos os APKs para a Play Store e as pessoas farão o download
  • o correto com base na arquitetura da CPU de seu dispositivo.
    * /
    def enableSeparateBuildPerCPUArchitecture = false

/ **

  • Execute o Proguard para reduzir o bytecode Java em compilações de lançamento.
    * /
    def enableProguardInReleaseBuilds = false

/ **

  • O tipo de compilação preferido de JavaScriptCore.
    *
  • Por exemplo, para usar a variante internacional, você pode usar:
  • def jscFlavor = 'org.webkit:android-jsc-intl:+'
    *
  • A variante internacional inclui a biblioteca ICU i18n e os dados necessários
  • permitindo usar, por exemplo, Date.toLocaleString e String.localeCompare que
  • forneça resultados corretos ao usar com localidades diferentes de en-US. Observe que
  • esta variante é cerca de 6 MiB maior do que o padrão por arquitetura.
    * /
    def jscFlavor = 'org. webkit: android-jsc : + '

/ **

  • Se deve ativar o Hermes VM.
    *
  • Isso deve ser definido em project.ext.react e espelhado aqui. Se não estiver definido
  • em project.ext.react, JavaScript não será compilado para o Bytecode Hermes
  • e os benefícios do uso de Hermes serão, portanto, drasticamente reduzidos.
    * /
    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'
}

}

dependências {
implementação fileTree (dir: "libs", inclui: ["* .jar"])
implementação "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
}

}

// Execute uma vez para poder executar o aplicativo com BUCK
// coloca todas as dependências de compilação em bibliotecas de pastas para o BUCK usar
tarefa copyDownloadableDepsToLibs (tipo: Copy) {
de configurations.compile
em 'libs'
}

aplique a partir de: file ("../../ node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle (projeto)
`

Mas você quer instalá-lo no seu dispositivo, não é?
A configuração do sinal está aqui

@indapublic obrigado, meu aplicativo está sendo construído com sucesso agora. Mas eu preciso enviar notificação apenas para os usuários que estão inativos por 15 dias contínuos apenas de forma programática, sem usar o painel de notificação de um sinal. Alguém pode me ajudar por favor.

Acho que você deveria criar uma nova edição para isso, não é?

@SAHITYASAI ,
Entre em contato com nosso canal de suporte em OneSignal.com para obter mais assistência. Saúde

Esta página foi útil?
0 / 5 - 0 avaliações