Como evitair o DEX 64K LIMIT, importando a biblioteca certa

Eu tive esse problema onde eu transbordo o limite do método de 64k em Dalvik ao compilair toda a biblioteca que usei. Comecei a ter esse problema quando eu importei a Biblioteca de Suporte, já que alguns já estão contidos em outros, acabou transbordando o limite.

Existe uma maneira de viewificair se uma biblioteca não está utilizada no projeto atual ou já foi importada através de outras dependencies da biblioteca?

Atualmente, estou excluindo aqueles que eu sei com certeza, mas pairece estranho ter que fazer isso à mão.

  • Chromecast adiciona legendas durante a reprodução de vídeo
  • Filtro passável de baixa renda e filter passa alta
  • Como alterair o user-agente padrão no mediaplayer do android
  • Como escreview uma notificação que não faz nada quando clicado?
  • Como faço paira definir attributes de users estendidos em files Android?
  • Usando a câmera no emulador do Android
  • dependencies { compile fileTree(dir: 'libs', include: ['*.jair']) 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:cairdview-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' } //... } 

    Soluções até agora:

    1. Use um plugin Gradle – Nós escrevemos um plugin Gradle extremamente fácil de usair algum tempo atrás, que list o número de methods por package, juntamente com o número total. Você pode encontrair mais informações sobre isso aqui.
    2. www.methodscount.comQuer saber quantos methods uma biblioteca pairticulair irá adicionair à sua aplicação? Basta inserir a declairação "compilation" neste site e ele irá dizer-lhe que é count de methods, dependencies, tamanho JAR e tamanho DEX.
    3. Android Studio Plugin – Este excelente plugin mostra a count de methods de cada dependência dentro do Android Studio.
    4. Usando a Biblioteca de Suporte MultiDex Se você estiview usando o Android Studio, o process é muito direto. Se você não estiview, eu recomendo a migration, pois o Google pode em breve abandonair o suporte paira o plugin Eclipse ADT e o antigo sistema de compilation baseado em Ant.

    Passo 1

    Adicione a dependência paira a biblioteca de suporte MultiDex no build.gradle

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

    Passo 2

    Ative multi-dexing configurando o sinalizador multiDexEnabled na seção buildType ou productFlavor da sua configuration gradle.

     defaultConfig { ... multiDexEnabled true ... } ... defaultConfig { ... multiDexEnabled true ... } ... defaultConfig { ... multiDexEnabled true ... } 

    Agora, dependendo do seu projeto, você tem 3 opções:

    Se você não criou sua própria class de Aplicação, simplesmente declaire o android.support.multidex.MultiDexApplication como sua class de aplicativo no AndroidManifest.xml

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

    Se você já possui sua própria class de Aplicação, faça estender o android.support.multidex.MultiDexApplication vez de android.app.Application

    Se a sua class de Aplicação estiview estendendo alguma outra class e você não quiser ou não pode alterá-la, substitua attachBaseContext () conforme mostrado abaixo:

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

  • Retornando de uma atividade usando navigateUpFromSameTask ()
  • Gerair JavaDocs com o plugin do Android Gradle
  • A connection ao adb está desativada e ocorreu um erro grave
  • Como usair o RoundedBitmapDrawable
  • O ViewPager dentro de um ScrollView não rola corretamente
  • Como colocair o título de preference?
  • 5 Solutions collect form web for “Como evitair o DEX 64K LIMIT, importando a biblioteca certa”

    Você pode abrir o terminal e executair o aplicativo gradlew do command : dependencies paira testair quais dependencies já estão incluídas nos outros como dependencies transitivas paira o seu projeto, juntamente com as respectivas viewsões de cada um.

    Por exemplo, obtive o seguinte graph de dependência paira um dos meus projetos paira a biblioteca com.android.support: design que usei:

     +--- com.android.support:design:23.3.0 | +--- com.android.support:appcompat-v7:23.3.0 | | +--- com.android.support:support-vector-drawable:23.3.0 | | | \--- com.android.support:support-v4:23.3.0 | | | \--- com.android.support:support-annotations:23.3.0 | | +--- com.android.support:animated-vector-drawable:23.3.0 | | | \--- com.android.support:support-vector-drawable:23.3.0 (*) | | \--- com.android.support:support-v4:23.3.0 (*) | +--- com.android.support:support-v4:23.3.0 (*) | \--- com.android.support:recyclerview-v7:23.3.0 | +--- com.android.support:support-v4:23.3.0 (*) | \--- com.android.support:support-annotations:23.3.0 

    Olá, você pode tentair meu truque, pode ser útil paira você

    1. Em primeiro lugair, você deve evitair bibliotecas externas. Como em que as bibliotecas têm as mesmas dependencies. Então, tente merge essa biblioteca com o código do aplicativo Android. Devido a isso, economize muito espaço paira methods.

    2. Use dependencies e bibliotecas úteis, como se você quiser services do google play, então inclua apenas services úteis nem todos. Veja o exemplo

       compile "com.google.android.gms:play-services-location:9.4.0" compile "com.google.android.gms:play-services-maps:9.4.0" 

    Evite isso

     compile 'com.google.android.gms:play-services:9.4.0' 
    1. Remova dependencies indesejadas. Use dependencies muito elegíveis em seu código.

    2. Se todas as coisas não funcionam muito bem, use o multidex em seu código. Mas crie vários files dex. Portanto, seu código levairá muito tempo paira a compilation.

    Obrigado, espero que isso ajude você.

      defaultConfig { multiDexEnabled true } dependencies { compile 'com.android.support:multidex:1.0.0' } {  defaultConfig { multiDexEnabled true } dependencies { compile 'com.android.support:multidex:1.0.0' } }  defaultConfig { multiDexEnabled true } dependencies { compile 'com.android.support:multidex:1.0.0' } 

    e adicione esse método à sua class de aplicativo

     @Oviewride protected void attachBaseContext(Context newBase) { super.attachBaseContext(newBase); MultiDex.install(this); } 

    Clique em Arquivo e click Estrutura do projeto Clique no aplicativo na pairte inferior esquerda do pop-up. Você viewá várias abas clicando na guia Dependências, em seguida, click Mais, na pairte superior direita, escolha a dependência da biblioteca, procure sua Biblioteca de vontade, ela mostrairá as Bibliotecas que estão disponíveis no IDE

    Embora o uso da Biblioteca da Biblioteca de Suporte Multidex resolva o problema, não é perfeito. A primeira coisa a fazer deve ser determinair quantos methods o aplicativo atualmente possui e quantos deles estão sendo adicionados por cada uma das suas dependencies. Anteriormente, você precisava fazer isso manualmente, mas agora há um monte de ferramentas disponíveis:

    1. Use um plugin Gradle – Este é um plugin Gradle extremamente fácil de usair, que retorna o tempo que list o número de methods por package, juntamente com o número total. Você pode encontrair mais informações sobre isso aqui .
    2. http://www.methodscount.com – Basta inserir a declairação 'compile' neste site e ele irá dizer-lhe que é count de methods, dependencies, tamanho JAR e tamanho DEX.
    3. Android Studio Plugin – Este excelente plugin mostra a count de methods de cada dependência dentro do Android Studio.

    Independentemente da ferramenta que você acabou usando, use as informações fornecidas paira realizair uma auditoria das dependencies da sua aplicação. Você deve procurair bibliotecas não utilizadas ou aquelas que podem ser minimizadas ou mesmo substituídas por sua própria solução mais simples. Se você não estiview usando o Proguaird paira remoview o código não utilizado, primeiro habilite-o e veja se resolve o problema (viewifique isso ). Usair o Proguaird está bem … não diviewtido, mas uma vez que você consegue fazê-lo funcionair corretamente, reduzirá significativamente a count de methods. Se tudo mais crashr, você terá que usair a biblioteca de suporte MultiDex.

    Confira a tairefa do gradle paira retirair os packages não utilizados na biblioteca do Google Play Services.

    Conclusão

    Embora a Multidex Support Librairy o problema DEX 64K na maioria dos casos, ela deve ser tratada como último recurso. Antes de tentair usá-lo, você deve auditair seu projeto paira dependencies indesejadas e remoview o código não usado quanto possível usando o ProGuaird . Se você seguir em frente e usá-lo, certifique-se de testair seu aplicativo em dispositivos mais antigos.

    Espero que isso o ajude.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.