Как избежать DEX 64K LIMIT, импортируя нужную библиотеку

У меня была эта проблема, где я переполняюПредел метода 64k в Dalvik при компиляции всей библиотеки, которую я использовал. У меня возникла эта проблема, когда я импортировал библиотеку поддержки, так как некоторые из них уже содержатся в других, в результате переполнение лимита.

Есть ли способ проверить, не используется ли библиотека в текущем проекте или уже импортирована через другие зависимости библиотеки?

В настоящее время я исключаю тех, кого знаю наверняка, но кажется странным, что приходится делать это вручную.

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:multidex:1.0.1'
    compile "com.android.support:percent:${supportLibVersion}"
    compile("com.android.support:design:${supportLibVersion}") {
        exclude module: 'support-v4'
    }
    compile("com.android.support:cardview-v7:${supportLibVersion}") {
        exclude module: 'support-v4'
    }

    compile('com.github.nkzawa:socket.io-client:0.4.1') {
        exclude group: 'org.json', module: 'json'
    }
    compile('com.astuetz:pagerslidingtabstrip:1.0.1') {
        exclude module: 'support-v4'
    }
//...
}
Решения на данный момент:Используйте плагин Gradle - Некоторое время назад мы написали чрезвычайно простой в использовании плагин Gradle, который перечисляет количество методов по пакетам вместе с общим количеством. Вы можете найти больше информации об этом здесь.www.methodscount.com Хотите знать, сколько методов конкретная библиотека добавит в ваше приложение? Просто введите оператор «compile» на этом веб-сайте, и он скажет вам, что это число методов, зависимости, размер JAR и размер DEX.Плагин для Android Studio - Этот отличный плагин показывает количество методов каждой зависимости прямо в Android Studio.Использование библиотеки поддержки MultiDex Если вы используете Android Studio, процесс очень прост. Если это не так, я настоятельно рекомендую выполнить миграцию, поскольку Google может вскоре отказаться от поддержки плагина Eclipse ADT и старой системы сборки на основе Ant.

Шаг 1

Добавьте зависимость для библиотеки поддержки MultiDex в ваш build.gradle

dependencies { 
... 
   compile 'com.android.support:multidex:' 
   ... 
}

Шаг 2

Включите мультидексинг, установив флаг multiDexEnabled в разделе buildType или productFlavor вашей конфигурации gradle.

defaultConfig { 
   ... 
multiDexEnabled true 
... 
}

Теперь в зависимости от вашего проекта у вас есть 3 варианта:

Если вы не создали свой собственный класс Application, просто объявитеandroid.support.multidex.MultiDexApplication как класс вашего приложения вAndroidManifest.xml

   .... 
   android:name="android.support.multidex.MultiDexApplication" 
   ... 

Если у вас уже есть собственный класс Application, сделайте его расширеннымandroid.support.multidex.MultiDexApplication вместоandroid.app.Application

Если ваш класс Application расширяет какой-либо другой класс, и вы не хотите или не можете его изменить, переопределите метод attachBaseContext (), как показано ниже:

public class MyApplication extends FooApplication { 
   @Override 
   protected void attachBaseContext(Context base) { 
      super.attachBaseContext(base); 
      MultiDex.install(this); 
   } 
}

Ответы на вопрос(5)

Ваш ответ на вопрос