React-native-onesignal: خطأ في مكتبة خدمات Google Play

تم إنشاؤها على ٢١ مايو ٢٠١٨  ·  37تعليقات  ·  مصدر: OneSignal/react-native-onesignal

وصف:

يقوم الجهاز المسجل بإرجاع خطأ على لوحة معلومات OneSignal ، وبالتالي يتعذر تلقي إشعارات الدفع.

بيئة

react-native -v
react-native-cli: 2.0.1
react-native: 0.55.4

package.json

"dependencies": {
    "react": "16.3.1",
    "react-native": "0.55.4",
    "react-native-onesignal": "^3.2.3"
  }

خطوات إعادة إنتاج المشكلة:

  1. رد فعل أصلي الحرف الأول OneSignalTest
  2. برنامج OneSignalTest على القرص المضغوط
  3. تثبيت الغزل
  4. إضافة خيوط رد فعل أصلية واحدة
  5. رابط التفاعل الأصلي
  6. اتبع: https://documentation.onesignal.com/docs#section- تعليمات خاصة بنظام Android
  7. في android / app / build.gradle ، أدخل compile project(':react-native-onesignal') على التبعيات. لا يمكن تجميعها بدون هذا الاعتماد.
  8. في فئة App.js ، أدخل المستمعين: https://documentation.onesignal.com/docs#section -usage
  9. في ComponentWillMount ، أدخل OneSignal.configure () ؛ لفرض عودة onIds.
    على Ids listener ، امسح طريقة class وأنشئ طريقة محلية ، حتى نتمكن من رؤية id.
    إذا لم نفعل ذلك ، فلن يعود المعرف أبدًا
OneSignal.addEventListener('ids', device => {
      console.log('[OneSignal]>>ids: ', device);
    });

في البداية ، أدخل معرف التطبيق الخاص بك.

  1. ثم: رد فعل أصلي تشغيل أندرويد.
    (في adb logcat سيعود خطأ ، لكنك سترى المعرف في وضع التصحيح.)
  2. ابحث في المعرف على لوحة معلومات OneSignal وها هو موجود.

هل من شيء آخر:

E/OneSignal(31234): Unknown error getting FCM Token
E/OneSignal(31234): java.lang.NoSuchMethodError: No static method isDeviceProtectedStorage(Landroid/content/Context;)Z in class Landroid/support/v4/content/ContextCompat; or its super classes (declaration of 'android.support.v4.content.ContextCompat' appears in /data/app/com.onesignaltest-1/base.apk)
E/OneSignal(31234):     at com.google.firebase.FirebaseApp.zza(Unknown Source)
E/OneSignal(31234):     at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)
E/OneSignal(31234):     at com.onesignal.PushRegistratorFCM.initFirebaseApp(PushRegistratorFCM.java:64)
E/OneSignal(31234):     at com.onesignal.PushRegistratorFCM.getToken(PushRegistratorFCM.java:50)
E/OneSignal(31234):     at com.onesignal.PushRegistratorAbstractGoogle.attemptRegistration(PushRegistratorAbstractGoogle.java:97)
E/OneSignal(31234):     at com.onesignal.PushRegistratorAbstractGoogle.access$100(PushRegistratorAbstractGoogle.java:37)
E/OneSignal(31234):     at com.onesignal.PushRegistratorAbstractGoogle$1.run(PushRegistratorAbstractGoogle.java:84)
E/OneSignal(31234):     at java.lang.Thread.run(Thread.java:818)

googleplayserviceserror

تحرير 1:
حاولت أن أفعل ذلك ، لكن دون جدوى:

التعليق الأكثر فائدة

brunoandradebrDaniloCoutoifanfaizal أنا أصلح ، أغير sdkVersion والإصدار appcompat

التغييرات:
app / build.gradle

compileSdkVersion 26
buildToolsVersion "26.0.2"

في التبعيات
يتغيرون
compile "com.android.support:appcompat-v7:23.0.1"
ل
compile "com.android.support:appcompat-v7:26.0.1"

my build.gradle (أندرويد)

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
        maven {  // <-- THIS
            url 'https://maven.google.com/' // <-- THIS
            name 'Google' // <-- THIS
        } // <-- THIS
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        mavenLocal()
        jcenter()
        maven { 
            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
            url "$rootDir/../node_modules/react-native/android"
        }
        maven { // <-- THIS
            url 'https://maven.google.com/' // <-- THIS
            name 'Google' // <-- THIS
        } // <-- THIS
    }
}

في cmd: cd android && gradlew clean

قم بإلغاء تثبيت التطبيق من جهاز AVD الخاص بي وقم بالتجميع باستخدام التفاعل الأصلي

ال 37 كومينتر

DaniloCouto هذه بالتأكيد مشكلة إصدار مكتبة دعم android. يمكنك نشر الخاص بك app/build.gradle ؟

DaniloCouto تحقق من الإصدار الجديد 3.2.4 ، قاموا بإصلاحه.

adirzoari ، لا يزال يحدث في 3.2.4 ، مع نفس الأخطاء على Adb logcat وعلى لوحة تحكم مستخدم Onesignal.
yarn add [email protected]
package.json

"dependencies": {
    "react": "16.3.1",
    "react-native": "0.55.4",
    "react-native-onesignal": "3.2.4"
  },

@ Nightsd01 شيء أكيد ، ها هو:
app/build.gradle (لقد حذفت التعليقات التي تم إنشاؤها)

apply plugin: "com.android.application"

import com.android.build.OutputFile

project.ext.react = [
    entryFile: "index.js"
]

apply from: "../../node_modules/react-native/react.gradle"

def enableSeparateBuildPerCPUArchitecture = false

def enableProguardInReleaseBuilds = false

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "com.onesignaltest"
        minSdkVersion 16
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
        ndk {
            abiFilters "armeabi-v7a", "x86"
        }
    }
    splits {
        abi {
            reset()
            enable enableSeparateBuildPerCPUArchitecture
            universalApk false 
            include "armeabi-v7a", "x86"
        }
    }
    buildTypes {
        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]
            def abi = output.getFilter(OutputFile.ABI)
            if (abi != null) { 
                output.versionCodeOverride =
                        versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
            }
        }
    }
}

dependencies {
    compile project(':react-native-onesignal') // I just added this line 
    compile fileTree(dir: "libs", include: ["*.jar"])
    compile "com.android.support:appcompat-v7:23.0.1"
    compile "com.facebook.react:react-native:+" 
}

task copyDownloadableDepsToLibs(type: Copy) {
    from configurations.compile
    into 'libs'
}

تحرير 1:
لقد أضفتها في بداية الملف. لم يتغير شيء:

buildscript {
    repositories {
        maven { url 'https://plugins.gradle.org/m2/' } // Gradle Plugin Portal 
    }
    dependencies {
        classpath 'gradle.plugin.com.onesignal:onesignal-gradle-plugin:[0.10.0, 0.99.99]'
    }
}

apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'
...
...
...
android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    ...
    ...
}

بالطبع ، قمت بتنظيف مشروع android gradlew clean وحاولت إعادة البناء.

DaniloCouto هل أنت فقط تستخدم مشروع رد فعل أصلي واحد example ...؟

هل يمكنك أيضًا نشر ملف AndroidManifest.xml ؟ شكرا

@ Nightsd01 لقد أنشأت مشروعًا جديدًا يتفاعل مع التفاعل وأضفت حزمة إشارات التفاعل الأصلية من خلال Yarn.

ها هو:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.onesignaltest">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <!-- Onesignal Instruction -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <!-- Onesignal Instruction -->

    <application
      android:name=".MainApplication"
      android:label="@string/app_name"
      android:icon="@mipmap/ic_launcher"
      android:allowBackup="false"
      android:theme="@style/AppTheme"
      > <!-- android:launchMode="singleTop" I Was wrong at this line-->
      <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
        android:windowSoftInputMode="adjustResize"
        android:launchMode="singleTop"> <!-- brunoandradebr made a pretty nice observation right here -->
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
      </activity>
      <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
    </application>

</manifest>

تحرير 1:
بعد تلوث # 387 ، لقد أضفت هذا السطر. لم يتغير شيء

<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>

تحرير 2:
كما لاحظ brunoandradebr ، يجب أن يكون android:launchMode="singleTop" على علامة النشاط وليس على علامة التطبيق.
لكنها ما زالت لا تعمل ..

نفس المشكلة هنا ، @ DaniloCouto قمت بإصلاحها ؟؟؟

لدي نفس المشكلة ..DaniloCouto هل تمكنت من إصلاحها؟ لقد بحثت عنه في كل مكان وما زلت لا أعمل :(

ifanfaizal ، lahed آسف لسماع ذلك ، لكني هنا لإيجاد حل أيضًا ...
حاولت متابعة هؤلاء ولكن دون جدوى:

دانيلو ، من المفترض أن تدخل
android:launchMode="singleTop"
سياق النشاط الداخلي ليس في التطبيق كتعليمات إشارة واحدة.
راجع للشغل أنه لا يعمل بشكل جيد = [

brunoandradebr حسنًا ، لاحظ مواطنتي.
كما قلت ، ما زالت لا تعمل.

compile "com.google.android.gms:play-services-gcm:+"

تمت إضافة هذا إلى الاعتماد بعد تثبيت خدمة Google Play من مدير android studio sdk ، وعمل بطريقة ما ، لكن التطبيق تعطل ، ثم قمت بتحديث قائمة مستخدمي إشارة واحدة واستمر الخطأ = [

أعتقد أنه يعمل الآن! لقد قمت بتثبيت خدمة Google Play من Android Studio ، وليس من المفترض إدخال أي سطر ، فأنت بحاجة إلى إغلاق الحزمة والترجمة مرة أخرى. يظهر الاشتراك مع أيقونة الاختيار! لم أقوم بإدخال أسطر إضافية لإشارة واحدة ، إنها نفس الطريقة التي أنشأتها الاستجابة الأصلية.

brunoandradebrDaniloCoutoifanfaizal أنا أصلح ، أغير sdkVersion والإصدار appcompat

التغييرات:
app / build.gradle

compileSdkVersion 26
buildToolsVersion "26.0.2"

في التبعيات
يتغيرون
compile "com.android.support:appcompat-v7:23.0.1"
ل
compile "com.android.support:appcompat-v7:26.0.1"

my build.gradle (أندرويد)

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
        maven {  // <-- THIS
            url 'https://maven.google.com/' // <-- THIS
            name 'Google' // <-- THIS
        } // <-- THIS
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        mavenLocal()
        jcenter()
        maven { 
            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
            url "$rootDir/../node_modules/react-native/android"
        }
        maven { // <-- THIS
            url 'https://maven.google.com/' // <-- THIS
            name 'Google' // <-- THIS
        } // <-- THIS
    }
}

في cmd: cd android && gradlew clean

قم بإلغاء تثبيت التطبيق من جهاز AVD الخاص بي وقم بالتجميع باستخدام التفاعل الأصلي

lahed Aaahhh انها تعمل يا اخي !! 💃 شكراً جزيلاً على الحل الذي قدمته .. قضيت 3 أيام لكي أجعله يعمل ولكن لا توجد نتائج على الإطلاق .. واليوم أنت فقط أنقذت حياتي 😃

lahed ، يعمل مثل السحر ، شكرا.
اعتقد انها مغلقة ...؟
ما الذي يمكن لفريق OneSignal فعله حيال ذلك؟
ارتباط رد فعل أصلي محسن؟

lahed ty ، عملها

لدي مشروعان باستخدام إشارة واحدة
مشروع 1 لا يحتاج إلى OneSignal.init
لكن المشروع 2 بحاجة إلى OneSignal.init
يمكن لأحد أن يشرح ذلك؟

@ stevanus1997 ربما قمت بالفعل بتعريف الحرف الأول في build.gradle في المشروع 2 (؟) (بعبارة أخرى ، قمت بتعريف OneSignal init بطريقة قديمة) لذلك لم تكن بحاجة إلى البدء مرة أخرى في App.js

مشروع 1

defaultConfig {
        applicationId "com.xxxxx"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        ndk {
            abiFilters "armeabi-v7a", "x86"
        }
        manifestPlaceholders = [
               onesignal_app_id: "xxxxxxxxx",
               onesignal_google_project_number: "xxxxxxxxx"
       ]
    }

مشروع 2

defaultConfig {
        applicationId "com.xxxx"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        ndk {
            abiFilters "armeabi-v7a", "x86"
        }
        manifestPlaceholders = [
                onesignal_app_id               : "xxxxx",
                onesignal_google_project_number: "xxxxx"
        ]
        multiDexEnabled true
    }

ifanfaizal هذا بناء بلدي

lahed شكرا جزيلا لك. الآن تعمل كالسحر ... !!!

لقد اتبعت حل lahed ولكني ما زلت أتلقى نفس الخطأ من لوحة معلومات OneSignal ... هل يمكن لشخص ما أن يظهر لي رقمه الثابت android/build.gradle و android/app/build.gradle ؟

حاول إغلاق المترجم وإعادة الترجمة مرة أخرى.

فعلت ذلك عدة مرات بالفعل 😕

هل قمت بتثبيت خدمة Google Play مع Android Studio؟

نعم ، أحدث إصدار منه ، أنا أعمل على Android 8.0

android/app/build.gradle :

apply plugin: "com.android.application"
apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'

import com.android.build.OutputFile

apply from: "../../node_modules/react-native/react.gradle"

def enableSeparateBuildPerCPUArchitecture = false
def enableProguardInReleaseBuilds = false

android {
    compileSdkVersion 27
    buildToolsVersion "27.0.2"

    defaultConfig {
        applicationId "xxx"
        minSdkVersion 16
        targetSdkVersion 27
        versionCode 31
        versionName "0.3.0"
        multiDexEnabled true
        vectorDrawables.useSupportLibrary = true
        ndk {
            abiFilters "armeabi-v7a", "x86"
        }
        manifestPlaceholders = [manifestApplicationId: "${applicationId}",
                                onesignal_google_project_number: "xxx"]
    }
    signingConfigs {
        release {
            if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
                storeFile file(MYAPP_RELEASE_STORE_FILE)
                storePassword MYAPP_RELEASE_STORE_PASSWORD
                keyAlias MYAPP_RELEASE_KEY_ALIAS
                keyPassword MYAPP_RELEASE_KEY_PASSWORD
            }
        }
    }
    splits {
        abi {
            reset()
            enable enableSeparateBuildPerCPUArchitecture
            universalApk false  // If true, also generate a universal APK
            include "armeabi-v7a", "x86"
        }
    }
    buildTypes {
        release {
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
            signingConfig signingConfigs.release
        }
    }
    // 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:
            // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
            def versionCodes = ["armeabi-v7a":1, "x86":2]
            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
            }
        }
    }
}

repositories {
    maven { url "https://jitpack.io" }
}

dependencies {
    compile project(':react-native-image-picker')
    compile(project(':react-native-maps')){
        exclude group: 'com.google.android.gms', module: 'play-services-base'
        exclude group: 'com.google.android.gms', module: 'play-services-maps'
    }
    compile 'com.google.android.gms:play-services-base:+'
    compile 'com.google.android.gms:play-services-maps:+'
    compile project(':react-native-svg')
    compile project(':react-native-dialogs')
    compile project(':react-native-onesignal')
    compile fileTree(dir: "libs", include: ["*.jar"])
    compile project(':react-native-vector-icons')
    compile project(':react-native-i18n')
    compile project(':react-native-fetch-blob')
    compile (project(':react-native-camera')) {
        exclude group: "com.android.support"
        exclude group: "com.google.android.gms"
    }
    compile ("com.google.android.gms:play-services-vision:+") {
        force = true;
    }
    compile ('com.android.support:exifinterface:27.0.2') {
        force = true;
    }
    compile "com.android.support:appcompat-v7:27.0.2"
    compile 'com.android.support:support-vector-drawable:27.0.2'
    compile 'com.android.support:animated-vector-drawable:27.0.2'
    compile "com.facebook.react:react-native:+"  // From node_modules
}

// Run this once to be able to run the application with BUCK
// puts all compile dependencies into folder libs for BUCK to use
task copyDownloadableDepsToLibs(type: Copy) {
    from configurations.compile
    into 'libs'
}

android/build.gradle :

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
        maven { url 'https://plugins.gradle.org/m2/' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'
        classpath 'gradle.plugin.com.onesignal:onesignal-gradle-plugin:[0.10.1, 0.99.99]'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        mavenLocal()
        jcenter()
        maven { url "$rootDir/../node_modules/react-native/android" }
        maven {
            url "https://maven.google.com"
            name 'Google'
        }
        maven { url "https://jitpack.io" }
    }
}

داخل قائمة إشارات واحدة ، قم بإزالة خيار الجهاز الفعلي> حذف ، وإلغاء تثبيت تطبيق التصحيح ثم تجميعه مرة أخرى.

+1 لا يتلقى onIds مع استدعاء init من رد فعل js الأصلي

@ congnguyen91 هذا متوقع. لن يتم تنشيط الحدث onIds إلا عندما تتغير حالة الاشتراك (المعرف) بالفعل.

إذا كنت تريد فرض تنشيط onIds ، يمكنك استدعاء OneSignal.configure() بعد التهيئة. هذا محير ، وأنا أعلم ، إنه إرث. سنقوم بإعادة بناء ديون في الإصدار الرئيسي التالي لجعل هذا الأمر أقل إرباكًا.

مرحبًا lahed ، هل أرى تغييراتك المقترحة صحيحة https://github.com/geektimecoil/react-native-onesignal/issues/525#issuecomment -392224930 ، دقيقة. مطلوب compileSdkVersion و buildToolsVersion الآن 26 (مما يعني Android 8.0 )؟ (الذي يتطابق مع الملاحظات في دليل الإعداد: https://documentation.onesignal.com/v5.0/docs/react-native-sdk-setup#section-adding-the-gradle-plugin).

هل هذا يعني أن Android 6.x لم يعد مدعومًا ، لأن compileSdkVersion و buildToolsVersion هو 23 و 23.0.2.

شكرا لمساعدتك!

natterstefan أنا بالتأكيد لست كذلك. الجهاز الذي يحدد الأجهزة السفلية هو minSdkVersion ، لذلك ، يجب أن يعمل كل شيء بشكل مثالي ، ما لم تكن واجهة برمجة التطبيقات الأصلية غير مدعومة. لقد اختبرت على Android 4.4 وهو يعمل بشكل جيد

لقد حللت هنا ....
لقد قمت بإلغاء تثبيت حزم خدمات google play والإشارة بالتسلسل.
بعد ذلك قمت بتثبيت إشارة واحدة ويعمل كل شيء الآن.
ملاحظة: ابحث في الأرشيفات التي تم إنشاؤها بعد الإنشاء وتحقق مما إذا كان ملف dll الخاص بخدمات google play موجودًا.
P2s: أنا أستخدم إشارات one مع تطبيقات xamarin.

لقد قمنا بتحديث وثائقنا لتشمل التأكد من أن compileSdkVersion و buildToolsVersion يبلغان 26+.
https://documentation.onesignal.com/docs/react-native-sdk-setup#section -adding-the-gradle-plugin

هذا أحد الأشياء التي اقترحها lahed في https://github.com/geektimecoil/react-native-onesignal/issues/525#issuecomment -392224930.

الجزء الجديد الآخر هو إضافة المكون الإضافي OneSignal Gradle إلى مشروعك. باستخدام هذا ، لن تضطر إلى تحديث appcompat-v7 يدويًا في app/build.gradle وحل المشكلات المتعلقة بالإصدار المتعارض في المكونات الإضافية الأخرى.

تأكد من اتباع قسم Adding the Gradle Plugin الجديد قبل إنشاء عدد جديد أو الرد هنا إذا كنت ترى نفس المشكلة

lahed شكرًا جزيلاً لك ، لقد حاولت اكتشاف هذه المشكلة لمدة يومين ، ووجدت أخيرًا مشكلة مفيدة للغاية هنا ، شكرًا لك.

كان لدي نفس الشيء ، لكنني عملت به من خلال استدعاء oneignal.configure () مثل هذا:

OneSignal.init ("my-one-Signal-id") ؛
OneSignal.configure () ،

كان هذا مع:
"تفاعل أصلي": "~ 0.56.0" ،
"رد فعل أصلي إشارة واحدة": "^ 3.2.6"،

اتبعت التوثيق الواحد للإشارة إلى الجرس وكان
تطبيق البرنامج المساعد: "com.onesignal.androidsdk.onesignal-gradle-plugin"

معلومات اخرى:
تدرج 3.1.3
تحويلة {
compileSdkVersion = 27
buildToolsVersion = "27.0.3"
الإصدار minSdk = 16
targetSdkVersion = 27
supportLibVersion = "27.1.1"
googlePlayServicesVersion = "12.0.1"
playServicesVersion = googlePlayServicesVersion
}

في حالتي ، لم أحصل على أي أخطاء في لوحة معلومات OneSignal ؛ تم تسجيل الجهاز بغرامة OneSignal. لم يتم إطلاق onIds .

إضافة هذا مباشرة بعد OneSignal.init () إصلاح مشكلتي:

    OneSignal.configure();

أتمنى أن يساعد هذا الآخرين.

نفس المشكلة هنا

package.json:

{
  "name": "smartial",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "android": "react-native run-android",
    "ios": "react-native run-ios",
    "start": "react-native start",
    "test": "jest",
    "lint": "eslint .",
    "android-linux": "npx react-native run-android --terminal \"$PWD/shkonsole\""
  },
  "dependencies": {
    "@react-native-community/google-signin": "^4.0.3",
    "react-native-onesignal": "^3.7.3",
    "@sentry/react-native": "^1.4.1",
    "react-native-code-push": "^6.2.1",
    "react-native-google-places": "^3.1.2",
    "@react-native-community/datetimepicker": "^2.4.2",
    "@react-native-community/masked-view": "^0.1.10",
    "@react-navigation/material-bottom-tabs": "^5.2.12",
    "@react-navigation/native": "^5.4.3",
    "@react-navigation/stack": "^5.4.0",
    "react-native-gesture-handler": "^1.6.1",
    "native-base": "^2.13.12",
    "react-native-paper": "^3.10.1",
    "react-native-safe-area-context": "^2.0.3",
    "react-native-reanimated": "^1.9.0",
    "react-native-screens": "^2.8.0",
    "apisauce": "^1.1.1",
    "react-native-config": "^1.2.1",
    "react-native-easy-app": "^1.7.3",
    "react-native-vector-icons": "^6.6.0",
    "@thallyssonklein/border-layout-react-native": "^1.0.14",
    "recoil": "github:eveningkid/Recoil#react-native",
    "react": "16.13.1",
    "react-native": "0.63.2"
  },
  "devDependencies": {
    "@babel/core": "^7.10.0",
    "@babel/runtime": "^7.10.0",
    "@bam.tech/react-native-make": "^3.0.0",
    "@react-native-community/eslint-config": "^1.1.0",
    "babel-jest": "^26.0.1",
    "eslint": "^7.1.0",
    "jest": "^26.0.1",
    "metro-react-native-babel-preset": "^0.59.0",
    "react-test-renderer": "16.11.0"
  },
  "jest": {
    "preset": "react-native"
  }
}

android / build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext {
        buildToolsVersion = "28.0.3"
        minSdkVersion = 16
        compileSdkVersion = 28
        targetSdkVersion = 28

        googlePlayServicesAuthVersion = "16.0.1"
    }
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath('com.android.tools.build:gradle:3.6.3')
        classpath 'com.google.gms:google-services:4.1.0'
        // 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()
        maven { url 'https://www.jitpack.io' }
    }
}

android / app / build.gradle

apply plugin: "com.android.application"

import com.android.build.OutputFile

/**
 * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets
 * and bundleReleaseJsAndAssets).
 * These basically call `react-native bundle` with the correct arguments during the Android build
 * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the
 * bundle directly from the development server. Below you can see all the possible configurations
 * and their defaults. If you decide to add a configuration block, make sure to add it before the
 * `apply from: "../../node_modules/react-native/react.gradle"` line.
 *
 * project.ext.react = [
 *   // the name of the generated asset file containing your JS bundle
 *   bundleAssetName: "index.android.bundle",
 *
 *   // the entry file for bundle generation. If none specified and
 *   // "index.android.js" exists, it will be used. Otherwise "index.js" is
 *   // default. Can be overridden with ENTRY_FILE environment variable.
 *   entryFile: "index.android.js",
 *
 *   // https://facebook.github.io/react-native/docs/performance#enable-the-ram-format
 *   bundleCommand: "ram-bundle",
 *
 *   // whether to bundle JS and assets in debug mode
 *   bundleInDebug: false,
 *
 *   // whether to bundle JS and assets in release mode
 *   bundleInRelease: true,
 *
 *   // whether to bundle JS and assets in another build variant (if configured).
 *   // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants
 *   // The configuration property can be in the following formats
 *   //         'bundleIn${productFlavor}${buildType}'
 *   //         'bundleIn${buildType}'
 *   // bundleInFreeDebug: true,
 *   // bundleInPaidRelease: true,
 *   // bundleInBeta: true,
 *
 *   // whether to disable dev mode in custom build variants (by default only disabled in release)
 *   // for example: to disable dev mode in the staging build type (if configured)
 *   devDisabledInStaging: true,
 *   // The configuration property can be in the following formats
 *   //         'devDisabledIn${productFlavor}${buildType}'
 *   //         'devDisabledIn${buildType}'
 *
 *   // the root of your project, i.e. where "package.json" lives
 *   root: "../../",
 *
 *   // where to put the JS bundle asset in debug mode
 *   jsBundleDirDebug: "$buildDir/intermediates/assets/debug",
 *
 *   // where to put the JS bundle asset in release mode
 *   jsBundleDirRelease: "$buildDir/intermediates/assets/release",
 *
 *   // where to put drawable resources / React Native assets, e.g. the ones you use via
 *   // require('./image.png')), in debug mode
 *   resourcesDirDebug: "$buildDir/intermediates/res/merged/debug",
 *
 *   // where to put drawable resources / React Native assets, e.g. the ones you use via
 *   // require('./image.png')), in release mode
 *   resourcesDirRelease: "$buildDir/intermediates/res/merged/release",
 *
 *   // by default the gradle tasks are skipped if none of the JS files or assets change; this means
 *   // that we don't look at files in android/ or ios/ to determine whether the tasks are up to
 *   // date; if you have any other folders that you want to ignore for performance reasons (gradle
 *   // indexes the entire tree), add them here. Alternatively, if you have JS files in android/
 *   // for example, you might want to remove it from here.
 *   inputExcludes: ["android/**", "ios/**"],
 *
 *   // override which node gets called and with what additional arguments
 *   nodeExecutableAndArgs: ["node"],
 *
 *   // supply additional arguments to the packager
 *   extraPackagerArgs: []
 * ]
 */

project.ext.react = [
    enableHermes: false,  // clean and rebuild if changing
]

apply from: "../../node_modules/react-native/react.gradle"

/**
 * Set this to true to create two separate APKs instead of one:
 *   - An APK that only works on ARM devices
 *   - An APK that only works on x86 devices
 * The advantage is the size of the APK is reduced by about 4MB.
 * Upload all the APKs to the Play Store and people will download
 * the correct one based on the CPU architecture of their device.
 */
def enableSeparateBuildPerCPUArchitecture = false

/**
 * Run Proguard to shrink the Java bytecode in release builds.
 */
def enableProguardInReleaseBuilds = false

/**
 * The preferred build flavor of JavaScriptCore.
 *
 * For example, to use the international variant, you can use:
 * `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
 *
 * The international variant includes ICU i18n library and necessary data
 * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
 * give correct results when using with locales other than en-US.  Note that
 * this variant is about 6MiB larger per architecture than default.
 */
def jscFlavor = 'org.webkit:android-jsc:+'

/**
 * Whether to enable the Hermes VM.
 *
 * This should be set on project.ext.react and mirrored here.  If it is not set
 * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode
 * and the benefits of using Hermes will therefore be sharply reduced.
 */
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.smartial"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode 24
        versionName "3.0.9"
        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('smartial-app.jks')
            storePassword KEYSTORE_PASSWORD
            keyAlias KEY_ALIAS
            keyPassword KEY_PASSWORD
        }
    }
    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.release
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
        }
    }

    packagingOptions {
        pickFirst "lib/armeabi-v7a/libc++_shared.so"
        pickFirst "lib/arm64-v8a/libc++_shared.so"
        pickFirst "lib/x86/libc++_shared.so"
        pickFirst "lib/x86_64/libc++_shared.so"
    }

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

        }
    }
}

dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    // implementation 'com.google.android.gms:play-services-auth:18.0.0'
    // implementation "com.google.android.gms:play-services-base:16.0.1"
    // implementation "com.google.firebase:firebase-core:16.0.6"
    // implementation "com.google.firebase:firebase-messaging:17.3.4"
    //noinspection GradleDynamicVersion
    implementation "com.facebook.react:react-native:+"  // From node_modules

    implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
    compile 'com.android.support:multidex:1.0.1' //enter the latest version

    debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") {
      exclude group:'com.facebook.fbjni'
    }

    debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
        exclude group:'com.facebook.flipper'
    }

    debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") {
        exclude group:'com.facebook.flipper'
    }

    if (enableHermes) {
        def hermesPath = "../../node_modules/hermes-engine/android/";
        debugImplementation files(hermesPath + "hermes-debug.aar")
        releaseImplementation files(hermesPath + "hermes-release.aar")
    } else {
        implementation jscFlavor
    }

    implementation project(':react-native-config')
    compile project(':react-native-onesignal') // I just added this line 
}

// Run this once to be able to run the application with BUCK
// puts all compile dependencies into folder libs for BUCK to use
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 from: "../../node_modules/react-native-code-push/android/codepush.gradle"
apply from: "../../node_modules/react-native-vector-icons/fonts.gradle"

apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle"

apply plugin: 'com.google.gms.google-services' // <--- this should be the last line

src / main / AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.smartial">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>


    <application
      android:name=".MainApplication"
      android:label="@string/app_name"
      android:icon="@mipmap/ic_launcher"
      android:allowBackup="false"
      android:theme="@style/AppTheme">
      <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
        android:launchMode="singleTask"
        android:windowSoftInputMode="adjustResize">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
      </activity>
      <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
    </application>

</manifest>

src / debug / AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>

    <application android:usesCleartextTraffic="true" tools:targetApi="28" tools:ignore="GoogleAppIndexingWarning" />
</manifest>

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