2017-02-10 1 views
5

J'ai un projet android dans Android 2.3.0 beta4 studio qui dépend d'un projet de bibliothèque CoolLib.(entrée zip double [coolLib.jar: {pkg} /BuildConfig.class]))

CoolLib a sa source dans un fichier jar coolLib.jar dans son dossier libs. coolLib.jar contient le fichier {pkg} /BuildConfig.class. Lorsque j'essaie de générer et d'exécuter le projet dans un périphérique/émulateur sur Android API-22 +, il fonctionne parfaitement mais quand j'essaie de faire la même chose sur un périphérique/émulateur à l'API VERSION < 22, Android Studio échoue de construire avec un Exception--

Attention: Exception lors du traitement de la tâche java.io.IOException: Impossible d'écrire [D: \ AndroidStudioProjects \ CoolProject \ app \ build \ intermédiaires \ transforme \ proguard \ debug \ jars \ 3 \ 1f \ main.jar] (Impossible de lire [D: \ AndroidStudioProjects \ CoolProject \ CoolLib \ build \ intermédiaires \ bundles \ default \ libs \ coolLib.jar (;;;;; **. class)] (Entrée zip en double [coolLib.jar: {pkg} /BuildConfig.class])) : app: transformClassesAndResourcesWithProguardForDebug ECHEC

Le build.gradle du projet contient les versions suivantes de soutien lib etc .--

ext { 
supportLibVer = '25.1.1' 
playServiceVer = '10.0.1' 

buildToolsVer = "25.0.2" 

compileSdkVer = 25 
targetSdkVer = 25 
minSdkVer = 16 
} 


dependencies { 
compile files('libs/FLurry_3.2.2.jar') 
compile files('libs/jxl-2.6.12.jar') 

compile project(':CoolLib') 

compile files('libs/gcm.jar') 
compile "com.google.android.gms:play-services-ads:$playServiceVer" 
compile "com.android.support:appcompat-v7:$supportLibVer" 
compile "com.android.support:design:$supportLibVer" 
compile "com.android.support:cardview-v7:$supportLibVer" 
compile "com.android.support:support-v13:$supportLibVer" 
compile 'com.github.bumptech.glide:glide:3.7.0' 
} 
+0

Son dit zip entrée [coolLib.jar: {pkg} /BuildConfig.class] Dupliquer votre fichier de qualité complète –

+0

quelle partie du fichier que vous voulez que je montre. –

+0

application: gradle principalement dépendances –

Répondre

2

Ok, je suis la solution.

Le Pourquoi-

j'ai comparé les étapes de construction dans la console gradle à API22 (build OK) et API16 (build échoue). À API22, la console a indiqué:

+ Exécution instantanée: Proguard n'est pas compatible avec l'exécution instantanée. Il a été désactivé pour le débogage

+ instantanée Run: Resource shrinker automatiquement désactivé pour le débogage

..et la construction a réussi. Quand j'ai désactivé InstantRun, il a également échoué sur API22.

Le RAISONNABLE

Le problème était en configuration proguard. Le BuildConfig.class de coolLib.jar a été défini pour être conservés dans proguard-project.txt, il conservait toutes les .class fichiers dans ce paquet, mais BuildConfig.class doit être modifié à construire le temps en fonction du projet principal.

Le Solution-

Je retire que -keep déclaration et cela fonctionne comme un charme.