تحدد ملفات dex متعددة Landroid / support / v4 / accessibilityservice / AccessibilityServiceInfoCompat


Answers

أنا حل خطأ مماثل عن طريق إضافة قطعة من التعليمات البرمجية التالية إلى ملف build.gradle بلدي داخل كتلة الروبوت.

android {
    dexOptions {
        preDexLibraries = false
    }
}
Question

إذا قمت بتشغيل gradle assembleDebug من سطر الأوامر ، gradle assembleDebug فجأة على هذا الخطأ:

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dx.util.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:592)
    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:550)
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:531)
    at com.android.dx.merge.DexMerger.mergeDexBuffers(DexMerger.java:168)
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:186)
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:300)
    at com.android.dx.command.dexer.Main.run(Main.java:232)
    at com.android.dx.command.dexer.Main.main(Main.java:174)
    at com.android.dx.command.Main.main(Main.java:91)

إذا كنت grep ل v4 أرى اثنين من الملفات داخل مجلد البناء الخاص بي.

Binary file build/pre-dexed/debug/support-v4-19.0.0-2ba5fdd60a6c3836b3104a863fe42897da1fa9d1.jar matches
Binary file build/pre-dexed/debug/support-v4-r7-227d905d79b23b20866531d4f700446c040a2ccb.jar matches

يتضمن ملف Gradle الخاص بي مكتبة الدعم هذه فقط:

compile 'com.android.support:support-v13:19.0.0'

أنا متعكز كيف يتم تضمين مكتبة r7 بطريقة أو بأخرى. لقد قمت بتشغيل gradle clean ويبدو دائما هناك عندما gradle clean .

إذا كنت grep لـ r7 داخل دليل الإنشاء ، فأنا أراه داخل الملف:

Binary file build/exploded-bundles/ComGoogleAndroidGmsPlayServices4030.aar/classes.jar matches

إذا لم أقم بتضمين الإصدار v13 ، فلن تتم ترجمة أشياء أخرى.

ولكن لا يشمل v13 مكتبة دعم v4؟

هل هذا عدم توافق بين حزمة AAR لخدمات اللعب ومكتبة v13؟

أمسكت ملف Gradle من gradleplease.appspot.com.

لا تؤدي إزالة خدمات Play إلى إصلاحها ؛ نفس الخطأ.

تبعياتي داخل build.gradle:

 dependencies {


 // Google Play Services
//compile 'com.google.android.gms:play-services:4.0.30'

// Support Libraries
//compile 'com.android.support:support-v4:19.0.0'
///compile 'com.android.support:appcompat-v7:19.0.0'
//compile 'com.android.support:gridlayout-v7:19.0.0'
compile 'com.android.support:support-v13:19.0.0'
compile 'org.eclipse.mylyn.github:org.eclipse.egit.github.core:2.1.5'
compile 'commons-codec:commons-codec:1.9'
compile 'com.madgag:markdownj-core:0.4.1'
compile 'com.wu-man:android-oauth-client:0.0.2'
compile 'com.google.http-client:google-http-client-jackson2:1.17.0-rc'
compile 'org.apache.commons:commons-lang3:3.2'
compile 'com.google.code.gson:gson:2.2.4'
}



كان لدي نفس الخطأ في مشروع قديم. كان خطأي هو أن مكتبة الدعم تم تضمينها مرتين: مرة واحدة داخل lib-play-services lib ، وأخرى كقائمة بذاتها.

هذه هي الطريقة التي أصلحتها:

BAD build.gradle:

dependencies {
   compile files('libs/android-support-v4.jar') 
   compile files('libs/core-2.2.jar')
   compile files('libs/universal-image-loader-1.8.5-with-sources.jar')
   compile 'com.google.android.gms:play-services:3.2.65'
}

بناء جيد.

dependencies {
   // compile files('libs/android-support-v4.jar')  // not needed 
   compile files('libs/core-2.2.jar')
   compile files('libs/universal-image-loader-1.8.5-with-sources.jar')
   compile 'com.google.android.gms:play-services:3.2.65'
}

آمل أن يساعد شخص ما :-)




طريقة ديكس مماثلة حل الطريقة

كان gradle.build يحتوي على:

compile files('libs/httpclient-4.2.1.jar')
compile 'org.apache.httpcomponents:httpclient:4.5'
compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'

تم حل المشكلة عند تمت إزالتي

compile files('libs/httpclient-4.2.1.jar') 

غضبي الآن يبدو مثل:

apply plugin: 'com.android.application'

android {

compileSdkVersion 24
buildToolsVersion "24.0.3"

defaultConfig {
    applicationId "com.mmm.ll"
    minSdkVersion 16
    targetSdkVersion 24
    useLibrary  'org.apache.http.legacy'
}

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}
}

dependencies {

compile 'com.google.android.gms:play-services:6.1.+'
compile files('libs/PayPalAndroidSDK.jar')
compile files('libs/ksoap2-android-assembly-3.0.0-RC.4-jar-with-dependencies.jar')
compile files('libs/picasso-2.1.1.jar')
compile files('libs/gcm.jar')
compile 'com.android.support:appcompat-v7:24.2.1'
compile 'org.apache.httpcomponents:httpclient:4.5'
compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'
}

كان هناك تكرار في ملف JAR ومشروع Gradle المترجمة

لذا ابحث جيدًا عن ملفات التبعية والجرة التي تحتوي على نفس الصفوف.

وإزالة التكرار.
هذا العمل بالنسبة لي.




في Android Studio ، انتقل إلى build.gradle الخاص بك (تحقق من ملفات build.gradle للمشروع والوحدات) وابحث عن تبعيات مكررة.

احذف تلك التي لا يحتاجها مشروعك.




أنا أستخدم com.google.android.gms:play-services-analytics:8.3.0 و android-support-v13.jar ولا يمكن exclude module: 'support-v4' للعمل.

ما كان يعمل بالنسبة لي كان استخدام الأداة اليدوية android-support-v13 بدلاً من ملف android-support-v13.jar .

أي بدلا من

dependencies {
compile ('com.google.android.gms:play-services-analytics:8.3.0')
compile files('libs/android-support-v13.jar')

}

إستعملت

dependencies {
compile ('com.google.android.gms:play-services-analytics:8.3.0')
compile ('com.google.android:android-support-v13')

}




واجهت نفس المشكلة عند إضافة react-native-palette إلى مشروعي ، وهنا شجرة التبعيات الخاصة بي:

./gradlew app:dependencies
+--- project :react-native-palette
|    +--- com.facebook.react:react-native:0.20.+ -> 0.44.2
|    |    +--- javax.inject:javax.inject:1
|    |    +--- com.android.support:appcompat-v7:23.0.1
|    |    |    \--- com.android.support:support-v4:23.0.1
|    |    |         \--- com.android.support:support-annotations:23.0.1 -> 24.2.1
...
|    \--- com.android.support:palette-v7:24.+ -> 24.2.1
|         +--- com.android.support:support-compat:24.2.1
|         |    \--- com.android.support:support-annotations:24.2.1
|         \--- com.android.support:support-core-utils:24.2.1
|              \--- com.android.support:support-compat:24.2.1 (*)
+--- com.android.support:appcompat-v7:23.0.1 (*)
\--- com.facebook.react:react-native:+ -> 0.44.2 (*)

لقد جربت العديد من الحلقات ولم أتمكن من إصلاحها ، حتى غيّرت com.android.support:appcompat version في android/app/build.gradle ، أتمنى أن يساعد هذا:

dependencies {
    compile project(':react-native-palette')
    compile project(':react-native-image-picker')
    compile project(':react-native-camera')
    compile fileTree(dir: "libs", include: ["*.jar"])
    // compile "com.android.support:appcompat-v7:23.0.1"
    compile "com.android.support:appcompat-v7:24.2.1"
    compile "com.facebook.react:react-native:+"
}

يبدو أن إدخالات متعددة ليست مشكلة كبيرة ، عدم تطابق الإصدار




exclude module: 'support-v4'

لن يعمل بالنسبة لي مع الاعتماد على المشروع ، والطريقة الوحيدة التي يمكنني الحصول عليه للعمل كان عن طريق بناء الجملة التالي:

configurations {
    dependencies {
        compile(project(':Android-SDK')) {
            compile.exclude module: 'support-v4'
        }
    }
}

المكان: Android-SDK هو اسم مشروعك.




بما أن الصورة تساوي ألف كلمة

لجعل الأمر أسهل وأسرع لإنجاز هذه المهمة مع مبتدئين مثلي. هذه هي لقطات الشاشة التي تعرض الإجابة المنشورة بواسطة @ edsappfactory.com التي عملت معي:

افتح أولاً عرض Gradle على الجانب الأيمن من Androidstudio:

ثانيًا سترى شيئًا كهذا:

السبب الرئيسي في نشر هذا هو أنه لم يكن من السهل معرفة مكان تنفيذ مهمة gradle أو الأوامر المنشورة أعلاه. لذلك هذا هو المكان المناسب لهم أيضا.

SO ، لتنفيذ أمر gradle:

أول:

ثانيا:

سهل كما هو.

هذا هو.

شكرا لكم.




واجهت نفس المشكلة ، وحلّي هو تغيير إصدار الدعم '27. + '(27.1.0) إلى '27 .0.1'




حذف جميع الملفات من مخبأ Gradle ثابت مشكلتي.

على نظام التشغيل Linux:

cd ~/.gradle  
rm -R -f *



لقد تمكنت من حل جميع مشكلاتي عن طريق إضافة هذا إلى project.properties

cordova.system.library.7=com.android.support:appcompat-v7:27.1.0






Related