Android 混淆问题记录can't find superclass or interface
来源:互联网 发布:南京高新区网络问政 编辑:程序博客网 时间:2024/05/17 16:11
今天用了AS混淆项目,工程使用了fastjson解析数据,混淆出现以下问题:
Warning:com.alibaba.fastjson.support.jaxrs.FastJsonProvider: can't find superclass or interface javax.ws.rs.ext.MessageBodyReaderWarning:com.alibaba.fastjson.support.jaxrs.FastJsonProvider: can't find superclass or interface javax.ws.rs.ext.MessageBodyWriterWarning:com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter: can't find superclass or interface org.springframework.http.converter.AbstractHttpMessageConverterWarning:com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter: can't find superclass or interface org.springframework.http.converter.GenericHttpMessageConverterWarning:com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter4: can't find superclass or interface org.springframework.http.converter.AbstractGenericHttpMessageConverterWarning:com.alibaba.fastjson.support.spring.FastJsonJsonView: can't find superclass or interface org.springframework.web.servlet.view.AbstractViewWarning:com.alibaba.fastjson.support.spring.FastjsonSockJsMessageCodec: can't find superclass or interface org.springframework.web.socket.sockjs.frame.AbstractSockJsMessageCodecWarning:retrofit.RxSupport$1: can't find superclass or interface rx.Observable$OnSubscribeWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.format.DateTimeFormatterWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalDateTimeWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalTimeWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalDateTimeWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalDateWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalDateTimeWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalDateWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalTimeWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalDateTimeWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalTimeWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.ZonedDateTimeWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.OffsetDateTimeWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.OffsetTimeWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.ZoneIdWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.PeriodWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.DurationWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.InstantWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.format.DateTimeFormatterWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalDateTimeWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalDateWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.temporal.TemporalAccessorWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.format.DateTimeFormatterWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalDateWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalDateTimeWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalDateWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalDateTimeWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalTimeWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.ZonedDateTimeWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.OffsetDateTimeWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.OffsetTimeWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.ZoneIdWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.PeriodWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.DurationWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.InstantWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.format.DateTimeFormatterWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalDateTimeWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.format.DateTimeFormatterWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalDateWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.format.DateTimeFormatterWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalDateTimeWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.temporal.TemporalAccessorWarning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.format.DateTimeFormatterWarning:com.alibaba.fastjson.parser.deserializer.OptionalCodec: can't find referenced class java.util.OptionalIntWarning:com.alibaba.fastjson.parser.deserializer.OptionalCodec: can't find referenced class java.util.OptionalLongWarning:com.alibaba.fastjson.parser.deserializer.OptionalCodec: can't find referenced class java.util.OptionalDoubleWarning:com.alibaba.fastjson.parser.deserializer.OptionalCodec: can't find referenced class java.util.OptionalWarning:com.alibaba.fastjson.parser.deserializer.OptionalCodec: can't find referenced class java.util.OptionalDoubleWarning:com.alibaba.fastjson.parser.deserializer.OptionalCodec: can't find referenced class java.util.OptionalIntWarning:com.alibaba.fastjson.parser.deserializer.OptionalCodec: can't find referenced class java.util.OptionalLongWarning:com.alibaba.fastjson.parser.deserializer.OptionalCodec: can't find referenced class java.util.OptionalWarning:com.alibaba.fastjson.parser.deserializer.OptionalCodec: can't find referenced class java.util.OptionalDoubleWarning:com.alibaba.fastjson.parser.deserializer.OptionalCodec: can't find referenced class java.util.OptionalIntWarning:com.alibaba.fastjson.parser.deserializer.OptionalCodec: can't find referenced class java.util.OptionalLongWarning:com.alibaba.fastjson.parser.deserializer.OptionalCodec: can't find referenced class java.util.OptionalWarning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.PointWarning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.RectangleWarning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.FontWarning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.ColorWarning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.PointWarning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.FontWarning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.RectangleWarning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.ColorWarning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.FontWarning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.ColorWarning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.RectangleWarning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.PointWarning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.FontWarning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.RectangleWarning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.ColorWarning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.FontWarning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.Color
然后网上查找一下,发现都说加上-keep class javax.ws.rs.* { ; }
和-ignorewarnings就可以了
#忽略警告-ignorewarnings-keep class javax.ws.rs.** { *; }-dontwarn com.alibaba.fastjson.**-keep class com.alibaba.fastjson.** { *; }
然后发现也不行,一直在混淆中,1个小时过去提示:
PSI and index do not match:PSI and index do not match
又按网上说的Invalidate Caches/Restart…
还是不行!
后面发现build.gradle配置的问题!!!
getDefaultProguardFile(‘proguard-android.txt’), “proguard-rules.pro”
一定要加一个”proguard-rules.pro”,之前一直把混淆放在proguard-android.txt:getDefaultProguardFile(‘proguard-android.txt’)。
proguard-rules.pro名字可以随便取,然后把混淆放里面!
buildTypes { release { buildConfigField "boolean", "LOG_DEBUG", "false" // 不显示Log minifyEnabled true // 混淆// shrinkResources true // 移除无用的resource文件 proguardFiles getDefaultProguardFile('proguard-android.txt'), "proguard-rules.pro" signingConfig signingConfigs.release// defaultConfig {// } } debug { buildConfigField "boolean", "LOG_DEBUG", "true" // 显示Log signingConfig signingConfigs.debug// defaultConfig {// } } }
proguard-rules.pro内容:
#不压缩输入的类文件-dontshrink#指定代码的压缩级别-optimizationpasses 5#包明不混合大小写-dontusemixedcaseclassnames#不去忽略非公共的库类-dontskipnonpubliclibraryclasses#优化 不优化输入的类文件-dontoptimize#预校验-dontpreverify#混淆时是否记录日志 -verbose# 混淆时所采用的算法-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*#保护注解-keepattributes *Annotation*#忽略警告-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 # 保持哪些类不被混淆-keep public class com.google.vending.licensing.ILicensingService # 保持哪些类不被混淆-keepclassmembers class **.R$* { public static <fields>; public static final int *;}-keepclasseswithmembernames class * { # 保持 native 方法不被混淆 native <methods>;}-keepclasseswithmembers class * { # 保持自定义控件类不被混淆 public <init>(android.content.Context, android.util.AttributeSet);}-keepclasseswithmembers class * {# 保持自定义控件类不被混淆 public <init>(android.content.Context, android.util.AttributeSet, int);}-keepclassmembers class * extends android.app.Activity { # 保持自定义控件类不被混淆 public void *(android.view.View);}-keepclassmembers enum * { # 保持枚举 enum 类不被混淆 public static **[] values(); public static ** valueOf(java.lang.String);}-keep class * implements android.os.Parcelable { # 保持 Parcelable 不被混淆 public static final android.os.Parcelable$Creator *;}-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*(...); }-keepclassmembers public class * extends android.view.View { void set*(***); *** get*();}#apk 包内所有 class 的内部结构#-dump class_files.txt#未混淆的类和成员#-printseeds seeds.txt#列出从 apk 中删除的代码#-printusage unused.txt#混淆前后的映射#-printmapping mapping.txt#fastjson 可以混淆也可以不混淆#-keep class javax.ws.rs.** { *; }#-dontwarn com.alibaba.fastjson.**#-keep class com.alibaba.fastjson.** { *; }-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(); public <fields>;}-keepattributes Signature#gson-dontwarn com.google.gson.**-keep class com.google.gson.** { *;}-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(); public <fields>;}#v4-dontwarn android.support.v4.**-keep class android.support.v4.** { *; }-keep interface android.support.v4.app.** { *; }-keep public class * extends android.support.v4.**-keep public class * extends android.app.Fragment#greendao#-dontwarn de.greenrobot.dao.**#-keep class de.greenrobot.dao.** { *;}-keepclassmembers class * extends de.greenrobot.dao.AbstractDao { public static java.lang.String TABLENAME;}-keep class **$Properties
1 1
- Android 混淆问题记录can't find superclass or interface
- Android 混淆问题记录can't find superclass or interface
- Proguard打包混淆报错:can't find superclass or interface
- Proguard打包混淆报错:can't find superclass or interface
- Proguard打包混淆报错:can't find superclass or interface
- 第三发jar包或者aar包混淆:can't find superclass or interface
- 安卓打包混淆报错:can't find superclass or interface各种警告找不到
- Proguard打包混淆报错:can't find superclass or interface
- Proguard打包混淆报错:can't find superclass or interface
- com.alipay.apmobilesecuritysdk.face.APSecuritySdk$RunningTask$1: can't find superclass or interface
- Android 代码混淆can’t find referenced class问题解决方案
- Eclipse打包Android混淆代码降低代码可读性时,出现的Warning:can't find referenced class问题的解决方案
- can't find referenced method 'int checkSelfPermission(java.lang.String) 混淆失败的问题
- Android代码混淆第三方jar,can't find referenced class的解决
- Android代码混淆第三方jar,can't find referenced class的解决
- Android代码混淆第三方jar,can't find referenced class的解决
- Android Studio 混淆出现can't find referenced method 的解决方法
- android代码混淆Warning:okio.DeflaterSink: can't find referenced class
- 你必须知道的bower私库
- 静态链表的基本操作
- ErrorCode:1068.Multipleprimarykeydefined
- 思想归纳
- My first Struct experience
- Android 混淆问题记录can't find superclass or interface
- Helix --未完待续
- js和SpringMvc灵活使用cookie
- 数据结构-二叉树的先序、中序、后序遍历
- 多进程和多线程的应用场景
- Java 中重写与重载的规则、区别
- android的内存管理简介
- strcpy与memcpy的区别
- 用java实现十进制转换