React-native-onesignal: AndroidでRN0.60とクラッシュする

作成日 2019年09月23日  ·  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:VMをシャットダウンしています
09-23 17:06:37.901 8388 8388 E Androidランタイム:致命的な例外:メイン
09-23 17:06:37.901 8388 8388 E AndroidRuntime:プロセス: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:at 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"],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:at java.lang.Class.classForName(Native Method)
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:at 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

最も参考になるコメント

反応ネイティブ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
これは、アプリがクラッシュするたびに発生するランタイムエラーです。

反応ネイティブ0.60.5を使用して同じエラー[email protected]

手順1.1でメモしたapp/build.gradleの先頭にonesignal-gradle-pluginを追加したことを確認できますか?
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

インストールガイドの説明に従ってすべてを追加しました。 しかし、行適用プラグイン: 'com.onesignal.androidsdk.onesignal-gradle-plugin'により、アプリのビルドがこのエラーで失敗します

  • 何が問題だったのか:ルートプロジェクトの構成で問題が発生しました ''。 >タイプorg.gradle.api.Projectのルートプロジェクト ''の不明なプロパティ 'android'を取得できませんでした。 "

グーグルで解決策が見つからなかったので、その行にコメントしました。
また、onesignal RESTAPIを使用してスケジュールされた通知を送信する方法に関するサンプルコードを誰かに教えてもらえますか。 前もって感謝します。

手順1.1でメモしたapp/build.gradleの先頭にonesignal-gradle-pluginを追加したことを確認できますか?
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プラグインはそこにのみ配置され、残りのクラスパス、maven url、gradleプラグインのリポジトリurlはプロジェクトbuild.gradleに配置されます。

@indapublic私はそれを解決しました! 同じバグがありました! これを投稿していただきありがとうございます。 あなたがまだ探しているなら、私は私に連絡するのを手伝うために開いています!

こんにちは、
プラグインの最新バージョン(3.4.1)にアップグレードして、再試行してください。

@SAHITYASAIこちらをご覧ください

@indapublic私はそれを解決しました! 同じバグがありました! これを投稿していただきありがとうございます。 あなたがまだ探しているなら、私は私に連絡するのを手伝うために開いています!

ありがとう、解決しました!

プロジェクトフォルダ内の「app / build.gradle」は、これをファイルの先頭に追加しました。

buildscript {
リポジトリ{
maven {url'https ://plugins.gradle.org/m2/ '} // Gradleプラグインポータル
}
依存関係{
クラスパス '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プラグインポータル
}
依存関係{
クラスパス '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をインポートします

/ **

  • react.gradleファイルは、ビルドバリアントごとにタスクを登録します(例:bundleDebugJsAndAssets
  • およびbundleReleaseJsAndAssets)。
  • これらは基本的に、Androidビルド中に正しい引数を使用してreact-native bundleを呼び出します
  • サイクル。 デフォルトでは、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:false、
    *
  • //リリースモードでJSとアセットをバンドルするかどうか
  • bundleInRelease:true、
    *
  • // JSとアセットを別のビルドバリアントにバンドルするかどうか(構成されている場合)。
  • // http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variantsを参照してください
  • //構成プロパティは次の形式にすることができます
  • // 'bundleIn $ {productFlavor} $ {buildType}'
  • // 'bundleIn $ {buildType}'
  • // bundleInFreeDebug:true、
  • // bundleInPaidRelease:true、
  • // bundleInBeta:true、
    *
  • //カスタムビルドバリアントで開発モードを無効にするかどうか(デフォルトではリリースでのみ無効になります)
  • //例:ステージングビルドタイプで開発モードを無効にする(構成されている場合)
  • devDisabledInStaging:true、
  • //構成プロパティは次の形式にすることができます
  • // 'devDisabledIn $ {productFlavor} $ {buildType}'
  • // 'devDisabledIn $ {buildType}'
    *
  • //プロジェクトのルート、つまり「package.json」が存在する場所
  • 根: "../../"、
    *
  • // JSバンドルアセットをデバッグモードにする場所
  • jsBundleDirDebug: "$ buildDir / Intermediates / assets / debug"、
    *
  • // JSバンドルアセットをリリースモードにする場所
  • jsBundleDirRelease: "$ buildDir / Intermediates / assets / release"、
    *
  • //ドローアブルリソースを配置する場所/ React Nativeアセット(例:経由で使用するアセット)
  • // require( './ image.png'))、デバッグモード
  • resourcesDirDebug: "$ buildDir / Intermediates / res / merged / debug"、
    *
  • //ドローアブルリソースを配置する場所/ React Nativeアセット(例:経由で使用するアセット)
  • // require( './ image.png'))、リリースモード
  • resourcesDirRelease: "$ buildDir / Intermediates / res / merged / release"、
    *
  • //デフォルトでは、JSファイルまたはアセットが変更されていない場合、gradleタスクはスキップされます。 これの意味は
  • //タスクが最大であるかどうかを判断するためにandroid /またはios /のファイルを調べないこと
  • // 日にち; パフォーマンス上の理由で無視したい他のフォルダがある場合(gradle
  • //ツリー全体にインデックスを付けます)、ここに追加します。 または、android /にJSファイルがある場合
  • //たとえば、ここから削除したい場合があります。
  • inputExcludes:["android / "、 "ios / "]、
    *
  • //呼び出されるノードと追加の引数をオーバーライドします
  • nodeExecutableAndArgs:["node"]、
    *
  • //パッケージャーに追加の引数を提供します
  • extraPackagerArgs:[]
  • ]
    * /

project.ext.react = [
entryFile: "index.js"、
enableHermes:false、//変更する場合はクリーンアップして再構築する
]

適用元: "../../ node_modules / react-native / react.gradle"

/ **

  • これをtrueに設定すると、1つではなく2つの別々のAPKが作成されます。

    • ARMデバイスでのみ機能するAPK


    • x86デバイスでのみ機能するAPK

  • 利点は、APKのサイズが約4MB削減されることです。
  • すべてのAPKをPlayストアにアップロードすると、ユーザーはダウンロードします
  • デバイスのCPUアーキテクチャに基づいた正しいもの。
    * /
    def enableSeparateBuildPerCPUArchitecture = false

/ **

  • Proguardを実行して、リリースビルドでJavaバイトコードを縮小します。
    * /
    def enableProguardInReleaseBuilds = false

/ **

  • JavaScriptCoreの推奨ビルドフレーバー。
    *
  • たとえば、国際バリアントを使用するには、次を使用できます。
  • def jscFlavor = 'org.webkit:android-jsc-intl:+'
    *
  • 国際版には、ICUI18nライブラリと必要なデータが含まれています
  • たとえばDate.toLocaleStringString.localeCompareを使用できるようにする
  • en-US以外のロケールで使用すると、正しい結果が得られます。 ご了承ください
  • このバリアントは、アーキテクチャごとにデフォルトよりも約6MiB大きくなります。
    * /
    def jscFlavor = 'org。 webkit:android-jsc :+ '

/ **

  • HermesVMを有効にするかどうか。
    *
  • これはproject.ext.reactで設定し、ここでミラーリングする必要があります。 設定されていない場合
  • project.ext.reactでは、JavaScriptはHermesバイトコードにコンパイルされません
  • したがって、エルメスを使用する利点は大幅に減少します。
    * /
    def enableHermes = project.ext.react.get( "enableHermes"、false);

アンドロイド{
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'
}

}

依存関係{
実装fileTree(dir: "libs"、include:["* .jar"])
実装 "com.facebook。react :react-native :+" // 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
}

}

//これを1回実行すると、BUCKでアプリケーションを実行できるようになります
//すべてのコンパイル依存関係をBUCKが使用できるようにフォルダライブラリに配置します
タスクcopyDownloadableDepsToLibs(タイプ:コピー){
configuration.compileから
'libs'に
}

適用元:file( "../../ node_modules / @ react-native-community / cli-platform-android / native_modules.gradle"); applyNativeModulesAppBuildGradle(project)

ありがとう、@ 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 app:installDebug -PreactNativeDevServerPort = 8081

失敗:ビルドは例外で失敗しました。

  • 何が悪かったのか:
    タスク ': app:validateSigningDebug 'の実行に失敗しました。

    キーストアファイル「E:\ ReactNative \ pushnotification \ react-native-onesignal \ examples \ RNOneSignal \ android \ app \ debug.keystore」が設定に署名するために見つかりません「デバッグ」。

  • 試す:
    --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

andorid用

単に

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.gradlesigningConfigsセクションを表示する

@indapublicはandroid / app
`//すべてのサブプロジェクト/モジュールに共通の構成オプションを追加できるトップレベルのビルドファイル。

buildscript {
ext {
buildToolsVersion = "28.0.3"
minSdkVersion = 16
compileSdkVersion = 28
targetSdkVersion = 28
supportLibVersion = "28.0.0"
}
リポジトリ{
グーグル()
jcenter()
}
依存関係{
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 {
//すべてのReactNative(JS、Obj-Cソース、Androidバイナリ)はnpmからインストールされます
url( "$ rootDir /../ node_modules / react-native / android")
}
Maven {
// AndroidJSCはnpmからインストールされます
url( "$ rootDir /../ node_modules / jsc-android / dist")
}

    google()
    jcenter()
}

}
`

@waqaramjadあなたが持っているRNバージョンは何ですか?

「0.60.5」

既存のアプリを更新しましたか、それとも新しいアプリを作成しましたか?

1つのシグナルリポジトリにある既存のアプリの例を複製して起動するだけです

@waqaramjad最初にこれを言うべきです:)

最初に: android/build.gradleではなくandroid/app/build.gradle android/build.gradleを印刷しました

次に、このマニュアルに関するデバッグキーストアとリリースキーストアを生成する必要があります。たとえば、

ところで:あなたはWindowsを使用しているのを見たので、おそらくキーツールの起動にいくつかのものを使用する必要があります。私はWindowsの経験がありません。

しかし、署名されたapkが必要ないので、なぜキーストアが必要なのですか、それをテストしたいだけです

これがandroid/app/build.gradleのコードです

`プラグインを適用:" com.android.application "

com.android.build.OutputFileをインポートします

/ **

  • react.gradleファイルは、ビルドバリアントごとにタスクを登録します(例:bundleDebugJsAndAssets
  • およびbundleReleaseJsAndAssets)。
  • これらは基本的に、Androidビルド中に正しい引数を使用してreact-native bundleを呼び出します
  • サイクル。 デフォルトでは、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:false、
    *
  • //リリースモードでJSとアセットをバンドルするかどうか
  • bundleInRelease:true、
    *
  • // JSとアセットを別のビルドバリアントにバンドルするかどうか(構成されている場合)。
  • // http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variantsを参照してください
  • //構成プロパティは次の形式にすることができます
  • // 'bundleIn $ {productFlavor} $ {buildType}'
  • // 'bundleIn $ {buildType}'
  • // bundleInFreeDebug:true、
  • // bundleInPaidRelease:true、
  • // bundleInBeta:true、
    *
  • //カスタムビルドバリアントで開発モードを無効にするかどうか(デフォルトではリリースでのみ無効になります)
  • //例:ステージングビルドタイプで開発モードを無効にする(構成されている場合)
  • devDisabledInStaging:true、
  • //構成プロパティは次の形式にすることができます
  • // 'devDisabledIn $ {productFlavor} $ {buildType}'
  • // 'devDisabledIn $ {buildType}'
    *
  • //プロジェクトのルート、つまり「package.json」が存在する場所
  • 根: "../../"、
    *
  • // JSバンドルアセットをデバッグモードにする場所
  • jsBundleDirDebug: "$ buildDir / Intermediates / assets / debug"、
    *
  • // JSバンドルアセットをリリースモードにする場所
  • jsBundleDirRelease: "$ buildDir / Intermediates / assets / release"、
    *
  • //ドローアブルリソースを配置する場所/ React Nativeアセット(例:経由で使用するアセット)
  • // require( './ image.png'))、デバッグモード
  • resourcesDirDebug: "$ buildDir / Intermediates / res / merged / debug"、
    *
  • //ドローアブルリソースを配置する場所/ React Nativeアセット(例:経由で使用するアセット)
  • // require( './ image.png'))、リリースモード
  • resourcesDirRelease: "$ buildDir / Intermediates / res / merged / release"、
    *
  • //デフォルトでは、JSファイルまたはアセットが変更されていない場合、gradleタスクはスキップされます。 これの意味は
  • //タスクが最大であるかどうかを判断するためにandroid /またはios /のファイルを調べないこと
  • // 日にち; パフォーマンス上の理由で無視したい他のフォルダがある場合(gradle
  • //ツリー全体にインデックスを付けます)、ここに追加します。 または、android /にJSファイルがある場合
  • //たとえば、ここから削除したい場合があります。
  • inputExcludes:["android / "、 "ios / "]、
    *
  • //呼び出されるノードと追加の引数をオーバーライドします
  • nodeExecutableAndArgs:["node"]、
    *
  • //パッケージャーに追加の引数を提供します
  • extraPackagerArgs:[]
  • ]
    * /

project.ext.react = [
entryFile: "index.js"、
enableHermes:false、//変更する場合はクリーンアップして再構築する
]

適用元: "../../ node_modules / react-native / react.gradle"

/ **

  • これをtrueに設定すると、1つではなく2つの別々のAPKが作成されます。

    • ARMデバイスでのみ機能するAPK


    • x86デバイスでのみ機能するAPK

  • 利点は、APKのサイズが約4MB削減されることです。
  • すべてのAPKをPlayストアにアップロードすると、ユーザーはダウンロードします
  • デバイスのCPUアーキテクチャに基づいた正しいもの。
    * /
    def enableSeparateBuildPerCPUArchitecture = false

/ **

  • Proguardを実行して、リリースビルドでJavaバイトコードを縮小します。
    * /
    def enableProguardInReleaseBuilds = false

/ **

  • JavaScriptCoreの推奨ビルドフレーバー。
    *
  • たとえば、国際バリアントを使用するには、次を使用できます。
  • def jscFlavor = 'org.webkit:android-jsc-intl:+'
    *
  • 国際版には、ICUI18nライブラリと必要なデータが含まれています
  • たとえばDate.toLocaleStringString.localeCompareを使用できるようにする
  • en-US以外のロケールで使用すると、正しい結果が得られます。 ご了承ください
  • このバリアントは、アーキテクチャごとにデフォルトよりも約6MiB大きくなります。
    * /
    def jscFlavor = 'org。 webkit:android-jsc :+ '

/ **

  • HermesVMを有効にするかどうか。
    *
  • これはproject.ext.reactで設定し、ここでミラーリングする必要があります。 設定されていない場合
  • project.ext.reactでは、JavaScriptはHermesバイトコードにコンパイルされません
  • したがって、エルメスを使用する利点は大幅に減少します。
    * /
    def enableHermes = project.ext.react.get( "enableHermes"、false);

アンドロイド{
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'
}

}

依存関係{
実装fileTree(dir: "libs"、include:["* .jar"])
実装 "com.facebook。react :react-native :+" // 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
}

}

//これを1回実行すると、BUCKでアプリケーションを実行できるようになります
//すべてのコンパイル依存関係をBUCKが使用できるようにフォルダライブラリに配置します
タスクcopyDownloadableDepsToLibs(タイプ:コピー){
configuration.compileから
'libs'に
}

適用元:file( "../../ node_modules / @ react-native-community / cli-platform-android / native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
`

しかし、あなたはそれをあなたのデバイスにインストールしたいですよね?
サイン設定はこちら

@indapublicありがとうございます。私のアプリは正常にビルドされています。 ただし、onesignal通知ダッシュボードを使用せずに、プログラムで15日間連続して非アクティブになっているユーザーにのみ通知を送信する必要があります。 誰か助けてくれませんか。

このために新しい問題を作成する必要があると思いますね。

@SAHITYASAI
さらにサポートが必要な場合は、OneSignal.comのサポートチャネルにお問い合わせください。 乾杯

このページは役に立ちましたか?
0 / 5 - 0 評価