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




12 Answers

قم بتشغيل gradle -q dependencies (أو gradle -q :projectName:dependencies ) لإنشاء تقرير تبعية. يجب أن ترى من أين تأتي r7 ، مثل:

compile - Classpath for compiling the main sources.
+--- com.commonsware.cwac:camera-v9:0.5.4
|    +--- com.actionbarsherlock:actionbarsherlock:4.4.0
|    |    \--- com.google.android:support-v4:r7
|    +--- com.commonsware.cwac:camera:0.5.4
|    \--- com.android.support:support-v4:18.0.+ -> 18.0.0
\--- com.android.support:support-v4:18.0.+ -> 18.0.0

ثم ، استخدم الأمر exclude لمنع حظر هذه التبعية. في حالتي ، تأتي من مكتبة CWAC-Camera الخاصة بي ، ولذا استخدم:

dependencies {
    compile('com.commonsware.cwac:camera-v9:0.5.4') {
      exclude module: 'support-v4'
    }

    compile 'com.android.support:support-v4:18.0.+'
}

(حيث يشير بيان compile الثاني إلى الإصدار الذي تريده بالفعل)

سيؤدي ذلك إلى توضيح الأمور ، حيث ستعرف ما إذا كنت تدير تقرير التبعية مرة أخرى:

compile - Classpath for compiling the main sources.
+--- com.commonsware.cwac:camera-v9:0.5.4
|    +--- com.actionbarsherlock:actionbarsherlock:4.4.0
|    \--- com.commonsware.cwac:camera:0.5.4
\--- com.android.support:support-v4:18.0.+ -> 18.0.0
analyzer online

إذا قمت بتشغيل 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'
}



لاحظ أيضًا أنه يمكنك مشاهدة تبعيات android ، من خلال الانتقال إلى عرض Android Studio Gradle وتحديد الهدف "androidDependencies".

نصيحة واحدة أخرى: كنت أواجه هذه المشكلة ، حتى أزلت libs دعم v4 من مجلد libs في المشروع والمشروع / المكتبة مشروعي ذات الصلة.




في حالة اكتشاف أي شخص أنه لا يمكن تطبيق الإجابة من CommonsWare على مشروع مكتبة Android ، فإليك القصاصة لإصلاحها

compile (project (': yourAndroidLibrary')) {exclude module: 'support-v13'}

سوف تجد المشاكل

تم العثور على طريقة Gradle DSL غير مدعومة: 'exclude ()'

إذا كنت تستخدم مشروع الترجمة (': yourAndroidLibrary') {exclude module: 'support-v13'}

الاختلافات هي سوار "(" " و ") " قبل " المشروع " .




بدأت في الحصول على هذا الخطأ عند الترقية إلى ButterKnife 8.5.1. لم تنجح أي من الإجابات الأخرى هنا.

استخدمت gradle -q :app:dependencies لرؤية الشجرة ، ثم نظرت من خلال ملفات الجرة حتى وجدت الصراع. كان الصراع هو أن اعتماد butterknife على com.android.support:support-compat:25.1.0 يحتوي على نسخة من فئة إمكانية الوصول ، و com.android.support:support-v4:23.1.1 يحتوي أيضًا على الفصل.

أنا حلها عن طريق تغيير التبعية من هذا:

compile 'com.jakewharton:butterknife:8.5.1'

الى هذا:

compile('com.jakewharton:butterknife:8.5.1') {
    exclude module: 'support-compat'
}

لا يبدو أنه يؤثر على عملية ButterKnife حتى الآن.

تحرير: هناك حل أفضل ، وهو ترقية مكتبات الدعم الروبوت الخاص بي لتتناسب مع ButterKnife:

compile('com.android.support:appcompat-v7:25.2.0')
compile('com.android.support:design:25.2.0')
compile 'com.jakewharton:butterknife:8.5.1'



كان لدي هذا الخطأ نفسه ولكن كان ذلك لأنني تغيرت مؤخرا من استخدام الإصدار 4 إلى الإصدار 13. لذلك كل ما كان علي فعله هو تنظيف المشروع.




في حالتي ، حدثت المشكلة بسبب عدم تناسق الإصدار :

Build tools 25
compileSdk 24
targetSdk 24
Support library 24

كان الحل بسيطًا: اجعل كل شيء الإصدار 25




إذا قمت باستيراد مشروعك من Eclipse .

1. The select project 
2. Go to File -> **Project Structure**
3. Select app in **module** section on left hand panel
4. Select **Dependency** tab
5. Your able to see jars you have added in eclipse project for v4 and v13.
6. Remove that jar by clicking on minus sign at bottom after selection
7. Click on Plus sign select **Library Dependency** 
8. Choose V4 and V13 if added
9. Press Ok and Clean and Rebuild your project

السيناريو الذي واجهته بعد استيراد مشروع Eclipse إلى استوديو Android.

أتمنى أن يساعدك هذا..




هذه مشكلة مزعجة ، يمكن أن يستغرق بعض الوقت لمعرفة حالة الجذر. الطريقة التي ينبغي المضي بها هي إجابةCommonsWare.

واجهت هذه المشكلة مؤخرًا ووجدت صعوبة في حلها.

كانت مشكلتي أنا بما في ذلك مكتبة من قبل "+" الإصدار في build.gradle. أحدث نسخة من مكتبة تحتوي على واحد من كبار السن و dex الانفجار.

عدت إلى الإصدار الأقدم من المكتبة وحلت.

من الجيد تشغيل AndroidDependencies ومعرفة ما يحدث بالفعل. انها جيدة أيضا للبحث في مجلد البناء الخاص بك.

يوفر Android Studio 2.2 قبل كل شيء ميزات بناء لتتبع هذه المشكلة.

سعيد الترميز الرجال




قمت بإزالة الترجمة "com.android.support: support-v4:18.0.+" في التبعيات ، وهي تعمل




أخيرا ، أنا حلها تعديل هذه الصفات على ملف قاعدة لولب

  1. compileSdkVersion 25
  2. targetSdkVersion 25
  3. compile 'com.android.support:appcompat-v7:+'
  4. compile 'com.android.support:recyclerview-v7:+'



حصلت على العمل compile file('...') الصراع عن طريق زيادة minSdkVersion إلى 21 وتمكين multidex. لست متأكدا إذا كان هذا هو الحل الأفضل ، ولكن الطريقة الوحيدة التي يمكنني الحصول عليه تعمل في حالتي.

ملاحظة: compile file('...') يبدو أنه لا يمكنك وضع جملة exclude بحيث لا يكون هذا الخيار متاحًا.




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

  • appcompat-V7
  • دعم الروبوت إصدار v13

لأسباب تراثية ، تم جلب appcompat من ريبو Maven جوجل ، في حين أن الروبوت الدعم كان المحلية.

عندما استوعبت هذا ، واستبدلت هذه الإشارة المحلية بمرجع maven ، حلّت للتو مشكلة الإنشاء.

في ما يلي الاختلافات في تطبيقي / build.gradle:




Related

android gradle android-support-library android-gradle