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