2013-05-04 30 views
8

Tôi đã cố gắng từ 2 ngày qua để tạo gói ứng dụng đã ký bảo mật cho ứng dụng của mình nhưng vẫn không nhận được bất kỳ thành công nào trong đó.Lỗi bảo vệ trong khi tạo APK được ký bảo mật

Tôi đã kiểm tra rất nhiều câu trả lời của StackOverflow và đã thử mọi giải pháp nhưng không có gì hiệu quả đối với tôi. Vì vậy, ở đây tôi là nếu bất cứ ai có thể giúp tôi ra nó sẽ được thực sự biết ơn và sẽ thực sự đánh giá cao sự giúp đỡ.

Dưới đây là lỗi mà tôi nhận được khi tạo APK được ký bảo mật.

EDITED:

Tôi có một số thay đổi trong tập tin Proguard của tôi và bây giờ tôi đang nhận được dưới đây lỗi

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) 

Dưới đây là CẬP NHẬT tôi Proguard.cfg tập tin

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

Hãy giúp tôi bất kỳ trợ giúp nào sẽ được đánh giá cao.

Cảm ơn.

+0

http://proguard.sourceforge.net/index.html#manual/examples.html. Kiểm tra liên kết – Raghunandan

+0

Vui lòng xem câu hỏi đã cập nhật của tôi. – GrIsHu

+0

Tôi đã giải quyết được vấn đề của mình, vui lòng kiểm tra câu trả lời của tôi được đăng bên dưới. Cảm ơn tất cả mọi người đã giúp đỡ. – GrIsHu

Trả lời

12

Tôi đã giải quyết vấn đề của mình bằng cách thêm hai dòng dưới đây vào tệp proguard.cfg của tôi.

-keep class android.support.v4. ** {; }
- chuyển đổi android.support.v4.
*

+0

nice .. thx để chia sẻ – stinepike

+0

bạn ở đâu ?? Cần trợ giúp về vấn đề này – Piyush

+0

@GrIsHu là trong số này proguard issue – Piyush

6

sử dụng

-dontwarn android.support.v4.** 

khác thử:

tải về lates Proguard (i tải 4,9) và thay đổi thư mục lib

khác thử khác:

bạn có thể sử dụng một proguard chuẩn. ví dụ: xem here

Gần đây tôi cũng gặp phải một số vấn đề và lập kế hoạch để tìm hiểu cơ chế progruard theo chiều sâu. Nhưng hiện tại tôi có rất ít ý tưởng về điều này. Nhưng ba giải pháp trước đây tiết kiệm cho tôi nhiều thời gian

+0

Không có thay đổi nào vẫn là lỗi tương tự. – GrIsHu

+0

Cảm ơn sự giúp đỡ của bạn, tôi đã giải quyết được vấn đề của mình, bạn có thể kiểm tra câu trả lời của tôi. – GrIsHu

Các vấn đề liên quan