React-native-onesignal: تحطم مع RN0.60 على أي Android

تم إنشاؤها على ٢٣ سبتمبر ٢٠١٩  ·  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 Android وقت التشغيل: إيقاف تشغيل جهاز VM
09-23 17: 06: 37.901 8388 8388 E Android وقت التشغيل: استثناء قاتل: رئيسي
09-23 17: 06: 37.901 8388 8388 E Android وقت التشغيل: العملية: com.macroactive ، PID: 8388
09-23 17: 06: 37.901 8388 8388 E Android وقت التشغيل: java.lang.NoClassDefFoundError: حل فشل: Lcom / google / android / gms / common / internal / zzbq؛
09-23 17: 06: 37.901 8388 8388 E Android وقت التشغيل: في com.google.firebase.provider.FirebaseInitProvider.attachInfo (مصدر غير معروف)
09-23 17: 06: 37.901 8388 8388 E Android وقت التشغيل: في android.app.ActivityThread.installProvider (ActivityThread.java:5153)
09-23 17: 06: 37.901 8388 8388 E Android وقت التشغيل: في android.app.ActivityThread.installContentProviders (ActivityThread.java:4748)
09-23 17: 06: 37.901 8388 8388 E Android وقت التشغيل: في android.app.ActivityThread.handleBindApplication (ActivityThread.java:4688)
09-23 17: 06: 37.901 8388 8388 E Android وقت التشغيل: في android.app.ActivityThread.-wrap1 (ActivityThread.java)
09-23 17: 06: 37.901 8388 8388 E Android وقت التشغيل: في android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1405)
09-23 17: 06: 37.901 8388 8388 E Android وقت التشغيل: على android.os.Handler.dispatchMessage (Handler.java:102)
09-23 17: 06: 37.901 8388 8388 E Android وقت التشغيل: على android.os.Looper.loop (Looper.java:148)
09-23 17: 06: 37.901 8388 8388 E Android وقت التشغيل: في android.app.ActivityThread.main (ActivityThread.java:5417)
09-23 17: 06: 37.901 8388 8388 E Android وقت التشغيل: في java.lang.reflect.Method.invoke (الطريقة الأصلية)
09-23 17: 06: 37.901 8388 8388 E Android وقت التشغيل: على com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726)
09-23 17: 06: 37.901 8388 8388 E Android وقت التشغيل: على com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616)
09-23 17: 06: 37.901 8388 8388 E Android وقت التشغيل: السبب: java.lang.ClassNotFoundException: لم يتم العثور على الفئة "com.google.android.gms.common.internal.zzbq" في المسار: DexPathList [[ملف مضغوط "/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 Android وقت التشغيل: في dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:56)
09-23 17: 06: 37.901 8388 8388 E Android وقت التشغيل: في java.lang.ClassLoader.loadClass (ClassLoader.java:511)
09-23 17: 06: 37.901 8388 8388 E Android وقت التشغيل: في java.lang.ClassLoader.loadClass (ClassLoader.java:469)
09-23 17: 06: 37.901 8388 8388 E Android وقت التشغيل: ... 12 أخرى
09-23 17: 06: 37.901 8388 8388 E Android وقت التشغيل: تم الإلغاء: java.lang.ClassNotFoundException: com.google.android.gms.common.internal.zzbq
09-23 17: 06: 37.901 8388 8388 E Android وقت التشغيل: في java.lang.Class.classForName (الطريقة الأصلية)
09-23 17: 06: 37.901 8388 8388 E Android وقت التشغيل: في java.lang.BootClassLoader.findClass (ClassLoader.java:781)
09-23 17: 06: 37.901 8388 8388 E Android وقت التشغيل: في java.lang.BootClassLoader.loadClass (ClassLoader.java:841)
09-23 17: 06: 37.901 8388 8388 E Android وقت التشغيل: في java.lang.ClassLoader.loadClass (ClassLoader.java:504)
09-23 17: 06: 37.901 8388 8388 E Android وقت التشغيل: ... 13 أخرى
09-23 17: 06: 37.901 8388 8388 E Android وقت التشغيل: بسبب: 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 ، رد فعل أصلي ، إشارة واحدة 3.3.3).

SAHITYASAI هل يمكنك إظهار adb logcat ؟

Screenshot_2019-09-22-17-55-21-844_com miui bugreport
هذا هو خطأ وقت التشغيل الذي يحدث عندما يتعطل التطبيق.

نفس الخطأ في تفاعل-أصلي 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"

للإشارة الأصلية المتفاعلة 0.59 والإشارة الأصلية المتفاعلة: 3.2.12

لقد أضفت كل شيء كما هو موضح في دليل التثبيت. لكن السطر يطبق المكون الإضافي: 'com.onesignal.androidsdk.onesignal-gradle-plugin' يتسبب في فشل إنشاء تطبيقي بسبب هذا الخطأ

  • الخطأ الذي حدث: حدثت مشكلة أثناء تكوين مشروع الجذر ''. > تعذر الحصول على الخاصية غير المعروفة "android" لمشروع الجذر "" من النوع org.gradle.api.Project. "

لذلك علقت على هذا السطر لأنني لم أجد أي حل على google.
يمكن لأي شخص أيضًا إعطائي أي مثال على رمز حول كيفية إرسال الإشعارات المجدولة باستخدام واجهة برمجة تطبيقات oneSignal REST. شكرا لك مقدما.

هل يمكنك التأكد من إضافة 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 ، فالمكوِّن الإضافي للتطبيق ينتقل فقط هناك وبقية مسار الفصل ، و url الخاص بـ maven url و gradle plugin repo url ينتقل إلى المشروع build.gradle

indapublic لقد حللت للتو! كان لدي نفس الخطأ! أشكركم على نشر هذا.! إذا كنت لا تزال تبحث فأنا منفتح للمساعدة في التواصل معي!

أهلا،
يرجى الترقية إلى أحدث إصدار من البرنامج المساعد (3.4.1) والمحاولة مرة أخرى.

SAHITYASAI ألق نظرة هنا

indapublic لقد حللت للتو! كان لدي نفس الخطأ! أشكركم على نشر هذا.! إذا كنت لا تزال تبحث فأنا منفتح للمساعدة في التواصل معي!

شكرا حل !!

أضاف Inside de Project Folder "app / build.gradle" هذا أعلى الملف.

بناء {
مستودعات {
maven {url ' https://plugins.gradle.org/m2/ '} // Gradle Plugin Portal
}
التبعيات {
classpath 'gradle.plugin.com. oneSignal: one-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

بناء {
مستودعات {
maven {url ' https://plugins.gradle.org/m2/ '} // Gradle Plugin Portal
}
التبعيات {
classpath 'gradle.plugin.com. oneSignal: one-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).
  • يستدعي هؤلاء أساسًا react-native bundle مع الوسيطات الصحيحة أثناء إصدار Android
  • دورة. بشكل افتراضي ، يتم تخطي bundleDebugJsAndAssets ، كما هو الحال في وضع التصحيح / dev ، نفضل تحميل
  • حزمة مباشرة من خادم التطوير. أدناه يمكنك رؤية جميع التكوينات الممكنة
  • وافتراضاتهم. إذا قررت إضافة كتلة تكوين ، فتأكد من إضافتها قبل ملف
  • apply from: "../../node_modules/react-native/react.gradle" .
    *
  • project.ext.react = [
  • // اسم ملف الأصل الذي تم إنشاؤه والذي يحتوي على حزمة JS الخاصة بك
  • bundleAssetName: "index.android.bundle" ،
    *
  • // ملف الإدخال لتوليد الحزمة
  • ملف الإدخال: "index.android.js" ،
    *
  • // https://facebook.github.io/react-native/docs/performance#enable -the-ram-format
  • bundleCommand: "حزمة ذاكرة الوصول العشوائي" ،
    *
  • // ما إذا كان سيتم تجميع JS والأصول في وضع التصحيح
  • bundleInDebug: خطأ ،
    *
  • // ما إذا كان سيتم تجميع JS والأصول في وضع الإصدار
  • bundleInRelease: صحيح ،
    *
  • // ما إذا كان سيتم تجميع JS والأصول في متغير بناء آخر (إذا تم تكوينه).
  • // راجع http://tools.android.com/tech-docs/new-build-system/user-guide#TOC -Build-Variants
  • // يمكن أن تكون خاصية التكوين بالتنسيقات التالية
  • // 'bundleIn $ {productFlavor} $ {buildType}'
  • // 'bundleIn $ {buildType}'
  • // bundleInFreeDebug: صحيح ،
  • // bundleInPaidRelease: صحيح ،
  • // bundleInBeta: صحيح ،
    *
  • // ما إذا كان سيتم تعطيل وضع dev في متغيرات الإنشاء المخصصة (افتراضيًا يتم تعطيله فقط في الإصدار)
  • // على سبيل المثال: لتعطيل وضع dev في نوع البناء المرحلي (إذا تم تكوينه)
  • devDisabledInStaging: صحيح ،
  • // يمكن أن تكون خاصية التكوين بالتنسيقات التالية
  • // 'devDisabledIn $ {productFlavor} $ {buildType}'
  • // 'devDisabledIn $ {buildType}'
    *
  • // جذر مشروعك ، أي أين يعيش "package.json"
  • جذر: "../../"،
    *
  • // أين يتم وضع أصل حزمة JS في وضع التصحيح
  • jsBundleDirDebug: "$ buildDir / وسيط / أصول / تصحيح"،
    *
  • // أين يتم وضع أصل حزمة JS في وضع الإصدار
  • jsBundleDirRelease: "$ buildDir / وسيطة / أصول / إطلاق"،
    *
  • // أين تضع الموارد القابلة للرسم / أصول React Native ، مثل تلك التي تستخدمها عبر
  • // تتطلب ('./ image.png')) ، في وضع التصحيح
  • ResourcesDirDebug: "$ buildDir / intermediates / res / merged / debug" ،
    *
  • // أين تضع الموارد القابلة للرسم / أصول React Native ، مثل تلك التي تستخدمها عبر
  • // تتطلب ('./ image.png')) ، في وضع الإصدار
  • ResourcesDirRelease: "$ buildDir / intermediates / res / merged / release" ،
    *
  • // افتراضيًا يتم تخطي مهام gradle إذا لم يتغير أي من ملفات أو أصول JS ؛ هذا يعنى
  • // أننا لا ننظر إلى الملفات في android / أو ios / لتحديد ما إذا كانت المهام جاهزة
  • // تاريخ؛ إذا كان لديك أي مجلدات أخرى تريد تجاهلها لأسباب تتعلق بالأداء (gradle
  • // يفهرس الشجرة بأكملها) ، أضفهم هنا. بدلاً من ذلك ، إذا كان لديك ملفات JS في android /
  • // على سبيل المثال ، قد ترغب في إزالته من هنا.
  • الإدخال باستثناء: ["android / " ، "ios / "] ،
    *
  • // تجاوز العقدة التي يتم استدعاؤها وما هي الوسيطات الإضافية
  • nodeExecutableAndArgs: ["عقدة"]،
    *
  • // توفير حجج إضافية للرازم
  • extraPackagerArgs: []
  • ]
    * /

project.ext.react = [
ملف الإدخال: "index.js" ،
enableHermes: خطأ ، // نظيف وأعد البناء إذا تغير
]

تطبيق من: "../../node_modules/react-native/react.gradle"

/ **

  • اضبط هذا على صواب لإنشاء ملفي APK منفصلين بدلاً من ملف واحد:

    • ملف APK يعمل فقط على أجهزة ARM


    • ملف APK يعمل فقط على أجهزة x86

  • الميزة هي أن حجم ملف APK يتم تقليله بنحو 4 ميجا بايت.
  • قم بتحميل جميع ملفات APK إلى متجر Play وسيقوم الأشخاص بتنزيلها
  • الطريقة الصحيحة بناءً على بنية وحدة المعالجة المركزية الخاصة بأجهزتهم.
    * /
    def enableSeparateBuildPerCPUArchitecture = خطأ

/ **

  • قم بتشغيل Proguard لتقليص Java bytecode في إصدارات الإصدارات.
    * /
    def enableProguardInReleaseBuilds = خطأ

/ **

  • نكهة البناء المفضلة لـ JavaScriptCore.
    *
  • على سبيل المثال ، لاستخدام المتغير الدولي ، يمكنك استخدام:
  • def jscFlavor = 'org.webkit:android-jsc-intl:+'
    *
  • يتضمن البديل الدولي مكتبة ICU i18n والبيانات الضرورية
  • السماح باستخدام مثل Date.toLocaleString و String.localeCompare ذلك
  • تعطي نتائج صحيحة عند الاستخدام مع لغات أخرى غير en-US. لاحظ أن
  • هذا المتغير هو حوالي 6 ميغا بايت أكبر لكل معمارية من الافتراضي.
    * /
    def jscFlavor = 'org. webkit: android-jsc : + '

/ **

  • ما إذا كان سيتم تمكين Hermes VM.
    *
  • يجب تعيين هذا على project.ext.react وعكسه هنا. إذا لم يتم تعيينه
  • في project.ext.react ، لن يتم تحويل JavaScript إلى Hermes Bytecode
  • وبالتالي فإن فوائد استخدام Hermes ستنخفض بشكل حاد.
    * /
    def enableHermes = project.ext.react.get ("enableHermes"، خطأ) ؛

ذكري المظهر {
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" ، تشمل: ["* .jar"])
تنفيذ "com.facebook. رد فعل: رد فعل أصلي : +" // من 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
}

}

// قم بتشغيل هذا مرة واحدة لتتمكن من تشغيل التطبيق باستخدام BUCK
// يضع جميع تبعيات الترجمة في libs المجلد ليستخدمها BUCK
مهمة copyDownloadableDepsToLibs (نوع: نسخ) {
من configurations.compile
في 'libs'
}

التقديم من: file ("../../ node_modules/@react-native-community/cli-platform-android/native_modules.gradle") ؛ applicationNativeModulesAppBuildGradle (مشروع)

شكرًا ،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: validateSigningDebug '.

    لم يتم العثور على ملف Keystore "E: \ React Native \ push الإعلام \ رد فعل-native-oneignal \ أمثلة \ 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)`

لقد عملت مع أحدث حزمة إشارات تفاعلية أصلية!

هنا هو بلدي project/build.gradle

Screenshot 2019-10-04 at 8 01 09 PM

هنا ملف المشروع / التطبيق / build.gradle الخاص بي

Screenshot 2019-10-04 at 8 01 37 PM

الخطوات التي اتخذت لاستخدامها هي

yarn add react-native-onesignal

ثم لدائرة الرقابة الداخلية
ببساطة
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
"// ملف بناء المستوى الأعلى حيث يمكنك إضافة خيارات التكوين المشتركة لجميع المشاريع الفرعية / الوحدات النمطية.

بناء {
تحويلة {
buildToolsVersion = "28.0.3"
الإصدار minSdk = 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
}

}

جميع المشاريع {
مستودعات {
mavenLocal ()
مخضرم {
يتم تثبيت // All of React Native (JS ، ومصادر Obj-C ، وثنائيات Android) من npm
url ("$ rootDir /../ node_modules / رد فعل أصلي / android")
}
مخضرم {
// يتم تثبيت 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 ، لذا ربما يجب عليك استخدام بعض الأشياء لتشغيل أداة المفاتيح ، ليس لدي خبرة مع Windows.

ولكن لماذا أحتاج إلى keystore لأنني لا أريد توقيع apk ، أريد فقط اختباره

بينما هنا رمز android/app/build.gradle

تطبيق البرنامج المساعد: "com.android.application"

استيراد com.android.build.OutputFile

/ **

  • يسجل ملف React.gradle مهمة لكل متغير بناء (على سبيل المثال bundleDebugJsAndAssets
  • و bundleReleaseJsAndAssets).
  • يستدعي هؤلاء أساسًا react-native bundle مع الوسيطات الصحيحة أثناء إصدار Android
  • دورة. بشكل افتراضي ، يتم تخطي bundleDebugJsAndAssets ، كما هو الحال في وضع التصحيح / dev ، نفضل تحميل
  • حزمة مباشرة من خادم التطوير. أدناه يمكنك رؤية جميع التكوينات الممكنة
  • وافتراضاتهم. إذا قررت إضافة كتلة تكوين ، فتأكد من إضافتها قبل ملف
  • apply from: "../../node_modules/react-native/react.gradle" .
    *
  • project.ext.react = [
  • // اسم ملف الأصل الذي تم إنشاؤه والذي يحتوي على حزمة JS الخاصة بك
  • bundleAssetName: "index.android.bundle" ،
    *
  • // ملف الإدخال لتوليد الحزمة
  • ملف الإدخال: "index.android.js" ،
    *
  • // https://facebook.github.io/react-native/docs/performance#enable -the-ram-format
  • bundleCommand: "حزمة ذاكرة الوصول العشوائي" ،
    *
  • // ما إذا كان سيتم تجميع JS والأصول في وضع التصحيح
  • bundleInDebug: خطأ ،
    *
  • // ما إذا كان سيتم تجميع JS والأصول في وضع الإصدار
  • bundleInRelease: صحيح ،
    *
  • // ما إذا كان سيتم تجميع JS والأصول في متغير بناء آخر (إذا تم تكوينه).
  • // راجع http://tools.android.com/tech-docs/new-build-system/user-guide#TOC -Build-Variants
  • // يمكن أن تكون خاصية التكوين بالتنسيقات التالية
  • // 'bundleIn $ {productFlavor} $ {buildType}'
  • // 'bundleIn $ {buildType}'
  • // bundleInFreeDebug: صحيح ،
  • // bundleInPaidRelease: صحيح ،
  • // bundleInBeta: صحيح ،
    *
  • // ما إذا كان سيتم تعطيل وضع dev في متغيرات الإنشاء المخصصة (افتراضيًا يتم تعطيله فقط في الإصدار)
  • // على سبيل المثال: لتعطيل وضع dev في نوع البناء المرحلي (إذا تم تكوينه)
  • devDisabledInStaging: صحيح ،
  • // يمكن أن تكون خاصية التكوين بالتنسيقات التالية
  • // 'devDisabledIn $ {productFlavor} $ {buildType}'
  • // 'devDisabledIn $ {buildType}'
    *
  • // جذر مشروعك ، أي أين يعيش "package.json"
  • جذر: "../../"،
    *
  • // أين يتم وضع أصل حزمة JS في وضع التصحيح
  • jsBundleDirDebug: "$ buildDir / وسيط / أصول / تصحيح"،
    *
  • // أين يتم وضع أصل حزمة JS في وضع الإصدار
  • jsBundleDirRelease: "$ buildDir / وسيطة / أصول / إطلاق"،
    *
  • // أين تضع الموارد القابلة للرسم / أصول React Native ، مثل تلك التي تستخدمها عبر
  • // تتطلب ('./ image.png')) ، في وضع التصحيح
  • ResourcesDirDebug: "$ buildDir / intermediates / res / merged / debug" ،
    *
  • // أين تضع الموارد القابلة للرسم / أصول React Native ، مثل تلك التي تستخدمها عبر
  • // تتطلب ('./ image.png')) ، في وضع الإصدار
  • ResourcesDirRelease: "$ buildDir / intermediates / res / merged / release" ،
    *
  • // افتراضيًا يتم تخطي مهام gradle إذا لم يتغير أي من ملفات أو أصول JS ؛ هذا يعنى
  • // أننا لا ننظر إلى الملفات في android / أو ios / لتحديد ما إذا كانت المهام جاهزة
  • // تاريخ؛ إذا كان لديك أي مجلدات أخرى تريد تجاهلها لأسباب تتعلق بالأداء (gradle
  • // يفهرس الشجرة بأكملها) ، أضفهم هنا. بدلاً من ذلك ، إذا كان لديك ملفات JS في android /
  • // على سبيل المثال ، قد ترغب في إزالته من هنا.
  • الإدخال باستثناء: ["android / " ، "ios / "] ،
    *
  • // تجاوز العقدة التي يتم استدعاؤها وما هي الوسيطات الإضافية
  • nodeExecutableAndArgs: ["عقدة"]،
    *
  • // توفير حجج إضافية للرازم
  • extraPackagerArgs: []
  • ]
    * /

project.ext.react = [
ملف الإدخال: "index.js" ،
enableHermes: خطأ ، // نظيف وأعد البناء إذا تغير
]

تطبيق من: "../../node_modules/react-native/react.gradle"

/ **

  • اضبط هذا على صواب لإنشاء ملفي APK منفصلين بدلاً من ملف واحد:

    • ملف APK يعمل فقط على أجهزة ARM


    • ملف APK يعمل فقط على أجهزة x86

  • الميزة هي أن حجم ملف APK يتم تقليله بنحو 4 ميجا بايت.
  • قم بتحميل جميع ملفات APK إلى متجر Play وسيقوم الأشخاص بتنزيلها
  • الطريقة الصحيحة بناءً على بنية وحدة المعالجة المركزية الخاصة بأجهزتهم.
    * /
    def enableSeparateBuildPerCPUArchitecture = خطأ

/ **

  • قم بتشغيل Proguard لتقليص Java bytecode في إصدارات الإصدارات.
    * /
    def enableProguardInReleaseBuilds = خطأ

/ **

  • نكهة البناء المفضلة لـ JavaScriptCore.
    *
  • على سبيل المثال ، لاستخدام المتغير الدولي ، يمكنك استخدام:
  • def jscFlavor = 'org.webkit:android-jsc-intl:+'
    *
  • يتضمن البديل الدولي مكتبة ICU i18n والبيانات الضرورية
  • السماح باستخدام مثل Date.toLocaleString و String.localeCompare ذلك
  • تعطي نتائج صحيحة عند الاستخدام مع لغات أخرى غير en-US. لاحظ أن
  • هذا المتغير هو حوالي 6 ميغا بايت أكبر لكل معمارية من الافتراضي.
    * /
    def jscFlavor = 'org. webkit: android-jsc : + '

/ **

  • ما إذا كان سيتم تمكين Hermes VM.
    *
  • يجب تعيين هذا على project.ext.react وعكسه هنا. إذا لم يتم تعيينه
  • في project.ext.react ، لن يتم تحويل JavaScript إلى Hermes Bytecode
  • وبالتالي فإن فوائد استخدام Hermes ستنخفض بشكل حاد.
    * /
    def enableHermes = project.ext.react.get ("enableHermes"، خطأ) ؛

ذكري المظهر {
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" ، تشمل: ["* .jar"])
تنفيذ "com.facebook. رد فعل: رد فعل أصلي : +" // من 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
}

}

// قم بتشغيل هذا مرة واحدة لتتمكن من تشغيل التطبيق باستخدام BUCK
// يضع جميع تبعيات الترجمة في libs المجلد ليستخدمها BUCK
مهمة copyDownloadableDepsToLibs (نوع: نسخ) {
من configurations.compile
في 'libs'
}

التقديم من: file ("../../ node_modules/@react-native-community/cli-platform-android/native_modules.gradle") ؛ applicationNativeModulesAppBuildGradle (مشروع)
"

لكنك تريد تثبيته لجهازك ، أليس كذلك؟
التكوين تسجيل هنا

indapublic شكرًا لك ، يتم إنشاء تطبيقي بنجاح الآن. لكني أحتاج إلى إرسال إشعار فقط إلى هؤلاء المستخدمين غير النشطين لمدة 15 يومًا متواصلاً بشكل برمجي فقط دون استخدام لوحة معلومات إشعارات الإشارة الواحدة. هل من الممكن ان يساعدني احد من فضلكم.

أعتقد أنه يجب عليك إنشاء عدد جديد لهذا ، أليس كذلك؟

SAHITYASAI ،
يرجى التواصل مع قناة الدعم الخاصة بنا على OneSignal.com للحصول على مزيد من المساعدة. هتافات

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات