最近项目不紧,在学新技术。听说项目也快发布正式版本,就琢磨着写混淆配置文件打包发布,不想它吭我太久,今天终于解决,记录下。
问题:
问题1:debug运行程序正常跑,混淆后跑代码查看log显示类型转换异常的错误,程序跑欢迎界面白屏。
解决:由于有些不改混淆的类和接口被混淆了,所以需要特别写出来它不需要混淆。我把程序里所有的model都不混淆。
#model -keep interface com.taisau.facerecoginition2..ui.user.login.LoginContract.Model{ *;} -keep interface * extends com.mvpFrame.baseMvp.BaseModel -keep public class * implements com.mvpFrame.baseMvp.BaseModel -keep interface com..mvpFrame.baseMvp.BaseModel{ *;} -keepclassmembers public class com..ui.user.login.LoginModel{ public protected *; }
问题2:程序请求登录成功后,无法进入主页面。
解决:由于混淆时候所有的bean是不需要混淆的。但是我有一个baseRespose不小心没有放在bean包里,因为我将它移到bean包里就可以啦。
-keep class com.bean.**{ *;}
混淆错误甄别:可借助
mapping.txt(
表示混淆前后代码的对照表)和log定位混淆错误位置,快速解决问题。
混淆文件:
一:基本不动区域
#---------------------------------基本指令区---------------------------------- #打印日志,保留异常,源文件行数信息。 -printmapping proguardMapping.txt #-optimizations !code/simplification/cast,!field/*,!class/merging/* -keepattributes *Annotation*,InnerClasses -keepattributes Signature -keepattributes SourceFile,LineNumberTable -renamesourcefileattribute SourceFile -keepattributes Exceptions,SourceFile #Shrink Options <