support - multidex version android




Erro: Não é possível ajustar as classes solicitadas em um único arquivo dex.Tente fornecer uma lista de dex principal.#métodos: 72477> 65536 (12)

Apenas faça o seguinte:

build.gradle

(module:app)


android {
            ....
      defaultConfig {
              multiDexEnabled true // enable mun
      }
}

E adicione a dependência abaixo em seu arquivo de nível de aplicativo build.gradle

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

Eu quero adicionar serviços de localização fundidos, mas isso me mostra algum erro. Ajude-me.

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion "27.0.1"
    defaultConfig {
        applicationId "com.example.adil.bloodbankapplication"
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:26.1.0'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.google.firebase:firebase-auth:11.8.0'
    compile 'com.google.firebase:firebase-database:11.8.0'
    compile 'com.android.support:support-v4:26.1.0'
    compile 'junit:junit:4.12'
    compile 'com.android.support:design:26.1.0'
    compile 'com.github.joielechong:countrycodepicker:2.1.5'
    compile 'com.jaredrummler:material-spinner:1.2.4'
    compile 'hanks.xyz:htextview-library:0.1.5'
    compile 'com.firebaseui:firebase-ui-database:1.2.0'
    compile 'com.google.android.gms:play-services:11.8.0'
}


apply plugin: 'com.google.gms.google-services'

Corrigi o meu problema com a solução abaixo:

No arquivo de compilação Gradle, adicione dependência:

implementação 'com.android.support:multidex:1.0.3'

E, em seguida, na seção "defaultConfig", adicione:

multiDexEnabled true


Eu não tenho idéia porque, talvez seja porque eu desenvolvo no Kotlin mas para corrigir esse erro eu finalmente tenho que criar uma classe que estenda o MultiDexApplication assim:

class MyApplication : MultiDexApplication() {
}

e no meu Manifest.xml eu tenho que definir

<application
        ...
        android:name=".MyApplication">

para não confundir ninguém, eu também faço:

multiDexEnabled true
implementation 'com.android.support:multidex:1.0.3'

para androidx, isso também funciona para mim:

implementation 'androidx.multidex:multidex:2.0.0'

...

<application android:name="android.support.multidex.MultiDexApplication">

Nao funciona para mim


Na compilação: app

apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
    applicationId "com.proyecto.marketdillo"
    minSdkVersion 14
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
  }
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0-rc02'
implementation 'com.google.firebase:firebase-core:16.0.7'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:support-v4:28.0.0-rc02'
implementation 'com.android.support:design:28.0.0-rc02'
implementation 'com.google.firebase:firebase-auth:16.1.0'
implementation 'com.squareup.picasso:picasso:2.5.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.google.firebase:firebase-firestore:17.1.5'
implementation 'com.android.support:multidex:1.0.3'
}
apply plugin: 'com.google.gms.google-services'

No arquivo de compilação Gradle, adicione dependência:

implementation 'com.android.support:multidex:1.0.2'

ou

implementation 'com.android.support:multidex:1.0.3'

ou

implementation 'com.android.support:multidex:2.0.0'

E, em seguida, na seção "defaultConfig", adicione:

multiDexEnabled true

Sob targetSdkVersion

   minSdkVersion 17
    targetSdkVersion 27
    multiDexEnabled true

Agora, se você encontrar esse erro

Erro: Falha ao resolver: arquivo aberto de instrumentação multidex

Você precisa mudar seu gradle para 3.0.1

        classpath 'com.android.tools.build:gradle:3.0.1'

E coloque o seguinte código no arquivo gradle-wrapper.properties

distributionUrl = https: //services.gradle.org/distributions/gradle-4.1-all.zip

Finalmente

adicionar classe Applition no projeto E apresentá-lo ao AndroidManifest que é extendido a partir do MultiDexApplication

public class App extends MultiDexApplication {

@Override
public void onCreate( ) {
    super.onCreate( );
}

}

Execute o projeto primeiro para criar um erro e limpe o projeto

Finalmente, reinicie o projeto e aproveite


O uso de suporte multidimensional deve ser o último recurso. Por padrão, o gradle build irá coletar uma tonelada de dependências transitivas para o seu APK. Conforme recomendado no Google Developers Docs , primeiro tente remover dependências desnecessárias do seu projeto.

Usando a linha de comando, navegue até a raiz de projetos Android. Você pode obter a árvore de dependência de compilação da seguinte maneira.

gradlew app:dependencies --configuration debugCompileClasspath

Você pode obter lista completa da árvore de dependência

gradlew app:dependencies

Em seguida, remova as dependências desnecessárias ou transitivas do seu app build.gradle. Por exemplo, se seu aplicativo usar dependência chamada 'com.google.api-client', você poderá excluir as bibliotecas / módulos dos quais não precisa.

implementation ('com.google.api-client:google-api-client-android:1.28.0'){
   exclude group: 'org.apache.httpcomponents'
   exclude group: 'com.google.guava'
   exclude group: 'com.fasterxml.jackson.core'
   }

Em seguida, no Android Studio, selecione Construir> Analisar APK ... Selecione o arquivo APK de lançamento / depuração para ver o conteúdo. Isso fornecerá os métodos e referências contados a seguir.


Se você está construindo o DEBUG APK , basta adicionar:

debug {
            multiDexEnabled true
        }

dentro de buildTypes

e se você estiver criando o RELEASE APK , adicione multiDexEnabled true no bloco de liberação multiDexEnabled true

release {
                ...
                multiDexEnabled true
                ...
        }

Se você estiver usando o minifyEnabled com o Proguard, provavelmente não precisará ativar o multi-dex. Eu concordo com o MG Developer que você deve tentar evitar multi-dex se possível. Minha solução foi habilitar o multi-dex somente para compilações de depuração. minifyEnabled resolve o problema para versões de lançamento

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        // getting error: Cannot fit requested classes in a single dex file.  # methods: 65537 > 65536
        // https://developer.android.com/studio/build/multidex
        // minifyEnabled true (used with release) will fix this by getting rid of unused method calls, but this will hide debugging info on crash
        multiDexEnabled true
    }
}

Você pode seguir developer.android.com/studio/build/multidex .

Versões da plataforma anteriores ao Android 5.0 (API level 21) usam o runtime Dalvik para executar o código do aplicativo. Por padrão, o Dalvik limita os aplicativos a um único arquivo bytecode classes.dex por APK. Para contornar essa limitação, você pode adicionar a biblioteca de suporte multidex ao seu projeto:

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

Se sua minSdkVersion estiver configurada como 21 ou superior, tudo o que você precisa fazer é definir multiDexEnabled como true em seu arquivo build.gradle de nível de módulo, conforme mostrado aqui:

android {
    defaultConfig {
        ...
        minSdkVersion 21 
        targetSdkVersion 28
        multiDexEnabled true
    }
    ...
}

Você tem muitos métodos para contar. O arquivo Android dex tem um limite de 65536 métodos que você pode ter.

Para começar, se você não precisa de toda a API de serviços do Google Play e apenas o local, substitua

compile 'com.google.android.gms:play-services:11.8.0'

com

compile 'com.google.android.gms:play-services-location:11.8.0'

Você pode consultar esta página para formas de evitá-lo ou, se necessário, permitir mais: https://developer.android.com/studio/build/multidex.html


android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.dev.khamsat"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 1
        versionName "2.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }

multiDexEnabled true

Por favor, tente adicionar isso em seu aplicativo defaultConfig {}. Isso me ajuda a resolver o problema