Dependencia de Gradle que causa error "Número mágico inválido"
Tengo un proyecto en GitHub que trabajo en ambos en la oficina en casa. Durante unos 2 meses estaba funcionando bien en ambas máquinas. Luego hace dos semanas, dejó de correr en mi PC de casa, pero aún funciona bien en mi PC de trabajo .
Este es el error que obtengo:
- Android - proguard error en el android studio
- Cómo configurar proguard para eliminar SOLAMENTE llamadas de registro de android
- Android apk Modo de depuración funciona bien, pero el modo de liberación da demasiadas advertencias
- Proguard mess Javascript Funciones de interfaz al orientar SDK en Android Manifiesto por encima de 17
- Proguard no puede encontrar la clase referenciada com.google.ads.internal.state.AdState
: App: shrinkDebugMultiDexComponents FALLADO
FALLA: La generación falló con una excepción.
- Lo que salió mal: La ejecución falló para la tarea ': app: shrinkDebugMultiDexComponents'. Java.io.IOException: No se puede leer la clase [__MACOSX / com / stripe [D: \ dev \ gitRepo \ app \ android \ app \ build \ intermedios \ multi-dex \ debug \ allclasses.jar] /android/._BuildConfig.class] (Número mágico inválido [51607] en clase))
- Intente: Ejecutar con la opción –stacktrace para obtener el seguimiento de la pila. Ejecutar con –info o –debug opción para obtener más salida de registro.
El paquete de stripe
que me está dando errores es una biblioteca de terceros que puede encontrar aquí . Lo lista como una dependencia en mi archivo build.gradle exactamente como dicen.
compile 'com.stripe:stripe-android:+'
He comentado todo el código perteneciente a la stripe
y la aplicación se ejecuta completamente bien, así que sé que tiene algo que ver con cómo estoy manejando ese paquete.
Desafortunadamente no recuerdo exactamente lo que había hecho para que esto dejara de funcionar. Creo que la semana anterior a esto sucedió, actualizé Android Studio y pasé una cantidad considerable de tiempo jugando con las configuraciones de ProGuard
.
Lo que he intentado:
- Trabajar en la sucursal
master
en la que no se han realizado cambios enProGuard
. - Desinstalación y reinstalación de Android Studio
- Re-clonación del reporte git
- La instalación de API 17 (stripe para eclipse requiere esto. No Studio, pero le di una oportunidad).
- Contactando stripe atención al cliente pero no tenían idea.
- Este puesto de desbordamiento de pila . Sin embargo, no hay una computadora Mac que haya tocado el proyecto ni personalmente he zipado nada relacionado con
stripe
. - Desde aquí , convirtió el número mágico de Hex a ASCII. El resultado fue Q que no reconozco.
Creo que puede tener algo que ver con algo que hice para ProGuard, pero no entiendo cómo. Estoy en una rama completamente diferente a cualquier trabajo de Proguard, con una instalación de AndroidStudio limpia, con un clon de repositorio limpio, y el proyecto sigue funcionando bien cuando estoy en la oficina.
EDITAR
Estoy ejecutando esto en el debug
BuildType. Estos son mis 3 archivos gradle. El primero es para todo el Proyecto, el segundo para el Módulo de Aplicación y el tercero para un Módulo de biblioteca android local.
Proyecto build.gradle
: buildscript {repositories {jcenter () maven {url ' http://download.crashlytics.com/maven '}} dependencias {classpath 'com.android.tools.build:gradle:1.2.3' classpath ' Com.crashlytics.tools.gradle: crashlytics-gradle: 1. + '}}
allprojects { repositories { jcenter() maven{ url 'http://download.crashlytics.com/maven' } } }
Módulo de aplicaciones de Android build.gradle
buildscript { repositories { maven { url 'https://maven.fabric.io/public' } } dependencies { classpath 'io.fabric.tools:gradle:1.+' } } apply plugin: 'com.android.application' apply plugin: 'io.fabric' repositories { maven { url 'https://maven.fabric.io/public' } } android { compileSdkVersion 22 buildToolsVersion "22.0.1" defaultConfig { applicationId "com.app.android" renderscriptTargetApi 19 renderscriptSupportModeEnabled true minSdkVersion 16 targetSdkVersion 22 multiDexEnabled = true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' buildConfigField 'Boolean', 'enableCrashlytics', 'true' } debug { buildConfigField 'Boolean', 'enableCrashlytics', 'false' } adhoc { debuggable true signingConfig signingConfigs.debug buildConfigField 'Boolean', 'enableCrashlytics', 'true' } } packagingOptions { exclude 'META-INF/DEPENDENCIES.txt' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' exclude 'META-INF/NOTICE' exclude 'META-INF/LICENSE' exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/notice.txt' exclude 'META-INF/license.txt' exclude 'META-INF/dependencies.txt' exclude 'META-INF/LGPL2.1' } } dependencies { compile project(':localLibrary') compile 'com.facebook.android:facebook-android-sdk:3.21.1' compile 'commons-io:commons-io:2.4' compile 'com.github.bumptech.glide:glide:3.6.1' compile 'com.android.support:support-v4:22.0.1' compile 'com.google.android.gms:play-services-identity:8.1.0' compile 'com.google.android.gms:play-services-plus:8.1.0' compile 'com.google.android.gms:play-services-maps:8.1.0' compile 'com.android.support:multidex:1.0.1' compile 'io.card:android-sdk:5.0.1' compile 'com.stripe:stripe-android:+' compile('com.crashlytics.sdk.android:crashlytics:2.5.2@aar') { transitive = true; } }
Módulo de biblioteca local de Android build.gradle
apply plugin: 'com.android.library' android { compileSdkVersion 22 buildToolsVersion "22.0.1" defaultConfig { minSdkVersion 16 targetSdkVersion 22 multiDexEnabled = true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } } dependencies { compile 'com.android.support:support-v4:22.1.0' compile 'com.google.code.gson:gson:2.2.2' compile 'com.android.support:multidex:1.0.0' compile group: 'org.apache.httpcomponents' , name: 'httpmime' , version: '4.3.5' compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5' }
- Proguard eliminando anotaciones en la aplicación de Android
- Cómo mantener a mi clase de ofuscar por proguard
- ¿Cómo configurar Proguard para eliminar mensajes no triviales de registro?
- Proguard warning: la configuración mantiene el punto de entrada ... pero no la clase descriptor
- ¿Cómo construyo un proyecto de Android usando Ant? (IntelliJ IDE)
- Proguard, clase de biblioteca depende de la clase del programa
- Problema Proguard para la biblioteca mupdf
- ¿Cómo hacer que Proguard ignore las bibliotecas externas?
Este problema probablemente está relacionado con la versión de Java que está ejecutando. Tuve un problema similar y descubrió que Java 8 se utilizó para la compilación. Cuando cambié a Java 7, este problema de compilación fue corregido.
En Android Studio vaya a
File -> Project Structure -> SDK Location
La JDK Location
debe ser Java 1.7.x (Java 7)
Sí comprobar ambos equipos tienen la misma versión de Java, y de hecho la misma versión de Android Studio. La única otra cosa que puedo pensar es que tal vez Stripe está utilizando las herramientas de construcción incluido con AS para construir su apk, y los que se han instalado por defecto difieren ligeramente y faltan algo – ver esta entrada he hecho en un problema similar I Había
- ¿Cómo conseguir la altura del texto con el ancho fijo y conseguir la longitud del texto que cabe en un marco?
- ¿Qué parte posterior de la base de datos de la nube debo utilizar para mi aplicación de Android?