Android 混淆问题记录can't find superclass or interface
2016-10-09 19:07
363 查看
今天用了AS混淆项目,工程使用了fastjson解析数据,混淆出现以下问题:
然后网上查找一下,发现都说加上-keep class javax.ws.rs.* { ; }
和-ignorewarnings就可以了
然后发现也不行,一直在混淆中,1个小时过去提示:
PSI and index do not match:PSI and index do not match
又按网上说的Invalidate Caches/Restart…
还是不行!
![](http://img.blog.csdn.net/20161009190151836)
后面发现build.gradle配置的问题!!!
getDefaultProguardFile(‘proguard-android.txt’), “proguard-rules.pro”
一定要加一个”proguard-rules.pro”,之前一直把混淆放在proguard-android.txt:getDefaultProguardFile(‘proguard-android.txt’)。
proguard-rules.pro名字可以随便取,然后把混淆放里面!
proguard-rules.pro内容:
Warning:com.alibaba.fastjson.support.jaxrs.FastJsonProvider: can't find superclass or interface javax.ws.rs.ext.MessageBodyReader Warning:com.alibaba.fastjson.support.jaxrs.FastJsonProvider: can't find superclass or interface javax.ws.rs.ext.MessageBodyWriter Warning:com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter: can't find superclass or interface org.springframework.http.converter.AbstractHttpMessageConverter Warning:com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter: can't find superclass or interface org.springframework.http.converter.GenericHttpMessageConverter Warning:com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter4: can't find superclass or interface org.springframework.http.converter.AbstractGenericHttpMessageConverter Warning:com.alibaba.fastjson.support.spring.FastJsonJsonView: can't find superclass or interface org.springframework.web.servlet.view.AbstractView Warning:com.alibaba.fastjson.support.spring.FastjsonSockJsMessageCodec: can't find superclass or interface org.springframework.web.socket.sockjs.frame.AbstractSockJsMessageCodec Warning:retrofit.RxSupport$1: can't find superclass or interface rx.Observable$OnSubscribe Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.format.DateTimeFormatter Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalDateTime Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalTime Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalDateTime Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalDate Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalDateTime Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalDate Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalTime Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalDateTime Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalTime Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.ZonedDateTime Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.OffsetDateTime Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.OffsetTime Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.ZoneId Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.Period Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.Duration Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.Instant Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.format.DateTimeFormatter Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalDateTime Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalDate Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.temporal.TemporalAccessor Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.format.DateTimeFormatter Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalDate Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalDateTime Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalDate Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalDateTime Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalTime Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.ZonedDateTime Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.OffsetDateTime Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.OffsetTime Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.ZoneId Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.Period Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.Duration Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.Instant Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.format.DateTimeFormatter Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalDateTime Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.format.DateTimeFormatter Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalDate Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.format.DateTimeFormatter Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.LocalDateTime Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.temporal.TemporalAccessor Warning:com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec: can't find referenced class java.time.format.DateTimeFormatter Warning:com.alibaba.fastjson.parser.deserializer.OptionalCodec: can't find referenced class java.util.OptionalInt Warning:com.alibaba.fastjson.parser.deserializer.OptionalCodec: can't find referenced class java.util.OptionalLong Warning:com.alibaba.fastjson.parser.deserializer.OptionalCodec: can't find referenced class java.util.OptionalDouble Warning:com.alibaba.fastjson.parser.deserializer.OptionalCodec: can't find referenced class java.util.Optional Warning:com.alibaba.fastjson.parser.deserializer.OptionalCodec: can't find referenced class java.util.OptionalDouble Warning:com.alibaba.fastjson.parser.deserializer.OptionalCodec: can't find referenced class java.util.OptionalInt Warning:com.alibaba.fastjson.parser.deserializer.OptionalCodec: can't find referenced class java.util.OptionalLong Warning:com.alibaba.fastjson.parser.deserializer.OptionalCodec: can't find referenced class java.util.Optional Warning:com.alibaba.fastjson.parser.deserializer.OptionalCodec: can't find referenced class java.util.OptionalDouble Warning:com.alibaba.fastjson.parser.deserializer.OptionalCodec: can't find referenced class java.util.OptionalInt Warning:com.alibaba.fastjson.parser.deserializer.OptionalCodec: can't find referenced class java.util.OptionalLong Warning:com.alibaba.fastjson.parser.deserializer.OptionalCodec: can't find referenced class java.util.Optional Warning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.Point Warning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.Rectangle Warning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.Font Warning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.Color Warning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.Point Warning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.Font Warning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.Rectangle Warning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.Color Warning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.Font Warning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.Color Warning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.Rectangle Warning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.Point Warning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.Font Warning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.Rectangle Warning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.Color Warning:com.alibaba.fastjson.serializer.AwtCodec: can't find referenced class java.awt.Font Warning: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
相关文章推荐
- Android 混淆问题记录can't find superclass or interface
- Proguard打包混淆报错:can't find superclass or interface
- Proguard打包混淆报错:can't find superclass or interface
- 安卓打包混淆报错:can't find superclass or interface各种警告找不到
- 第三发jar包或者aar包混淆:can't find superclass or interface
- Android 代码混淆can’t find referenced class问题解决方案
- Warning:com.mob.wrappers.MobLinkWrapper$1: can't find superclass or interface com.mob.moblink.Action
- Eclipse打包Android混淆代码降低代码可读性时,出现的Warning:can't find referenced class问题的解决方案
- android问题记录:You need to use a Theme.AppCompat theme (or descendant) with this
- Android Eclipse - Could not find *.apk 问题解决记录
- Eclipse打包Android项目时用到proguard.cfg后,出现的Warning:can't find referenced class问题的解决方案
- Android问题解决记录—android.content.res.Resources$NotFoundException: Unable to find resource ID
- Android代码混淆第三方jar,can't find referenced class的解决
- 【android 反编译】Eclipse打包Android项目时用到proguard.cfg后,出现的Warning:can't find referenced class问题的解决方案
- android代码混淆Warning:okio.DeflaterSink: can't find referenced class
- 启动 jack server 出现 Could not find or load main class com.android.jack.launcher.ServerLauncher的问题
- compile Android - 出现Warning:can't find referenced class问题的解决方案
- Eclipse打包Android项目时用到proguard.cfg后,出现的Warning:can't find referenced class问题的解决方案
- Eclipse打包Android项目时用到proguard.cfg后,出现的Warning:can't find referenced class问题的解决方案
- Eclipse打包Android项目时用到proguard.cfg后,出现的Warning:can't find referenced class问题的解决方案