وصف:
يقوم الجهاز المسجل بإرجاع خطأ على لوحة معلومات 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"
}
خطوات إعادة إنتاج المشكلة:
compile project(':react-native-onesignal')
على التبعيات. لا يمكن تجميعها بدون هذا الاعتماد.OneSignal.addEventListener('ids', device => {
console.log('[OneSignal]>>ids: ', device);
});
في البداية ، أدخل معرف التطبيق الخاص بك.
هل من شيء آخر:
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)
تحرير 1:
حاولت أن أفعل ذلك ، لكن دون جدوى:
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
إلى ملف AndroidManifest.xmlDaniloCouto هذه بالتأكيد مشكلة إصدار مكتبة دعم 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 آسف لسماع ذلك ، لكني هنا لإيجاد حل أيضًا ...
حاولت متابعة هؤلاء ولكن دون جدوى:
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
إلى ملف AndroidManifest.xmlدانيلو ، من المفترض أن تدخل
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>
التعليق الأكثر فائدة
brunoandradebrDaniloCoutoifanfaizal أنا أصلح ، أغير sdkVersion والإصدار appcompat
التغييرات:
app / build.gradle
في التبعيات
يتغيرون
compile "com.android.support:appcompat-v7:23.0.1"
ل
compile "com.android.support:appcompat-v7:26.0.1"
my build.gradle (أندرويد)
في cmd: cd android && gradlew clean
قم بإلغاء تثبيت التطبيق من جهاز AVD الخاص بي وقم بالتجميع باستخدام التفاعل الأصلي