البرمجة

حل مشكلة تكرار فئة FirebaseException

لقد واجهت مشكلة في تكامل 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 الخاص بالوحدة:

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 مرتين في تطبيقك، مما يؤدي إلى هذا الخطأ.

لحل هذه المشكلة، يمكنك اتباع الخطوات التالية:

  1. تحقق من التبعيات المضمنة: تأكد من عدم وجود أي تبعيات مضمنة يدويًا أو مكررة في مشروعك، وخاصة في مجلد libs.

  2. تحديث تبعيات Firebase: تأكد من استخدام أحدث إصدار من تبعيات Firebase.

  3. تنظيف وإعادة بناء المشروع: جرب تنفيذ الأمر Clean ثم Rebuild من قائمة Build في Android Studio.

  4. استبعاد الفئة المتكررة يدويًا: إذا لم ينجح الحل السابق، يمكنك استبعاد فئة FirebaseException يدويًا من تكوين Gradle. يمكنك القيام بذلك عن طريق إضافة قاعدة exclude في تبعية Firebase المتكررة في ملف build.gradle الخاص بالوحدة، على النحو التالي:

    groovy
    dependencies { 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 كمثال. يمكنك تغيير الوحدة المطلوب استبعادها وفقًا للفئة المتكررة التي تظهر في رسالة الخطأ الخاصة بك.

  5. تحديث Android Studio ومكونات SDK: تأكد من تحديث Android Studio ومكونات SDK إلى أحدث إصداراتها.

بعد تطبيق أحد الحلول السابقة، يجب أن تتمكن من إعادة بناء التطبيق بنجاح دون وجود أخطاء “Multiple dex files define” تظهر.

مقالات ذات صلة

زر الذهاب إلى الأعلى

هذا المحتوى محمي من النسخ لمشاركته يرجى استعمال أزرار المشاركة السريعة أو تسخ الرابط !!