React-native-onesignal: Вылет с RN0.60 на любом Android

Созданный на 23 сент. 2019  ·  43Комментарии  ·  Источник: OneSignal/react-native-onesignal

1. ЕСЛИ ВЫ НЕ ЗАПОЛНИТЕ СЛЕДУЮЩУЮ ИНФОРМАЦИЮ, МЫ МОЖЕМ ЗАКРЫТЬ ВАШ ВОПРОС БЕЗ РАССЛЕДОВАНИЯ 2. ПОИСК ОТВЕТА НА СУЩЕСТВУЮЩИЕ ВОПРОСЫ: https://goo.gl/pspQNY 3. См. Нашу документацию по общим вопросам: https: // goo .gl / BDcfZZ 4. См. наши правила участия: https://goo.gl/h19DnX

Описание:

(ваше описание здесь)

Среда

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]

При запуске приложения Android мое приложение вылетает без сообщений или окон.

adb logcat :

09-23 17: 06: 37.900 8388 8388 D AndroidRuntime: завершение работы ВМ
09-23 17: 06: 37.901 8388 8388 E Android Время выполнения: FATAL EXCEPTION: main
09-23 17: 06: 37.901 8388 8388 E Android Время выполнения: Процесс: com.macroactive, PID: 8388
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: java.lang.NoClassDefFoundError: Ошибка разрешения: Lcom / google / android / gms / common / internal / zzbq;
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: на com.google.firebase.provider.FirebaseInitProvider.attachInfo (неизвестный источник)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: в android.app.ActivityThread.installProvider (ActivityThread.java:5153)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: в android.app.ActivityThread.installContentProviders (ActivityThread.java:4748)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: в android.app.ActivityThread.handleBindApplication (ActivityThread.java:4688)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: в android.app.ActivityThread.-wrap1 (ActivityThread.java)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: в android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1405)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: в android.os.Handler.dispatchMessage (Handler.java:102)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: на android.os.Looper.loop (Looper.java:148)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: в android.app.ActivityThread.main (ActivityThread.java:5417)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: в java.lang.reflect.Method.invoke (собственный метод)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616)
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: Вызвано: java.lang.ClassNotFoundException: Не удалось найти класс "com.google.android.gms.common.internal.zzbq" на пути: DexPathList [[zip file "/data/app/com.macroactive-2/base.apk" visible,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
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: Подавлено: java.lang.ClassNotFoundException: com.google.android.gms.common.internal.zzbq
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: в java.lang.Class.classForName (собственный метод)
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
09-23 17: 06: 37.901 8388 8388 E AndroidRuntime: Вызвано: java.lang.NoClassDefFoundError: Класс не найден с помощью загрузчика классов загрузки; нет трассировки стека

Невозможно воспроизвести его в новом приложении, поэтому, возможно, он связан с какими-либо библиотеками. Обнаружил некоторые проблемы с "com / google / android / gms / common / internal / zzbq", но не нашел ничего полезного.
Подскажите с чего начать?

Help Wanted

Самый полезный комментарий

та же ошибка в response-native 0.60.5, используя [email protected]

Все 43 Комментарий

Точно так же мое приложение также вылетает при получении уведомления на Android. Тестировал на mi note 4 (android 7.0, RN 0.60.3, react-native-onesignal 3.3.3).

@SAHITYASAI Не могли бы вы показать adb logcat ?

Screenshot_2019-09-22-17-55-21-844_com miui bugreport
Это ошибка времени выполнения, которую я получаю всякий раз, когда приложение вылетает.

та же ошибка в response-native 0.60.5, используя [email protected]

Можете ли вы убедиться, что добавили onesignal-gradle-plugin вверху app/build.gradle отмеченного на шаге 1.1?
https://documentation.onesignal.com/docs/android-sdk-setup#section -1-gradle-setup

Отсутствие этого или добавление к неправильному build.gradle - наиболее распространенная проблема для этой ошибки времени выполнения.

Начало моего 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

кстати, я использовал только раньше

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

для react-native 0.59 и react-native-onesignal: 3.2.12

Я добавил все как описано в руководстве по установке. Но строка apply plugin: com.onesignal.androidsdk.onesignal-gradle-plugin вызывает сбой сборки моего приложения с этой ошибкой

  • Что пошло не так: возникла проблема при настройке корневого проекта ''. > Не удалось получить неизвестное свойство 'android' для корневого проекта '' типа org.gradle.api.Project. "

так что я прокомментировал эту строку, поскольку я не мог найти никакого решения в Google.
Также может кто-нибудь дать мне какой-либо пример кода о том, как отправлять запланированные уведомления с помощью OneSignal REST API. Заранее спасибо.

Можете ли вы убедиться, что добавили onesignal-gradle-plugin вверху app/build.gradle отмеченного на шаге 1.1?
https://documentation.onesignal.com/docs/android-sdk-setup#section -1-gradle-setup

Отсутствие этого или добавление к неправильному build.gradle - наиболее распространенная проблема для этой ошибки времени выполнения.

Да, добавлено, и возникает такая же ошибка

Начало моего 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

так, как я это вижу! Ты делаешь это неправильно! это не все для файла app / build.gradle, плагин apply идет только туда, а остальная часть пути к классу, URL-адрес maven и URL-адрес репозитория плагина gradle входят в проект build.gradle

@indapublic, я просто решил это! у меня была такая же ошибка! Спасибо за публикацию.! Если вы все еще ищете, я готов помочь мне связаться со мной!

Привет,
Пожалуйста, обновите плагин до последней версии (3.4.1) и попробуйте еще раз.

@SAHITYASAI взгляни сюда

@indapublic, я просто решил это! у меня была такая же ошибка! Спасибо за публикацию.! Если вы все еще ищете, я готов помочь мне связаться со мной!

Спасибо, решено !!

Внутри папки проекта "app / build.gradle" добавлено это в начало файла.

buildscript {
репозитории {
maven {url ' https://plugins.gradle.org/m2/ '} // Портал подключаемых модулей Gradle
}
dependencies {
classpath 'gradle.plugin.com. onesignal: onesignal-gradle-plugin : [0.12.1, 0.99.99] '
}
}

применить плагин: 'com.onesignal.androidsdk.onesignal-gradle-plugin'

применить плагин: "com.android.application"

импорт com.android.build.OutputFile

оно работает!

Рад слышать!

@indapublic, я просто решил это! у меня была такая же ошибка! Спасибо за публикацию.! Если вы все еще ищете, я готов помочь мне связаться со мной!

Покажи мне свой build.gradle

@indapublic, я просто решил это! у меня была такая же ошибка! Спасибо за публикацию.! Если вы все еще ищете, я готов помочь мне связаться со мной!

Покажи мне свой build.gradle

buildscript {
репозитории {
maven {url ' https://plugins.gradle.org/m2/ '} // Портал подключаемых модулей Gradle
}
dependencies {
classpath 'gradle.plugin.com. onesignal: onesignal-gradle-plugin : [0.12.1, 0.99.99] '
}
}

применить плагин: 'com.onesignal.androidsdk.onesignal-gradle-plugin'

применить плагин: "com.android.application"

импорт com.android.build.OutputFile

/ **

  • Файл response.gradle регистрирует задачу для каждого варианта сборки (например, bundleDebugJsAndAssets
  • и bundleReleaseJsAndAssets).
  • В основном они вызывают react-native bundle с правильными аргументами во время сборки Android.
  • цикл. По умолчанию bundleDebugJsAndAssets пропускается, так как в режиме отладки / разработки мы предпочитаем загружать
  • бандл прямо с сервера разработки. Ниже вы можете увидеть все возможные конфигурации
  • и их значения по умолчанию. Если вы решили добавить блок конфигурации, обязательно добавьте его перед
  • apply from: "../../node_modules/react-native/react.gradle" строка.
    *
  • project.ext.react = [
  • // имя сгенерированного файла ресурсов, содержащего ваш пакет JS
  • bundleAssetName: "index.android.bundle",
    *
  • // файл записи для генерации пакета
  • entryFile: "index.android.js",
    *
  • // https://facebook.github.io/react-native/docs/performance#enable -the-ram-format
  • bundleCommand: "ram-bundle",
    *
  • // нужно ли связывать JS и активы в режиме отладки
  • bundleInDebug: ложь,
    *
  • // нужно ли связывать JS и активы в режиме выпуска
  • bundleInRelease: правда,
    *
  • // следует ли объединять JS и активы в другой вариант сборки (если настроен).
  • // См http://tools.android.com/tech-docs/new-build-system/user-guide#TOC -Build-Варианты
  • // Свойство конфигурации может быть в следующих форматах
  • // 'bundleIn $ {productFlavor} $ {buildType}'
  • // 'bundleIn $ {buildType}'
  • // bundleInFreeDebug: true,
  • // bundleInPaidRelease: true,
  • // bundleInBeta: true,
    *
  • // следует ли отключать режим разработки в пользовательских вариантах сборки (по умолчанию отключен только в выпуске)
  • // например: отключить режим разработки в промежуточном типе сборки (если настроен)
  • devDisabledInStaging: правда,
  • // Свойство конфигурации может быть в следующих форматах
  • // 'devDisabledIn $ {productFlavor} $ {buildType}'
  • // 'devDisabledIn $ {buildType}'
    *
  • // корень вашего проекта, то есть там, где находится "package.json"
  • корень: "../../",
    *
  • // куда поместить актив пакета JS в режим отладки
  • jsBundleDirDebug: "$ buildDir / intermediate / assets / debug",
    *
  • // куда поместить актив пакета JS в режим выпуска
  • jsBundleDirRelease: "$ buildDir / intermediate / assets / release",
    *
  • // куда разместить доступные ресурсы / ресурсы React Native, например те, которые вы используете через
  • // require ('./ image.png')), в режиме отладки
  • resourcesDirDebug: "$ buildDir / intermediate / res / merged / debug",
    *
  • // куда разместить доступные ресурсы / ресурсы React Native, например те, которые вы используете через
  • // require ('./ image.png')), в режиме выпуска
  • resourcesDirRelease: "$ buildDir / intermediate / res / merged / release",
    *
  • // по умолчанию задачи gradle пропускаются, если ни один из файлов JS или ресурсов не изменяется; это означает
  • // что мы не смотрим на файлы в android / или ios /, чтобы определить, подходят ли задачи до
  • // Дата; если у вас есть другие папки, которые вы хотите игнорировать по соображениям производительности (gradle
  • // индексирует все дерево), добавьте их сюда. В качестве альтернативы, если у вас есть файлы JS в android /
  • // например, вы можете удалить его отсюда.
  • inputExcludes: ["android / ", "ios / "],
    *
  • // переопределить, какой узел вызывается и с какими дополнительными аргументами
  • nodeExecutableAndArgs: ["узел"],
    *
  • // передаем упаковщику дополнительные аргументы
  • extraPackagerArgs: []
  • ]
    * /

project.ext.react = [
entryFile: "index.js",
enableHermes: false, // очистить и перестроить при изменении
]

подать заявку из: "../../node_modules/react-native/react.gradle"

/ **

  • Установите значение true, чтобы создать два отдельных APK вместо одного:

    • APK, который работает только на устройствах ARM


    • APK, который работает только на устройствах x86

  • Преимущество в том, что размер APK уменьшен примерно на 4 МБ.
  • Загрузите все APK в Play Store, и люди скачают
  • правильный, основанный на архитектуре ЦП устройства.
    * /
    def enableSeparateBuildPerCPUArchitecture = false

/ **

  • Запустите Proguard, чтобы сжать байт-код Java в сборках выпуска.
    * /
    def enableProguardInReleaseBuilds = false

/ **

  • Предпочтительный вариант сборки JavaScriptCore.
    *
  • Например, чтобы использовать международный вариант, вы можете использовать:
  • def jscFlavor = 'org.webkit:android-jsc-intl:+'
    *
  • Международный вариант включает библиотеку ICU i18n и необходимые данные.
  • позволяя использовать, например, Date.toLocaleString и String.localeCompare которые
  • давать правильные результаты при использовании с языками, отличными от en-US. Обратите внимание, что
  • этот вариант примерно на 6 МБ больше на архитектуру, чем по умолчанию.
    * /
    def jscFlavor = 'org. webkit: android-jsc : + '

/ **

  • Включать ли Гермес ВМ.
    *
  • Это должно быть установлено в project.ext.react и отражено здесь. Если не установлен
  • в project.ext.react JavaScript не будет компилироваться в байт-код Hermes.
  • и поэтому польза от использования Hermes резко снизится.
    * /
    def enableHermes = project.ext.react.get ("enableHermes", ложь);

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

}

dependencies {
реализация fileTree (dir: "libs", include: ["* .jar"])
реализация "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
}

}

// Выполните это один раз, чтобы иметь возможность запустить приложение с BUCK
// помещает все зависимости компиляции в папки libs для использования BUCK
задача copyDownloadableDepsToLibs (type: Copy) {
из файла configurations.compile
в библиотеки
}

подать заявку из: файла ("../../ node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle (проект)

Спасибо, @lucasferreiraestevam. Кстати, вы можете отформатировать этот код как исходный для лучшего чтения.
В любом случае я не увидел большой разницы в вашем примере. Но еще раз спасибо

Работайте со мной после повторного добавления всех библиотек для нового проекта. Спасибо всем

Моя проблема еще не устранена. Я все еще получаю ту же ошибку времени выполнения. Может кто-то помочь мне, пожалуйста.

@SAHITYASAI покажи свои 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 Согласно документации, вы должны переместить этот код

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 . Переместить в начало файла

И переформатируйте свой код, пожалуйста

такая же проблема здесь
`СБОЙ СТРОИТЬ через 3 с.

ошибка Не удалось установить приложение. Убедитесь, что у вас настроена среда разработки Android: https://facebook.github.io/react-native/docs/getting-started.html#android -development-environment.
Ошибка: команда не выполнена: приложение gradlew.bat: installDebug -PreactNativeDevServerPort = 8081

ОШИБКА: сбой при сборке за исключением.

  • Что пошло не так:
    Не удалось выполнить задачу ': app: validateSigningDebug '.

    Файл хранилища ключей 'E: \ React Native \ push notification \ response-native-onesignal \ examples \ RNOneSignal \ android \ app \ debug.keystore' не найден для подписи конфигурации 'debug'.

  • Пытаться:
    Запустите с параметром --stacktrace, чтобы получить трассировку стека. Запустите с параметром --info или --debug, чтобы получить больше результатов журнала. Запустите с --scan, чтобы получить полную информацию.

  • Получите дополнительную помощь на https://help.gradle.org

СТРОИТЕЛЬСТВО НЕ УДАЛОСЬ через 3 с.

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

У меня он работает с последним пакетом react-native-onesignal!

вот мой project/build.gradle

Screenshot 2019-10-04 at 8 01 09 PM

Вот мой файл project / app / build.gradle

Screenshot 2019-10-04 at 8 01 37 PM

ДЕЙСТВУЮЩИЕ ШАГИ ДЛЯ ЕГО ИСПОЛЬЗОВАНИЯ:

yarn add react-native-onesignal

тогда для ios
просто
cd ios && pod install

для андорида

просто

react-native run-android он автоматически связывает пакет

@waqaramjad Ваша проблема связана с подписью кода

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

@indapublic, так как же это

@waqaramjad Покажи свой android/app/build.gradle , signingConfigs

@indapublic вот android / app / build.gradle
`// Файл сборки верхнего уровня, в который вы можете добавить параметры конфигурации, общие для всех подпроектов / модулей.

buildscript {
ext {
buildToolsVersion = "28.0.3"
minSdkVersion = 16
compileSdkVersion = 28
targetSdkVersion = 28
supportLibVersion = "28.0.0"
}
репозитории {
Google()
jcenter ()
}
dependencies {
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 {
репозитории {
mavenLocal ()
maven {
// Все React Native (исходники JS, Obj-C, двоичные файлы Android) устанавливаются из npm
url ("$ rootDir /../ node_modules / response-native / android")
}
maven {
// Android JSC устанавливается из npm
url ("$ rootDir /../ node_modules / jsc-android / dist")
}

    google()
    jcenter()
}

}
`

@waqaramjad Какая у вас версия RN?

«0,60,5»

Вы обновили существующее приложение или создали новое?

Я просто клонирую существующий пример приложения, который находится в одном репозитории сигналов, и просто запускаю его

@waqaramjad Сначала скажи это :)

Во-первых: вы напечатали android/build.gradle , а не android/app/build.gradle

Во-вторых: вы должны создать отладочные и освободить хранилища ключей в соответствии с этим руководством , например

Кстати: я видел, что вы используете Windows, так что, вероятно, вам стоит использовать кое-что для запуска keytool, у меня нет опыта работы с Windows.

но зачем мне хранилище ключей, потому что я не хочу подписанный apk, я только хочу его протестировать

а вот код для android/app/build.gradle

`применить плагин:" com.android.application "

импорт com.android.build.OutputFile

/ **

  • Файл response.gradle регистрирует задачу для каждого варианта сборки (например, bundleDebugJsAndAssets
  • и bundleReleaseJsAndAssets).
  • В основном они вызывают react-native bundle с правильными аргументами во время сборки Android.
  • цикл. По умолчанию bundleDebugJsAndAssets пропускается, так как в режиме отладки / разработки мы предпочитаем загружать
  • бандл прямо с сервера разработки. Ниже вы можете увидеть все возможные конфигурации
  • и их значения по умолчанию. Если вы решили добавить блок конфигурации, обязательно добавьте его перед
  • apply from: "../../node_modules/react-native/react.gradle" строка.
    *
  • project.ext.react = [
  • // имя сгенерированного файла ресурсов, содержащего ваш пакет JS
  • bundleAssetName: "index.android.bundle",
    *
  • // файл записи для генерации пакета
  • entryFile: "index.android.js",
    *
  • // https://facebook.github.io/react-native/docs/performance#enable -the-ram-format
  • bundleCommand: "ram-bundle",
    *
  • // нужно ли связывать JS и активы в режиме отладки
  • bundleInDebug: ложь,
    *
  • // нужно ли связывать JS и активы в режиме выпуска
  • bundleInRelease: правда,
    *
  • // следует ли объединять JS и активы в другой вариант сборки (если настроен).
  • // См http://tools.android.com/tech-docs/new-build-system/user-guide#TOC -Build-Варианты
  • // Свойство конфигурации может быть в следующих форматах
  • // 'bundleIn $ {productFlavor} $ {buildType}'
  • // 'bundleIn $ {buildType}'
  • // bundleInFreeDebug: true,
  • // bundleInPaidRelease: true,
  • // bundleInBeta: true,
    *
  • // следует ли отключать режим разработки в пользовательских вариантах сборки (по умолчанию отключен только в выпуске)
  • // например: отключить режим разработки в промежуточном типе сборки (если настроен)
  • devDisabledInStaging: правда,
  • // Свойство конфигурации может быть в следующих форматах
  • // 'devDisabledIn $ {productFlavor} $ {buildType}'
  • // 'devDisabledIn $ {buildType}'
    *
  • // корень вашего проекта, то есть там, где находится "package.json"
  • корень: "../../",
    *
  • // куда поместить актив пакета JS в режим отладки
  • jsBundleDirDebug: "$ buildDir / intermediate / assets / debug",
    *
  • // куда поместить актив пакета JS в режим выпуска
  • jsBundleDirRelease: "$ buildDir / intermediate / assets / release",
    *
  • // куда разместить доступные ресурсы / ресурсы React Native, например те, которые вы используете через
  • // require ('./ image.png')), в режиме отладки
  • resourcesDirDebug: "$ buildDir / intermediate / res / merged / debug",
    *
  • // куда разместить доступные ресурсы / ресурсы React Native, например те, которые вы используете через
  • // require ('./ image.png')), в режиме выпуска
  • resourcesDirRelease: "$ buildDir / intermediate / res / merged / release",
    *
  • // по умолчанию задачи gradle пропускаются, если ни один из файлов JS или ресурсов не изменяется; это означает
  • // что мы не смотрим на файлы в android / или ios /, чтобы определить, подходят ли задачи до
  • // Дата; если у вас есть другие папки, которые вы хотите игнорировать по соображениям производительности (gradle
  • // индексирует все дерево), добавьте их сюда. В качестве альтернативы, если у вас есть файлы JS в android /
  • // например, вы можете удалить его отсюда.
  • inputExcludes: ["android / ", "ios / "],
    *
  • // переопределить, какой узел вызывается и с какими дополнительными аргументами
  • nodeExecutableAndArgs: ["узел"],
    *
  • // передаем упаковщику дополнительные аргументы
  • extraPackagerArgs: []
  • ]
    * /

project.ext.react = [
entryFile: "index.js",
enableHermes: false, // очистить и перестроить при изменении
]

подать заявку из: "../../node_modules/react-native/react.gradle"

/ **

  • Установите значение true, чтобы создать два отдельных APK вместо одного:

    • APK, который работает только на устройствах ARM


    • APK, который работает только на устройствах x86

  • Преимущество в том, что размер APK уменьшен примерно на 4 МБ.
  • Загрузите все APK в Play Store, и люди скачают
  • правильный, основанный на архитектуре ЦП устройства.
    * /
    def enableSeparateBuildPerCPUArchitecture = false

/ **

  • Запустите Proguard, чтобы сжать байт-код Java в сборках выпуска.
    * /
    def enableProguardInReleaseBuilds = false

/ **

  • Предпочтительный вариант сборки JavaScriptCore.
    *
  • Например, чтобы использовать международный вариант, вы можете использовать:
  • def jscFlavor = 'org.webkit:android-jsc-intl:+'
    *
  • Международный вариант включает библиотеку ICU i18n и необходимые данные.
  • позволяя использовать, например, Date.toLocaleString и String.localeCompare которые
  • давать правильные результаты при использовании с языками, отличными от en-US. Обратите внимание, что
  • этот вариант примерно на 6 МБ больше на архитектуру, чем по умолчанию.
    * /
    def jscFlavor = 'org. webkit: android-jsc : + '

/ **

  • Включать ли Гермес ВМ.
    *
  • Это должно быть установлено в project.ext.react и отражено здесь. Если не установлен
  • в project.ext.react JavaScript не будет компилироваться в байт-код Hermes.
  • и поэтому польза от использования Hermes резко снизится.
    * /
    def enableHermes = project.ext.react.get ("enableHermes", ложь);

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

}

dependencies {
реализация fileTree (dir: "libs", include: ["* .jar"])
реализация "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
}

}

// Выполните это один раз, чтобы иметь возможность запустить приложение с BUCK
// помещает все зависимости компиляции в папки libs для использования BUCK
задача copyDownloadableDepsToLibs (type: Copy) {
из файла configurations.compile
в библиотеки
}

подать заявку из: файла ("../../ node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle (проект)
`

Но вы же хотите установить его на свое устройство, не так ли?
Конфигурация подписи здесь

@indapublic, спасибо, мое приложение сейчас успешно строится. Но мне нужно отправлять уведомление только тем пользователям, которые неактивны в течение 15 непрерывных дней, только программно, без использования панели уведомлений oneignal. Кто-нибудь может мне помочь.

Я думаю, вам следует создать для этого новый выпуск, не так ли?

@SAHITYASAI ,
Обратитесь в наш канал поддержки на OneSignal.com для получения дополнительной помощи. Ваше здоровье

Была ли эта страница полезной?
0 / 5 - 0 рейтинги