android开发 项目运行时Error:warning: Ignoring InnerClasses attribute for an anonymous inner class

来源:互联网 发布:python登录文件夹帐号 编辑:程序博客网 时间:2024/06/17 09:58

Android studio2.0运行项目时 build 成功 build目录下生成apk文件  但是不能自动直接安装运行 只能将apk文件拷出来安装 给调试带来很大麻烦。

编译时警告信息:

Error:warning: Ignoring InnerClasses attributefor an anonymous inner classError:(com.tencent.smtt.sdk.a.c)that doesn't come with anError:associated EnclosingMethod attribute. This class was probably produced by aError:compiler that did not target the modern .classfile format. The recommendedError:solution isto recompile theclassfrom source, using an up-to-date compilerError:andwithout specifying any "-target" type options. The consequence ofignoringError:this warning isthat reflective operations on this class will incorrectlyError:indicate thatitis *not* an inner class.


解决方法:项目根目录添加文件:proguard.cfg

#指定代码的压缩级别    -optimizationpasses 5        #包明不混合大小写    -dontusemixedcaseclassnames        #不去忽略非公共的库类    -dontskipnonpubliclibraryclasses         #优化  不优化输入的类文件    -dontoptimize         #预校验    -dontpreverify         #混淆时是否记录日志    -verbose         # 混淆时所采用的算法    -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*        #保护注解    -keepattributes *Annotation*        # 保持哪些类不被混淆    -keep public class * extends android.app.Fragment    -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    #如果有引用v4包可以添加下面这行    -keep public class * extends android.support.v4.app.Fragment                #忽略警告    -ignorewarning        ##记录生成的日志数据,gradle build时在本项目根目录输出##        #apk 包内所有 class 的内部结构    -dump class_files.txt    #未混淆的类和成员    -printseeds seeds.txt    #列出从 apk 中删除的代码    -printusage unused.txt    #混淆前后的映射    -printmapping mapping.txt        ########记录生成的日志数据,gradle build时 在本项目根目录输出-end######            #####混淆保护自己项目的部分代码以及引用的第三方jar包library#######        #-libraryjars libs/umeng-analytics-v5.2.4.jar        #三星应用市场需要添加:sdk-v1.0.0.jar,look-v1.0.1.jar    #-libraryjars libs/sdk-v1.0.0.jar    #-libraryjars libs/look-v1.0.1.jar        #如果不想混淆 keep 掉    -keep class com.lippi.recorder.iirfilterdesigner.** {*; }    #友盟    -keep class com.umeng.**{*;}    #项目特殊处理代码        #忽略警告    -dontwarn com.lippi.recorder.utils**    #保留一个完整的包    -keep class com.lippi.recorder.utils.** {        *;     }        -keep class  com.lippi.recorder.utils.AudioRecorder{*;}            #如果引用了v4或者v7包    -dontwarn android.support.**        ####混淆保护自己项目的部分代码以及引用的第三方jar包library-end####        -keep public class * extends android.view.View {        public <init>(android.content.Context);        public <init>(android.content.Context, android.util.AttributeSet);        public <init>(android.content.Context, android.util.AttributeSet, int);        public void set*(...);    }        #保持 native 方法不被混淆    -keepclasseswithmembernames class * {        native <methods>;    }        #保持自定义控件类不被混淆    -keepclasseswithmembers class * {        public <init>(android.content.Context, android.util.AttributeSet);    }        #保持自定义控件类不被混淆    -keepclassmembers class * extends android.app.Activity {       public void *(android.view.View);    }        #保持 Parcelable 不被混淆    -keep class * implements android.os.Parcelable {      public static final android.os.Parcelable$Creator *;    }        #保持 Serializable 不被混淆    -keepnames class * implements java.io.Serializable        #保持 Serializable 不被混淆并且enum 类也不被混淆    -keepclassmembers class * implements java.io.Serializable {        static final long serialVersionUID;        private static final java.io.ObjectStreamField[] serialPersistentFields;        !static !transient <fields>;        !private <fields>;        !private <methods>;        private void writeObject(java.io.ObjectOutputStream);        private void readObject(java.io.ObjectInputStream);        java.lang.Object writeReplace();        java.lang.Object readResolve();    }        #保持枚举 enum 类不被混淆 如果混淆报错,建议直接使用上面的 -keepclassmembers class * implements java.io.Serializable即可    #-keepclassmembers enum * {    #  public static **[] values();    #  public static ** valueOf(java.lang.String);    #}        -keepclassmembers class * {        public void *ButtonClicked(android.view.View);    }        #不混淆资源类    -keepclassmembers class **.R$* {        public static <fields>;    }        #避免混淆泛型 如果混淆报错建议关掉    #–keepattributes Signature        #移除log 测试了下没有用还是建议自己定义一个开关控制是否输出日志    #-assumenosideeffects class android.util.Log {    #    public static boolean isLoggable(java.lang.String, int);    #    public static int v(...);    #    public static int i(...);    #    public static int w(...);    #    public static int d(...);    #    public static int e(...);    #}        #如果用用到Gson解析包的,直接添加下面这几行就能成功混淆,不然会报错。    #gson    #-libraryjars libs/gson-2.2.2.jar    -keepattributes Signature    # Gson specific classes    -keep class sun.misc.Unsafe { *; }    # Application classes that will be serialized/deserialized over Gson    -keep class com.google.gson.examples.android.model.** { *; }
警告消失 项目可自动安装启动。

0 0
原创粉丝点击