studio decompilar android multidex android-multidex

android - decompilar - Error: no se pueden ajustar las clases solicitadas en un solo archivo dex. Intente proporcionar una lista main-dex.#métodos: 72477> 65536



decompilar apk android studio (17)

Quiero agregar servicios de ubicación fusionados pero me muestra algún error. Ayuadame.

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''


El uso de soporte multidex debería ser el último recurso. De forma predeterminada, Gradle Build recopilará una tonelada de dependencias transitivas para su APK. Como se recomienda en Google Developers Docs , primero intente eliminar las dependencias innecesarias de su proyecto.

Usando la línea de comando navegue a la raíz de proyectos de Android. Puede obtener el árbol de dependencia de compilación de la siguiente manera.

gradlew app:dependencies --configuration debugCompileClasspath

Puedes obtener la lista completa del árbol de dependencias

gradlew app:dependencies

Luego, elimine las dependencias innecesarias o transitivas de su aplicación build.gradle. Como ejemplo, si su aplicación utiliza una dependencia llamada ''com.google.api-client'', puede excluir las bibliotecas / módulos que no necesita.

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'' }

Luego, en Android Studio, seleccione Crear> Analizar APK ... Seleccione el archivo APK de liberación / depuración para ver el contenido. Esto le dará los métodos y referencias que se cuentan a continuación.


En construcción: aplicación

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''


En el archivo de compilación de Gradle, agregue dependencia:

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

o

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

o

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

Y luego, en la sección "defaultConfig", agregue:

multiDexEnabled true

Bajo targetSdkVersion

minSdkVersion 17 targetSdkVersion 27 multiDexEnabled true

Ahora si encuentras este error

Error: no se pudo resolver: archivo abierto de instrumentación multidex

Necesitas cambiar tu gradle a 3.0.1

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

Y ponga el siguiente código en el archivo gradle-wrapper.properties

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

Finalmente

agregue la aplicación de clase en el proyecto y preséntela en el AndroidManifest que se extiende desde MultiDexApplication

public class App extends MultiDexApplication { @Override public void onCreate( ) { super.onCreate( ); }

}

Ejecute el proyecto primero para crear un error, luego limpie el proyecto

Finalmente, reinicie el proyecto y disfrútelo


He encontrado este error dos veces y la solución para esto es; Verifique el archivo gradle de su aplicación para ver su SDk de destino, si es 20 o superior, simplemente agregue una línea a su defaultconfig { multiDexEnabled true }

De lo contrario, si su targetSDK es inferior a 20, agregue la línea a su configuración predeterminada y también agregue una dependencia

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

Mira este enlace para más información.

developer.android.com/studio/build/multidex#mdex-gradle


Hola problema esta aqui eliminarlo

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

¿por qué?

Nota: No use el objetivo combinado de servicios de juego. Trae docenas de bibliotecas, hinchando su aplicación. En su lugar, especifique solo las API de servicios de Google Play específicas que utiliza su aplicación.

Y usa lo que necesitas. https://developers.google.com/android/guides/setup

Me gusta para el servicio de localización

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

Para mensajería en la nube

com.google.android.gms:play-services-gcm:11.8.0


Ninguna de las respuestas que te dieron fue exhaustiva. El problema radica en el Multidex. Debe agregar la biblioteca en la aplicación gradle:

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

Después, agregue la configuración predeterminada de la aplicación gradle:

multiDexEnabled true

Su aplicación debe ser del tipo Multidex. Debe escribirla en el manifiesto:

android:name=".MyApplication"

"MyApplication" debe ser la clase Multidex o debe extenderla.


No tengo idea de por qué, tal vez sea porque me desarrollo en Kotlin, pero para solucionar este error finalmente tengo que crear una clase que extienda MultiDexApplication esta manera:

class MyApplication : MultiDexApplication() { }

y en mi Manifest.xml tengo que configurar

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

para no confundir a nadie, yo también hago:

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

para androidx, esto también funciona para mí:

implementation ''androidx.multidex:multidex:2.0.0''

...

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

no funciona para mi


Puedes seguir developer.android.com/studio/build/multidex .

Las versiones de la plataforma anteriores a Android 5.0 (API nivel 21) usan el tiempo de ejecución Dalvik para ejecutar el código de la aplicación. Por defecto, Dalvik limita las aplicaciones a un solo archivo de código de bytes classes.dex por APK. Para evitar esta limitación, puede agregar la biblioteca de soporte multidex a su proyecto:

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

Si su minSdkVersion está configurado en 21 o superior, todo lo que necesita hacer es configurar multiDexEnabled en verdadero en su archivo build.gradle de nivel de módulo, como se muestra aquí:

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


Si está creando APK DEBUG , simplemente agregue:

debug { multiDexEnabled true }

dentro de buildTypes

y si está multiDexEnabled true RELEASE APK , agregue multiDexEnabled true en el bloque de lanzamiento como-

release { ... multiDexEnabled true ... }


Si está utilizando minifyEnabled con Proguard, es probable que no necesite habilitar multi-dex. Estoy de acuerdo con MG Developer en que debe intentar evitar multi-dex si es posible. Mi solución fue habilitar multi-dex solo para compilaciones de depuración. minifyEnabled resuelve el problema de las versiones de lanzamiento

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 } }


Solo haz lo siguiente:

build.gradle

(module:app) android { .... defaultConfig { multiDexEnabled true // enable mun } }

Y agregue la siguiente dependencia en su archivo de nivel de aplicación build.gradle

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


Solucioné mi problema con la solución a continuación:

En el archivo de compilación de Gradle, agregue dependencia:

implementación ''com.android.support:multidex:1.0.3''

Y luego, en la sección "defaultConfig", agregue:

multiDexEnabled true


Tienes demasiados métodos para contar. El archivo dex de Android tiene un límite de 65536 métodos que puede tener.

Para empezar, si no necesita todos los servicios de Google Play API y solo la ubicación, reemplace

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

con

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

Puede consultar esta página para ver formas de evitarla o, si es necesario, permitir más: https://developer.android.com/studio/build/multidex.html


Todo lo que tenía que hacer era establecer la Versión mínima del SDK en 21 en Archivo> Estructura del proyecto> Aplicación> Sabores


modifique build.gradle su aplicación o módulo

android { defaultConfig { ... minSdkVersion 21 <----- *here targetSdkVersion 26 multiDexEnabled true <------ *here } ... }

De acuerdo con la documentación oficial

Soporte Multidex para Android 5.0 y superior

Android 5.0 (API nivel 21) y superior utiliza un tiempo de ejecución llamado ART que admite de forma nativa cargar múltiples archivos DEX desde archivos APK. ART realiza la precompilación en el momento de la instalación de la aplicación, que busca archivos classN.dex y los compila en un único archivo .oat para que el dispositivo Android lo ejecute. Por lo tanto, si su minSdkVersion es 21 o superior, no necesita la biblioteca de soporte multidex.

Para obtener más información sobre el tiempo de ejecución de Android 5.0, lea ART y Dalvik.

developer.android.com/studio/build/multidex


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

Intente agregar esto en la configuración predeterminada de su aplicación {}. Esto me ayuda a resolver el problema