لقد واجهت مشكلة في تكامل Firebase. أولاً وقبل كل شيء، قمت بإضافة قواعد إلى ملف build.gradle
على مستوى الجذر:
buildscript {
repositories {
maven { url "http://dl.bintray.com/populov/maven" }
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'
classpath 'com.google.gms:google-services:3.0.0'
}
}
allprojects {
repositories {
maven { url "http://dl.bintray.com/populov/maven" }
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
وكذلك ملف Gradle الخاص بالوحدة:
-
تجنب الـ undefined باستخدام دالة map06/04/2024
apply plugin: 'com.android.application'
android {
compileSdkVersion 24
buildToolsVersion "24"
defaultConfig {
applicationId "com.example.app"
minSdkVersion 14
targetSdkVersion 24
versionCode 2
versionName "0.9"
}
buildTypes {
///
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.google.firebase:firebase-core:9.0.2'
compile 'com.google.firebase:firebase-crash:9.0.2'
}
apply plugin: 'com.google.gms.google-services'
أثناء بناء المشروع، تلقيت الخطأ:
Error:Error converting bytecode to dex: Cause:
com.android.dex.DexException: Multiple dex files define
Lcom/google/firebase/FirebaseException;
سبب الخطأ واضح، ولكنني لم أقم بتجميع أي مكتبة مرتين. هل يجب علي أن استبعد فئة FirebaseException
من عملية البناء يدويًا؟ إذا كان الأمر كذلك، كيف يمكنني ذلك؟ ربما هذا خلل داخل تبعيات Firebase؟
المزيد من المعلومات
حدثت هذه المشكلة عادةً عندما يتم تضمين نفس الفئة أو نفس الواجهة مرتين في تكديس البرامج (Stack) الخاص بتطبيق Android الخاص بك. في حالتك، يبدو أنه يتم تضمين فئة FirebaseException
من Firebase مرتين في تطبيقك، مما يؤدي إلى هذا الخطأ.
لحل هذه المشكلة، يمكنك اتباع الخطوات التالية:
-
تحقق من التبعيات المضمنة: تأكد من عدم وجود أي تبعيات مضمنة يدويًا أو مكررة في مشروعك، وخاصة في مجلد
libs
. -
تحديث تبعيات Firebase: تأكد من استخدام أحدث إصدار من تبعيات Firebase.
-
تنظيف وإعادة بناء المشروع: جرب تنفيذ الأمر
Clean
ثمRebuild
من قائمةBuild
في Android Studio. -
استبعاد الفئة المتكررة يدويًا: إذا لم ينجح الحل السابق، يمكنك استبعاد فئة
FirebaseException
يدويًا من تكوين Gradle. يمكنك القيام بذلك عن طريق إضافة قاعدةexclude
في تبعية Firebase المتكررة في ملفbuild.gradle
الخاص بالوحدة، على النحو التالي:groovydependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile ('com.google.firebase:firebase-core:9.0.2') { exclude module: 'firebase-common' } compile 'com.google.firebase:firebase-crash:9.0.2' }
في هذا المثال، قمت بإستبعاد الوحدة
firebase-common
من تبعيةfirebase-core
كمثال. يمكنك تغيير الوحدة المطلوب استبعادها وفقًا للفئة المتكررة التي تظهر في رسالة الخطأ الخاصة بك. -
تحديث Android Studio ومكونات SDK: تأكد من تحديث Android Studio ومكونات SDK إلى أحدث إصداراتها.
بعد تطبيق أحد الحلول السابقة، يجب أن تتمكن من إعادة بناء التطبيق بنجاح دون وجود أخطاء “Multiple dex files define” تظهر.