2013-05-04 4 views
8

Я пытался за последние 2 дня создать безопасный подписанный apk для своего приложения, но до сих пор не получил никакого успеха.Ошибка Proguard при создании Secure Signed APK

Я проверил так много ответов StackOverflow и пробовал каждое решение, но ничего не работало для меня. Итак, вот я, если кто-нибудь может мне помочь, он будет очень благодарен и очень по достоинству оценят помощь.

Ниже приведена ошибка, которую я получаю при создании подписанного Secure Secure apk.

EDITED:

У меня есть некоторые изменения в моем файле Proguard и теперь я получаю ошибку ниже

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) 

Вот мой ОБНОВЛЕНО Proguard.cfg файл

-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.** { *; } 

Пожалуйста, помогите мне, любая помощь будет оценена по достоинству.

Спасибо.

+0

http://proguard.sourceforge.net/index.html#manual/examples.html. Проверьте ссылку – Raghunandan

+0

Пожалуйста, ознакомьтесь с моим обновленным вопросом. – GrIsHu

+0

Я разрешил свою проблему, пожалуйста, проверьте мой ответ, размещенный ниже. Спасибо всем за помощь. – GrIsHu

ответ

12

Я решил проблему, добавив следующие две строки в свой файл proguard.cfg.

-keep класс android.support.v4. ** {; }
-dontwarn android.support.v4.
*

+0

nice .. thx для обмена – stinepike

+0

где ты? Нужна помощь по этому вопросу – Piyush

+0

@GrIsHu В этом вопросе proguard – Piyush

6

использование

-dontwarn android.support.v4.** 

еще одну попытку:

скачать ЛАТЕС ProGuard (я скачал 4.9) и изменяет Либерал папку,

другой еще одну попытку:

ты по может использовать стандартную прогурду. например, см. here

Недавно я также столкнулся с рядом проблем и планировал выучить механизм progruard в глубину. Но в настоящее время я мало что знаю об этом. Но предыдущие три решения сэкономили мне несколько раз

+0

Без изменений все та же ошибка. – GrIsHu

+0

Спасибо за вашу помощь. Я разрешил свою проблему, вы можете проверить мой ответ. – GrIsHu

Смежные вопросы