关于proguard配置文件的一个笨办法,一次性排除大部分外部依赖
2016-07-09 13:01
323 查看
关于proguard这个东西,感觉做的一般般,很多配置很不人性化,容错性差,像个事妈一样总报错,屁大点事就把整个流程挂掉,搞得学习成本很高,实在难以称道。
比如,proguard配置中的keep class 和dontwarn就很变扭,为什么不提供一个only include class或者only warn之类的配置,其实针对大多数app,我们只需要对我们关心的一些类进行混淆就可以了,所以这不是一个排除或者取非的问题。由于这一点,导致我们每次要写一大堆的keep class 和dontwarn,本人分享一种写法(虽然是傻瓜式的笨办法),一种思路,可以一次性排除大部分外部依赖。
思路大概是,如果我们只需要对com.yoyo.brucesharp.app这个包下的类进行proguard,那么可以把其他包名的一律排除掉就可以了,于是就有了下面的模板(写的不是很严谨,重在提供解决问题的思路,大家可以拷走方便备用)。
比如,proguard配置中的keep class 和dontwarn就很变扭,为什么不提供一个only include class或者only warn之类的配置,其实针对大多数app,我们只需要对我们关心的一些类进行混淆就可以了,所以这不是一个排除或者取非的问题。由于这一点,导致我们每次要写一大堆的keep class 和dontwarn,本人分享一种写法(虽然是傻瓜式的笨办法),一种思路,可以一次性排除大部分外部依赖。
思路大概是,如果我们只需要对com.yoyo.brucesharp.app这个包下的类进行proguard,那么可以把其他包名的一律排除掉就可以了,于是就有了下面的模板(写的不是很严谨,重在提供解决问题的思路,大家可以拷走方便备用)。
####外部库 -keep class a** { *; } -keep class b** { *; } ##c开头不排除 -keep class d** { *; } -keep class e** { *; } -keep class f** { *; } -keep class g** { *; } -keep class h** { *; } -keep class i** { *; } -keep class j** { *; } -keep class k** { *; } -keep class l** { *; } -keep class m** { *; } -keep class n** { *; } -keep class o** { *; } -keep class p** { *; } -keep class q** { *; } -keep class r** { *; } -keep class s** { *; } -keep class t** { *; } -keep class u** { *; } -keep class v** { *; } -keep class w** { *; } -keep class x** { *; } -keep class y** { *; } -keep class z** { *; } -keep class com.a** { *; } -keep class com.b** { *; } -keep class com.c** { *; } -keep class com.d** { *; } -keep class com.e** { *; } -keep class com.f** { *; } -keep class com.g** { *; } -keep class com.h** { *; } -keep class com.i** { *; } -keep class com.j** { *; } -keep class com.k** { *; } -keep class com.l** { *; } -keep class com.m** { *; } -keep class com.n** { *; } -keep class com.o** { *; } -keep class com.p** { *; } -keep class com.q** { *; } -keep class com.r** { *; } -keep class com.s** { *; } -keep class com.y** { *; } -keep class com.u** { *; } -keep class com.v** { *; } -keep class com.w** { *; } -keep class com.x** { *; } #com.y开头不排除 -keep class com.z** { *; } #单独排除cn开头的 -keep class cn** { *; } ####dontwarn -dontwarn a** -dontwarn b** -dontwarn d** -dontwarn e** -dontwarn f** -dontwarn g** -dontwarn h** -dontwarn i** -dontwarn j** -dontwarn k** -dontwarn l** -dontwarn m** -dontwarn n** -dontwarn o** -dontwarn p** -dontwarn q** -dontwarn r** -dontwarn s** -dontwarn t** -dontwarn u** -dontwarn v** -dontwarn w** -dontwarn x** -dontwarn y** -dontwarn z** -dontwarn com.a** -dontwarn com.b** -dontwarn com.d** -dontwarn com.e** -dontwarn com.f** -dontwarn com.g** -dontwarn com.h** -dontwarn com.i** -dontwarn com.j** -dontwarn com.k** -dontwarn com.l** -dontwarn com.m** -dontwarn com.n** -dontwarn com.o** -dontwarn com.p** -dontwarn com.q** -dontwarn com.r** -dontwarn com.s** -dontwarn com.t** -dontwarn com.u** -dontwarn com.v** -dontwarn com.w** -dontwarn com.x** -dontwarn com.c** -dontwarn com.z** #单独排除一下cn开头的 -dontwarn cn**
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories