support - learn how to resolve this issue at https developer android com tools building multidex html




Como ativar o multidexing com a nova biblioteca de suporte do Android Multidex (8)

Desejo usar a nova biblioteca de suporte Multidex para quebrar o limite do método para um dos meus aplicativos.

Com o Android Lollipop, o Google introduziu uma biblioteca de suporte multidex que facilita o multidex.

Quais etapas são necessárias para usar esta biblioteca e criar meu aplicativo com suporte multidex?


Adicione ao AndroidManifest.xml:

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

OU

MultiDex.install(this);

no método attachBaseContext do seu aplicativo personalizado

ou seu aplicativo personalizado estende o MultiDexApplication

adicione multiDexEnabled = true em seu build.gradle

defaultConfig {
    multiDexEnabled true
}

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

As etapas a seguir são necessárias para iniciar o multi dexing:

Adicione android-support-multidex.jar ao seu projeto. O jar pode ser encontrado na pasta SDK do Android / sdk / extras / android / support / multidex / library / libs

Agora você permite que a classe de aplicativos do seu aplicativo estenda o MultiDexApplication

public class MyApplication extends MultiDexApplication

ou você substitui o attachBaseContext assim:

protected void attachBaseContext(Context base) {
 super.attachBaseContext(base);
 MultiDex.install(this);
}

Eu usei a abordagem de substituição, porque isso não interfere na hierarquia de classes da sua classe de aplicativo.

Agora seu aplicativo está pronto para usar o multi dex. O próximo passo é convencer a Gradle a criar um apk multi dexed. A equipe de ferramentas de construção está trabalhando para facilitar isso, mas, por enquanto, você precisa adicionar o seguinte à parte android do build de seus aplicativos.

   dexOptions {
      preDexLibraries = false
   }

E o seguinte para a parte geral de seus aplicativos build.gradle

afterEvaluate {
   tasks.matching {
      it.name.startsWith('dex')
   }.each { dx ->
      if (dx.additionalParameters == null) {
         dx.additionalParameters = ['--multi-dex']
      } else {
         dx.additionalParameters += '--multi-dex'
      }
   }
}

Mais informações podem ser encontradas no blog de Alex Lipovs .


No seu build.gradle, adicione esta dependência:

compile 'com.android.support:multidex:1.0.1'

novamente em seu arquivo build.gradle, adicione esta linha ao bloco defaultConfig :

multiDexEnabled true

Em vez de estender sua classe de aplicativo de Aplicativo, estenda-a de MultiDexApplication ; gostar :

public class AppConfig extends MultiDexApplication {

agora você está pronto para ir! E, caso você precise, tudo o que o MultiDexApplication faz é

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

Primeiro você deve tentar com o Proguard (isso limpa todo o código não utilizado)

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

Se você deseja ativar o multi-dex em seu projeto, basta ir para gradle.builder

e adicione isso na sua dependência

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

então você tem que adicionar

 defaultConfig {
...
minSdkVersion 14
targetSdkVersion 21
...

// Enabling multidex support.
multiDexEnabled true}

Em seguida, abra uma classe e estenda-a para Application. Se o seu aplicativo usa estende a classe Application, você pode substituir o método oncrete () e chamar

   MultiDex.install(this) 

para ativar o multidex.

e finalmente adicione ao seu manifesto

 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.multidex.myapplication">
    <application
   ...
     android:name="android.support.multidex.MultiDexApplication">
   ...
   </application>
 </manifest> 

apenas adicionando isso cortado no build.gradle também funciona bem

android {
   compileSdkVersion 22
   buildToolsVersion "23.0.0"

     defaultConfig {
         minSdkVersion 14 //lower than 14 doesn't support multidex
         targetSdkVersion 22

         **// Enabling multidex support.
         **multiDexEnabled true****
     }
}

Editar:

O Android 5.0 (nível de API 21) e superior usa ART, que suporta nativamente multidexing. Portanto, se seu minSdkVersion for 21 ou superior, a biblioteca de suporte multidex não será necessária.

Modifique seu build.gradle :

android {
    compileSdkVersion 22
    buildToolsVersion "23.0.0"

         defaultConfig {
             minSdkVersion 14 //lower than 14 doesn't support multidex
             targetSdkVersion 22

             // Enabling multidex support.
             multiDexEnabled true
         }
}

dependencies {
    implementation 'com.android.support:multidex:1.0.3'
}

Se você estiver executando testes de unidade, inclua isso na classe Application :

public class YouApplication extends Application {

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }

}

Ou apenas faça sua classe de application estender o MultiDexApplication

public class Application extends MultiDexApplication {

}

Para mais informações, este é um bom guia.


Etapa 1: Alterar build.grade

defaultConfig {
    ...
    // Enabling multidex support.
    multiDexEnabled true
}

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

Etapa 2: configuração na classe Application

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        MultiDex.install(this);
    }
}

Etapa 3: Alterar grade.properties

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

Vai funcionar!. Obrigado.





android-multidex