- 这些日子看到一个培训的机构在讲如何减少apk的大小,其中提到了混淆。就是在build.gradle中添加
android {
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
...
}
}
}
-
混淆后,首先发现好多第三方的库不能正常使用,于是去找寻三方混淆规则,添加到progurad-rules.pro中,默认的混淆规则则在proguard-android-optimize.txt({ANDROID_SDK_ROOT}/tools/proguard/)中。
-
运行中程序异常
Method inflate = cls.getDeclaredMethod("inflate", LayoutInflater.class, ViewGroup.class, boolean.class);
主要是这行报错,通过Debug和查日志发现,是inflate这个方法找不到,于是去网上找关于反射的混淆,通过查询说不要混淆调用这个方法的类,于是-keep *** ,发现还是异常,于是通过这个getDeclaredMethod这个方法去寻找突破,是不是这个类不能被混淆,混淆后就找不到类的inflate这个方法.
-keep public class * extends androidx.viewbinding.ViewBinding { *; }
- 最后大功告成了!所以无论发现什么事情,如果一时解决不了,不要着急,慢慢来!加油!加油!!加油!!!!