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:

: 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 en ProGuard .
  • 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' } 

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

  • Android - Proguard error duplicado de entrada zip
  • ¿Cómo configurar Proguard en Android Studio?
  • Pase 1.1.3 - Proguard
  • Google Analytics vuelve a consultar Proguard
  • Con ProGuard, ¿cuál es el impacto en la estrategia de pruebas?
  • Anular correctamente las opciones de proguard
  • Configuración de Google Play Services v23 Proguard
  • Proguard Parámetro del tipo que falta
  • ¿Cómo ofuscar sólo un poco de clase o un solo paquete?
  • "No se puede encontrar la clase referenciada" con Proguard y Kotlin
  • ProGuard falla después de actualizar Google Play Services a la versión 5.0 (revisión 18)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.