2013-05-04 4 views
8

Ho provato negli ultimi 2 giorni a generare l'apk firmato sicuro per la mia applicazione, ma non ho ancora ottenuto alcun risultato.Errore Proguard durante la generazione dell'APK con firma protetta

Ho controllato tante risposte di StackOverflow e ho provato ogni soluzione, ma per me non ha funzionato. Quindi eccomi qui se qualcuno mi può aiutare, sarà davvero grato e apprezzerà davvero l'aiuto.

Di seguito è riportato l'errore che sto ricevendo durante la generazione dell'apk firmato sicuro.

Modificato:

Ho alcuni cambiamenti nel mio file Proguard ed ora sto ottenendo sotto l'errore

Proguard returned with error code 1. See console 
Note: there were 209 duplicate class definitions. 
You should check if you need to specify additional program jars. 
Unexpected error while evaluating instruction: 
Class  = [android/support/v4/view/AccessibilityDelegateCompat$AccessibilityDelegateJellyBeanImpl] 
Method  = [newAccessiblityDelegateBridge(Landroid/support/v4/view/AccessibilityDelegateCompat;)Ljava/lang/Object;] 
Instruction = [18] areturn 
Exception = [java.lang.IllegalArgumentException] (Can't find any super classes of [android/support/v4/view/AccessibilityDelegateCompatIcs$1] (not even immediate super class [android/view/View$AccessibilityDelegate])) 
Unexpected error while performing partial evaluation: 
Class  = [android/support/v4/view/AccessibilityDelegateCompat$AccessibilityDelegateJellyBeanImpl] 
Method  = [newAccessiblityDelegateBridge(Landroid/support/v4/view/AccessibilityDelegateCompat;)Ljava/lang/Object;] 
Exception = [java.lang.IllegalArgumentException] (Can't find any super classes of [android/support/v4/view/AccessibilityDelegateCompatIcs$1] (not even immediate super class [android/view/View$AccessibilityDelegate])) 
java.lang.IllegalArgumentException: Can't find any super classes of [android/support/v4/view/AccessibilityDelegateCompatIcs$1] (not even immediate super class [android/view/View$AccessibilityDelegate]) 
at proguard.evaluation.value.ReferenceValue.generalize(ReferenceValue.java:287) 
at proguard.evaluation.value.ReferenceValue.generalize(ReferenceValue.java:481) 
at proguard.optimize.info.MethodOptimizationInfo.generalizeReturnValue(MethodOptimizationInfo.java:247) 
at proguard.optimize.evaluation.StoringInvocationUnit.generalizeMethodReturnValue(StoringInvocationUnit.java:195) 
at proguard.optimize.evaluation.StoringInvocationUnit.setMethodReturnValue(StoringInvocationUnit.java:126) 
at proguard.evaluation.BasicInvocationUnit.exitMethod(BasicInvocationUnit.java:134) 
at proguard.evaluation.Processor.visitSimpleInstruction(Processor.java:514) 
at proguard.classfile.instruction.SimpleInstruction.accept(SimpleInstruction.java:218) 
at proguard.optimize.evaluation.PartialEvaluator.evaluateSingleInstructionBlock(PartialEvaluator.java:753) 
at proguard.optimize.evaluation.PartialEvaluator.evaluateInstructionBlock(PartialEvaluator.java:587) 
at proguard.optimize.evaluation.PartialEvaluator.evaluateInstructionBlockAndExceptionHandlers(PartialEvaluator.java:560) 
at proguard.optimize.evaluation.PartialEvaluator.visitCodeAttribute0(PartialEvaluator.java:264) 
at proguard.optimize.evaluation.PartialEvaluator.visitCodeAttribute(PartialEvaluator.java:181) 
at proguard.classfile.attribute.CodeAttribute.accept(CodeAttribute.java:101) 
at proguard.classfile.ProgramMethod.attributesAccept(ProgramMethod.java:79) 
at proguard.classfile.attribute.visitor.AllAttributeVisitor.visitProgramMember(AllAttributeVisitor.java:95) 
at proguard.classfile.util.SimplifiedVisitor.visitProgramMethod(SimplifiedVisitor.java:91) 
at proguard.classfile.ProgramMethod.accept(ProgramMethod.java:71) 
at proguard.classfile.ProgramClass.methodsAccept(ProgramClass.java:504) 
at proguard.classfile.visitor.AllMethodVisitor.visitProgramClass(AllMethodVisitor.java:47) 
at proguard.classfile.ProgramClass.accept(ProgramClass.java:346) 
at proguard.classfile.ClassPool.classesAccept(ClassPool.java:116) 
at proguard.optimize.Optimizer.execute(Optimizer.java:372) 
at proguard.ProGuard.optimize(ProGuard.java:306) 
at proguard.ProGuard.execute(ProGuard.java:115) 
at proguard.ProGuard.main(ProGuard.java:492) 

Ecco il mio AGGIORNATO Proguard.cfg file di

-optimizationpasses 9 
    -verbose 
    -dump class_files.txt 
    -printseeds seeds.txt 
    -printusage unused.txt 
    -printmapping mapping.txt 
    -allowaccessmodification 
    -keepattributes *Annotation* 
    -renamesourcefileattribute SourceFile 
    -keepattributes SourceFile,LineNumberTable 
    -repackageclasses '' 
    -dontusemixedcaseclassnames 
    -dontskipnonpubliclibraryclasses 
    -dontskipnonpubliclibraryclassmembers 
    -dontpreverify 
    -dontwarn 
    -ignorewarnings 

    -keep public class * extends android.app.Activity 
    -keep public class * extends android.app.Application 
    -keep public class * extends android.app.Service 
    -keep public class * extends android.content.BroadcastReceiver 
    -keep public class * extends android.content.ContentProvider 
    -keep public class * extends android.app.backup.BackupAgentHelper 
    -keep public class * extends android.preference.Preference 
    -keep public class com.android.vending.licensing.ILicensingService 
    -dontnote com.android.vending.licensing.ILicensingService 

    # Explicitly preserve all serialization members. The Serializable interface 
    # is only a marker interface, so it wouldn't save them. 
    -keepclassmembers class * implements java.io.Serializable { 
     static final long serialVersionUID; 
     private static final java.io.ObjectStreamField[] serialPersistentFields; 
     private void writeObject(java.io.ObjectOutputStream); 
     private void readObject(java.io.ObjectInputStream); 
     java.lang.Object writeReplace(); 
     java.lang.Object readResolve(); 
    } 

    # Preserve all native method names and the names of their classes. 
    -keepclasseswithmembernames class * { 
     native <methods>; 
    } 

    -keepclasseswithmembernames class * { 
     public <init>(android.content.Context, android.util.AttributeSet); 
    } 

    -keepclasseswithmembernames class * { 
     public <init>(android.content.Context, android.util.AttributeSet, int); 
    } 

    # Preserve static fields of inner classes of R classes that might be accessed 
    # through introspection. 
    -keepclassmembers class **.R$* { 
    public static <fields>; 
    } 

    # Preserve the special static methods that are required in all enumeration classes. 
    -keepclassmembers enum * { 
     public static **[] values(); 
     public static ** valueOf(java.lang.String); 
    } 

    -keep public class * { 
     public protected *; 
    } 

    -keep class * implements android.os.Parcelable { 
    public static final android.os.Parcelable$Creator *; 
    } 
    ##---------------End: proguard configuration common for all Android apps ---------- 
    ##---------------Begin: proguard configuration for Gson ---------- 
    # Gson uses generic type information stored in a class file when working with fields. Proguard 
    # removes such information by default, so configure it to keep all of it. 
    -keepattributes Signature 

    # For using GSON @Expose annotation 
    # Gson specific classes 
    -keep class sun.misc.Unsafe { *; } 
    -keep class com.google.gson.stream.** { *; } 
    -keep class com.google.gson.FieldNamingStrategy { *; } 
    ##---------------End: proguard configuration for Gson ---------- 
    -keep class twitter4j.** { *; } 
    -keep class com.wli.ecard.TwitterShareActivity { *; } 
    -keep class com.wli.ecard.Vo.** { *; } 
    -keep class com.wli.ecard.EcardAcra.** { *; } 

Per favore aiutatemi ogni aiuto sarà apprezzato.

Grazie.

+0

http://proguard.sourceforge.net/index.html#manual/examples.html. Controllare il link – Raghunandan

+0

Si prega di controllare la mia domanda aggiornata. – GrIsHu

+0

Ho risolto il mio problema per favore controlla la mia risposta postata qui sotto. Grazie a tutti per l'aiuto. – GrIsHu

risposta

12

Ho risolto il problema aggiungendo le due righe seguenti nel mio file proguard.cfg.

-keep class android.support.v4. ** {; }
-dontwarn android.support.v4.
*

+0

nice .. thx per la condivisione – stinepike

+0

dove sei ?? Hai bisogno di aiuto su questo problema – Piyush

+0

@GrIsHu sono in questo problema proguard – Piyush

6

uso

-dontwarn android.support.v4.** 

un altro tentativo:

scaricare il Proguard tardive (ho scaricato 4.9) e cambia la cartella lib

un altro un altro tentativo:

voi può usare un proguard standard. per esempio vedi here

Recentemente ho anche affrontato diversi problemi e progettando di apprendere in profondità il meccanismo progruard. Ma al momento non ne ho idea. Ma la precedente soluzione tre mi ha salvato più volte

+0

Nessuna modifica ha ancora lo stesso errore. – GrIsHu

+0

Grazie per il tuo aiuto ho risolto il mio problema è possibile controllare la mia risposta. – GrIsHu