Dependencia de Gradle que causa el error "Número mágico no válido"

Tengo un proyecto en GitHub en el que trabajo tanto en la oficina en casa. Durante aproximadamente 2 meses funcionó bien en ambas máquinas. Luego, hace dos semanas, dejó de funcionar en la PC de mi casa, pero aún funciona bien en mi PC de trabajo .

Este es el error que obtengo:

: aplicación: shrinkDebugMultiDexComponents FAILED

FALLO: la compilation falló con una exception.

  • Qué salió mal: Error de ejecución para la tarea ': aplicación: shrinkDebugMultiDexComponents'. java.io.IOException: No se puede leer [D: \ dev \ gitRepo \ app \ android \ app \ build \ intermedios \ multi-dex \ debug \ allclasses.jar] (No se puede procesar la class [__MACOSX / com / stripe /android/._BuildConfig.class] (Número mágico no válido [51607] en class))
  • Prueba: ejecuta con la opción –stacktrace para get el seguimiento de la stack. Ejecutar con la opción –info o –debug para get más resultados de logging.

El package de stripe que me está dando errores es una biblioteca de terceros que puedes encontrar aquí . Lo incluyo como una dependencia en mi file build.gradle exactamente como dicen.

 compile 'com.stripe:stripe-android:+' 

He comentado todo el código perteneciente a la stripe y la aplicación funciona completamente bien, así que sé que tiene algo que ver con la forma en que estoy manejando ese package.

Lamentablemente, no recuerdo exactamente lo que hice para que esto deje de funcionar. Creo que la semana anterior a esto sucedió que actualicé Android Studio y pasé una cantidad considerable de time jugando con las configuraciones de ProGuard .

Lo que he intentado:

  • Trabajando en la twig master donde no se han realizado cambios en ProGuard .
  • Desinstalar y volver a instalar Android Studio
  • Re-clonando el git repo
  • Instalar API 17 (stripe for eclipse requiere esto. No Studio, pero le di una oportunidad).
  • Contactar al service de atención al cliente de Stripe pero no tenían idea.
  • Esta publicación de desbordamiento de stack . Sin embargo, no hay una computadora Mac que haya tocado el proyecto ni he comprimido personalmente nada relacionado con la 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 twig completamente diferente a cualquier trabajo de Proguard, con una installation limpia de AndroidStudio, con un clon de repository limpio, y el proyecto sigue funcionando bien cuando estoy en la oficina.

EDITAR

Estoy ejecutando esto en Depuración BuildType. Estos son mis 3 files de gradle. El primero es para todo el Proyecto, el segundo es para el Módulo de Aplicación, y el tercero es para un Módulo de biblioteca Android local.

Proyecto build.gradle : buildscript {repositories {jcenter () maven {url ' http://download.crashlytics.com/maven '}} dependencies {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 aplicación para 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 Android local 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 descubrí que Java 8 se utilizó para la compilation. Cuando cambié a Java 7, se solucionó este problema de compilation.

En Android Studio ve a

 File -> Project Structure -> SDK Location 

La JDK Location debe ser Java 1.7.x (Java 7)

Sí, verifique que ambas máquinas tengan la misma versión de Java y, de hecho, la misma versión de Android Studio. La única otra cosa en la que puedo pensar es que quizás Stripe está usando las herramientas de compilation incluidas con AS para build tu apk, y las que tienes instaladas por defecto difieren ligeramente y te falta algo – mira esta publicación que hice sobre un problema similar I tenía .