2013-05-04 3 views
8

지난 2 일 동안 응용 프로그램의 보안 서명 된 apk를 생성하려고 시도했지만 계속 성공하지 못했습니다.보안 서명 된 APK를 생성하는 동안 Proguard 오류가 발생했습니다.

나는 StackOverflow의 많은 답변을 확인하고 모든 해결책을 시도했지만 나에게 도움이되지 못했습니다. 그래서 아무도 나를 도울 수 있다면 정말 감사 할 것이고 정말로 도움을 주실 것입니다.

다음은 보안 서명 된 apk를 생성하는 동안 발생하는 오류입니다.

편집 :

내 난독 파일에 일부 변경이 있고 지금은

여기
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 class android.support.v4. ** {; }
-dontwarn android.support.v4.
*

+0

nice .. 공유를위한 thx – stinepike

+0

어디 있니? 이 문제에 대한 도움이 필요합니다. – Piyush

+0

@GrIsHu는이 프로 가드 문제에 포함되어 있습니다. – Piyush

6

사용

-dontwarn android.support.v4.** 

또 다른 시도 :

가 lates을의 난독를 다운로드 (내가 4.9을 다운로드)와 lib 폴더

또 다른 또 다른 시도 변경 :

을 표준 프로 가드를 사용할 수 있습니다. 예를 들어 here

최근에 나는 또한 progruard 메커니즘을 깊이있게 배우는 몇 가지 문제에 직면했다. 그러나 현재 저는 이것에 관해 거의 생각하지 못했습니다. 그러나 이전의 세 가지 해결책으로 저에게 여러 시간을 절약 할 수 있습니다.

+0

여전히 동일한 오류가 변경되지 않습니다. – GrIsHu

+0

도움을 주셔서 감사합니다. 내 문제를 해결했습니다. 내 대답을 확인할 수 있습니다. – GrIsHu

관련 문제