2016-08-08 1 views
0

Je développe la bibliothèque Android. Lorsque Mon client (développeur d'applications) a appliqué mon fichier Jar, il est affiché message d'erreur. Build est un fonctionnement normal, mais quand je cours (PlayButton) App dans Android Studio, il est arrivé.
Le message d'erreur affiché comme ci-dessous:
L'exécution a échoué pour la tâche ': app: transformClassesWithMultidexlistForDebug'.Multidex transformClassesWithMultidexlistForDebug Échec

java.io.IOException: Impossible de lire [/ Utilisateurs/VSSCP_KYOSEON/Documents/Travail/Android/A/B/app/build/intermédiaires/transforme/jarMerging/debug/bocaux/1/1f/combined.jar] (ne peut pas classe processus [com/a/b/VSFunctionActivity.class] (type de vérification inconnue [88] dans le cadre de la carte de la pile))

Ceci est mon application Gradle code:

apply plugin: 'com.android.application' 

android { 
compileSdkVersion 23 
buildToolsVersion '24.0.1' 

defaultConfig { 
    applicationId "com.a.b" 
    minSdkVersion 18 
    targetSdkVersion 23 
    versionCode 1 
    versionName "1.0" 
    multiDexEnabled true 
} 

compileOptions { 
    sourceCompatibility JavaVersion.VERSION_1_6 
    targetCompatibility JavaVersion.VERSION_1_6 
} 

dexOptions { 
    javaMaxHeapSize "4g" //specify the heap size for the dex process 
} 
} 

dependencies { 
compile fileTree(include: ['*.jar'], dir: 'libs') 
testCompile 'junit:junit:4.12' 
compile 'com.android.support:appcompat-v7:23.0.1' 
compile project(':ChartLib') 
compile 'com.google.android.gms:play-services-fitness:8.4.0' 
compile 'com.android.support:multidex:1.0.1' 
compile files('libs/vs_sat_sdk.jar') 

Mon fichier Jar est vs_sat_sdk.jar. Il est appliqué à proguard.
J'ai déjà appliqué le guide Android Multidex. https://developer.android.com/tools/building/multidex.html Mais j'ai échoué à exécuter.

J'ai une situation de fonctionnement normale.
1. J'applique proguard dans le fichier My jar. et Quand minSdkVersion a plus de 21, c'est une opération normale. Mais lorsque minSdkVersion est inférieur à 21, il est affiché comme ayant échoué.
2. Si mon fichier jar n'applique pas proguard, indépendamment de minSdkVersion, l'opération est normale.

s'il vous plaît laissez-moi savoir votre solution.

Cordialement.

Répondre

0

Peut-être que le fichier jar a été traité par un outil qui ne met pas correctement à jour l'attribut StackMapFrame.

En réalité, les attributs StackMapFrame ne sont pas nécessaires pour le développement Android, vous pouvez donc demander à ProGuard de ne pas le créer et cela pourrait résoudre votre problème. Ajoutez ce qui suit à votre configuration lorsque vous appliquez ProGuard à votre bibliothèque:

-dontpreverify 
+0

Merci. J'ai déjà défini -dontpreverify. Mais le même problème se produit. J'ai corrigé ce problème. Après avoir défini -dontoptimize, le fonctionnement est correct. –