AndroidStudio混淆

首先要在build.gradle中开启混淆,也就是minifyEnabled true,我用的build.gradle具体如下所示:

<code class="hljs lasso has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">def releaseTime() {
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">new</span> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">Date</span>()<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>format(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"yyyy.MM.dd"</span>, TimeZone<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>getTimeZone(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"UTC"</span>))
}

android {
    <span class="hljs-attribute" style="box-sizing: border-box;">...</span><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span> 

    buildTypes {
        release {
            <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 混淆</span>
            minifyEnabled <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">true</span>
            <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// Zipalign优化</span>
            zipAlignEnabled <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">true</span>
            <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 移除无用的resource文件</span>
            shrinkResources <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">true</span>
            <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明,后一个文件是自己的定义混淆文件</span>
            proguardFiles getDefaultProguardFile(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'proguard-android.txt'</span>), <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'proguard-rules.pro'</span>

            applicationVariants<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">all</span> { variant <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">->
                </span>variant<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>outputs<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>each { output <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">->
                    </span>def outputFile <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">=</span> output<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>outputFile
                    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (outputFile <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">!=</span> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">null</span> <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">&&</span> outputFile<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>name<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>endsWith(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'.apk'</span>)) {
                        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 输出apk名称为appname-1.0-beta1-xxxx-xx-xx.apk</span>
                        def fileName <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">=</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"app-${defaultConfig.versionName}-beta1-${releaseTime()}.apk"</span>
                        output<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>outputFile <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">=</span> <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">new</span> File(outputFile<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">parent</span>, fileName)
                    }
                }
            }
        }
    }
    <span class="hljs-attribute" style="box-sizing: border-box;">...</span><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>
}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li></ul>

  上面注释中写到proguard-android.txt文件,这是系统默认的混淆文件,具体在../sdk/tools/proguard/目录下,其中包含了android最基本的混淆,一般不需要改动,我们需要配置的是项目中app下的proguard-rules.pro文件,在此提供一份混淆模板。

<code class="hljs coffeescript has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">###
#
# 对于一些基本指令的添加
#
###</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 代码混淆压缩比,在0~7之间,默认为5,一般不做修改</span>
-optimizationpasses <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span>

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 混合时不使用大小写混合,混合后的类名为小写</span>
-dontusemixedcaseclassnames

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 指定不去忽略非公共库的类</span>
-dontskipnonpubliclibraryclasses

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 这句话能够使我们的项目混淆后产生映射文件</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 包含有类名->混淆后类名的映射关系</span>
-verbose

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 指定不去忽略非公共库的类成员</span>
-dontskipnonpubliclibraryclassmembers

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。</span>
-dontpreverify

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 保留Annotation不混淆</span>
-keepattributes *Annotation*,InnerClasses

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 避免混淆泛型</span>
-keepattributes Signature

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 抛出异常时保留代码行号</span>
-keepattributes SourceFile,LineNumberTable

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 指定混淆是采用的算法,后面的参数是一个过滤器</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 这个过滤器是谷歌推荐的算法,一般不做更改</span>
-optimizations !code<span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/simplification/cast,!field/</span>*,!<span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span>/<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">merging</span>/*</span>


<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">###
#
# Android开发中一些需要保留的公共部分
#
###</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span>

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 保留我们使用的四大组件,自定义的Application等等这些类不被混淆</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 因为这些子类都有可能被外部调用</span>
-keep public <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> * <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">extends</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">android</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">app</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">Activity</span></span>
-keep public <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> * <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">extends</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">android</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">app</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">Appliction</span></span>
-keep public <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> * <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">extends</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">android</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">app</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">Service</span></span>
-keep public <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> * <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">extends</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">android</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">content</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">BroadcastReceiver</span></span>
-keep public <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> * <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">extends</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">android</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">content</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">ContentProvider</span></span>
-keep public <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> * <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">extends</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">android</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">app</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">backup</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">BackupAgentHelper</span></span>
-keep public <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> * <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">extends</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">android</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">preference</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">Preference</span></span>
-keep public <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> * <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">extends</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">android</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">view</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">View</span></span>
-keep public <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">android</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">vending</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">licensing</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">ILicensingService</span></span>


<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 保留support下的所有类及其内部类</span>
-keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">android</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">support</span>.** {*;}</span>

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 保留继承的</span>
-keep public <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> * <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">extends</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">android</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">support</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">v4</span>.**</span>
-keep public <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> * <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">extends</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">android</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">support</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">v7</span>.**</span>
-keep public <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> * <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">extends</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">android</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">support</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">annotation</span>.**</span>

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 保留R下面的资源</span>
-keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> **.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">R$</span>* {*;}</span>

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 保留本地native方法不被混淆</span>
-keepclasseswithmembernames <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> * {</span>
    <span class="hljs-reserved" style="box-sizing: border-box;">native</span> <methods>;
}

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 保留在Activity中的方法参数是view的方法,</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 这样以来我们在layout中写的onClick就不会被影响</span>
-keepclassmembers <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> * <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">extends</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">android</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">app</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">Activity</span>{</span>
    public <span class="hljs-reserved" style="box-sizing: border-box;">void</span> *(android.view.View);
}

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 保留枚举类不被混淆</span>
-keepclassmembers <span class="hljs-reserved" style="box-sizing: border-box;">enum</span> * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 保留我们自定义控件(继承自View)不被混淆</span>
-keep public <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> * <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">extends</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">android</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">view</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">View</span>{</span>
    *** get*();
    <span class="hljs-reserved" style="box-sizing: border-box;">void</span> set*(***);
    public <init>(android.content.Context);
    public <init>(android.content.Context, android.util.AttributeSet);
    public <init>(android.content.Context, android.util.AttributeSet, int);
}

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 保留Parcelable序列化类不被混淆</span>
-keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> * <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">implements</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">android</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">os</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">Parcelable</span> {</span>
    public static final android.os.Parcelable$Creator *;
}

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 保留Serializable序列化的类不被混淆</span>
-keepclassmembers <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> * <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">implements</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">java</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">io</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">Serializable</span> {</span>
    static final long serialVersionUID;
    private static final java.io.ObjectStreamField[] serialPersistentFields;
    !static !transient <fields>;
    !private <fields>;
    !private <methods>;
    private <span class="hljs-reserved" style="box-sizing: border-box;">void</span> writeObject(java.io.ObjectOutputStream);
    private <span class="hljs-reserved" style="box-sizing: border-box;">void</span> readObject(java.io.ObjectInputStream);
    java.lang.Object writeReplace();
    java.lang.Object readResolve();
}

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆</span>
-keepclassmembers <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> * {</span>
    <span class="hljs-reserved" style="box-sizing: border-box;">void</span> *(**On*Event);
    <span class="hljs-reserved" style="box-sizing: border-box;">void</span> *(**On*Listener);
}

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># webView处理,项目中没有使用到webView忽略即可</span>
-keepclassmembers <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">fqcn</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">of</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">javascript</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">interface</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">for</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">webview</span> {</span>
    public *;
}
-keepclassmembers <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> * <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">extends</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">android</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">webkit</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">webViewClient</span> {</span>
    public <span class="hljs-reserved" style="box-sizing: border-box;">void</span> *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
    public boolean *(android.webkit.WebView, java.lang.String);
}
-keepclassmembers <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> * <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">extends</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">android</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">webkit</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">webViewClient</span> {</span>
    public <span class="hljs-reserved" style="box-sizing: border-box;">void</span> *(android.webkit.webView, jav.lang.String);
}

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用,这里可以作为禁止log打印的功能使用</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 记得proguard-android.txt中一定不要加-dontoptimize才起作用</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#-assumenosideeffects class android.util.Log {</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#    public static int v(...);</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#    public static int i(...);</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#    public static int w(...);</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#    public static int d(...);</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#    public static int e(...);</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#}</span>

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">###
#
# 项目中特殊处理部分
#
###</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">######</span>

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#-----------处理反射类---------------</span>



<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#-----------处理js交互---------------</span>



<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#-----------处理实体类---------------</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 在开发的时候我们可以将所有的实体类放在一个包内,这样我们写一次混淆就行了。</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#-keep public class com.ljd.example.entity.** {</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#    public void set*(***);</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#    public *** get*();</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#    public *** is*();</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#}</span>


<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#-----------处理第三方依赖库---------</span>


</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li><li style="box-sizing: border-box; padding: 0px 5px;">40</li><li style="box-sizing: border-box; padding: 0px 5px;">41</li><li style="box-sizing: border-box; padding: 0px 5px;">42</li><li style="box-sizing: border-box; padding: 0px 5px;">43</li><li style="box-sizing: border-box; padding: 0px 5px;">44</li><li style="box-sizing: border-box; padding: 0px 5px;">45</li><li style="box-sizing: border-box; padding: 0px 5px;">46</li><li style="box-sizing: border-box; padding: 0px 5px;">47</li><li style="box-sizing: border-box; padding: 0px 5px;">48</li><li style="box-sizing: border-box; padding: 0px 5px;">49</li><li style="box-sizing: border-box; padding: 0px 5px;">50</li><li style="box-sizing: border-box; padding: 0px 5px;">51</li><li style="box-sizing: border-box; padding: 0px 5px;">52</li><li style="box-sizing: border-box; padding: 0px 5px;">53</li><li style="box-sizing: border-box; padding: 0px 5px;">54</li><li style="box-sizing: border-box; padding: 0px 5px;">55</li><li style="box-sizing: border-box; padding: 0px 5px;">56</li><li style="box-sizing: border-box; padding: 0px 5px;">57</li><li style="box-sizing: border-box; padding: 0px 5px;">58</li><li style="box-sizing: border-box; padding: 0px 5px;">59</li><li style="box-sizing: border-box; padding: 0px 5px;">60</li><li style="box-sizing: border-box; padding: 0px 5px;">61</li><li style="box-sizing: border-box; padding: 0px 5px;">62</li><li style="box-sizing: border-box; padding: 0px 5px;">63</li><li style="box-sizing: border-box; padding: 0px 5px;">64</li><li style="box-sizing: border-box; padding: 0px 5px;">65</li><li style="box-sizing: border-box; padding: 0px 5px;">66</li><li style="box-sizing: border-box; padding: 0px 5px;">67</li><li style="box-sizing: border-box; padding: 0px 5px;">68</li><li style="box-sizing: border-box; padding: 0px 5px;">69</li><li style="box-sizing: border-box; padding: 0px 5px;">70</li><li style="box-sizing: border-box; padding: 0px 5px;">71</li><li style="box-sizing: border-box; padding: 0px 5px;">72</li><li style="box-sizing: border-box; padding: 0px 5px;">73</li><li style="box-sizing: border-box; padding: 0px 5px;">74</li><li style="box-sizing: border-box; padding: 0px 5px;">75</li><li style="box-sizing: border-box; padding: 0px 5px;">76</li><li style="box-sizing: border-box; padding: 0px 5px;">77</li><li style="box-sizing: border-box; padding: 0px 5px;">78</li><li style="box-sizing: border-box; padding: 0px 5px;">79</li><li style="box-sizing: border-box; padding: 0px 5px;">80</li><li style="box-sizing: border-box; padding: 0px 5px;">81</li><li style="box-sizing: border-box; padding: 0px 5px;">82</li><li style="box-sizing: border-box; padding: 0px 5px;">83</li><li style="box-sizing: border-box; padding: 0px 5px;">84</li><li style="box-sizing: border-box; padding: 0px 5px;">85</li><li style="box-sizing: border-box; padding: 0px 5px;">86</li><li style="box-sizing: border-box; padding: 0px 5px;">87</li><li style="box-sizing: border-box; padding: 0px 5px;">88</li><li style="box-sizing: border-box; padding: 0px 5px;">89</li><li style="box-sizing: border-box; padding: 0px 5px;">90</li><li style="box-sizing: border-box; padding: 0px 5px;">91</li><li style="box-sizing: border-box; padding: 0px 5px;">92</li><li style="box-sizing: border-box; padding: 0px 5px;">93</li><li style="box-sizing: border-box; padding: 0px 5px;">94</li><li style="box-sizing: border-box; padding: 0px 5px;">95</li><li style="box-sizing: border-box; padding: 0px 5px;">96</li><li style="box-sizing: border-box; padding: 0px 5px;">97</li><li style="box-sizing: border-box; padding: 0px 5px;">98</li><li style="box-sizing: border-box; padding: 0px 5px;">99</li><li style="box-sizing: border-box; padding: 0px 5px;">100</li><li style="box-sizing: border-box; padding: 0px 5px;">101</li><li style="box-sizing: border-box; padding: 0px 5px;">102</li><li style="box-sizing: border-box; padding: 0px 5px;">103</li><li style="box-sizing: border-box; padding: 0px 5px;">104</li><li style="box-sizing: border-box; padding: 0px 5px;">105</li><li style="box-sizing: border-box; padding: 0px 5px;">106</li><li style="box-sizing: border-box; padding: 0px 5px;">107</li><li style="box-sizing: border-box; padding: 0px 5px;">108</li><li style="box-sizing: border-box; padding: 0px 5px;">109</li><li style="box-sizing: border-box; padding: 0px 5px;">110</li><li style="box-sizing: border-box; padding: 0px 5px;">111</li><li style="box-sizing: border-box; padding: 0px 5px;">112</li><li style="box-sizing: border-box; padding: 0px 5px;">113</li><li style="box-sizing: border-box; padding: 0px 5px;">114</li><li style="box-sizing: border-box; padding: 0px 5px;">115</li><li style="box-sizing: border-box; padding: 0px 5px;">116</li><li style="box-sizing: border-box; padding: 0px 5px;">117</li><li style="box-sizing: border-box; padding: 0px 5px;">118</li><li style="box-sizing: border-box; padding: 0px 5px;">119</li><li style="box-sizing: border-box; padding: 0px 5px;">120</li><li style="box-sizing: border-box; padding: 0px 5px;">121</li><li style="box-sizing: border-box; padding: 0px 5px;">122</li><li style="box-sizing: border-box; padding: 0px 5px;">123</li><li style="box-sizing: border-box; padding: 0px 5px;">124</li><li style="box-sizing: border-box; padding: 0px 5px;">125</li><li style="box-sizing: border-box; padding: 0px 5px;">126</li><li style="box-sizing: border-box; padding: 0px 5px;">127</li><li style="box-sizing: border-box; padding: 0px 5px;">128</li><li style="box-sizing: border-box; padding: 0px 5px;">129</li><li style="box-sizing: border-box; padding: 0px 5px;">130</li><li style="box-sizing: border-box; padding: 0px 5px;">131</li><li style="box-sizing: border-box; padding: 0px 5px;">132</li><li style="box-sizing: border-box; padding: 0px 5px;">133</li><li style="box-sizing: border-box; padding: 0px 5px;">134</li><li style="box-sizing: border-box; padding: 0px 5px;">135</li><li style="box-sizing: border-box; padding: 0px 5px;">136</li><li style="box-sizing: border-box; padding: 0px 5px;">137</li><li style="box-sizing: border-box; padding: 0px 5px;">138</li><li style="box-sizing: border-box; padding: 0px 5px;">139</li><li style="box-sizing: border-box; padding: 0px 5px;">140</li><li style="box-sizing: border-box; padding: 0px 5px;">141</li><li style="box-sizing: border-box; padding: 0px 5px;">142</li><li style="box-sizing: border-box; padding: 0px 5px;">143</li><li style="box-sizing: border-box; padding: 0px 5px;">144</li><li style="box-sizing: border-box; padding: 0px 5px;">145</li><li style="box-sizing: border-box; padding: 0px 5px;">146</li><li style="box-sizing: border-box; padding: 0px 5px;">147</li><li style="box-sizing: border-box; padding: 0px 5px;">148</li><li style="box-sizing: border-box; padding: 0px 5px;">149</li><li style="box-sizing: border-box; padding: 0px 5px;">150</li><li style="box-sizing: border-box; padding: 0px 5px;">151</li><li style="box-sizing: border-box; padding: 0px 5px;">152</li><li style="box-sizing: border-box; padding: 0px 5px;">153</li><li style="box-sizing: border-box; padding: 0px 5px;">154</li><li style="box-sizing: border-box; padding: 0px 5px;">155</li><li style="box-sizing: border-box; padding: 0px 5px;">156</li><li style="box-sizing: border-box; padding: 0px 5px;">157</li><li style="box-sizing: border-box; padding: 0px 5px;">158</li><li style="box-sizing: border-box; padding: 0px 5px;">159</li><li style="box-sizing: border-box; padding: 0px 5px;">160</li><li style="box-sizing: border-box; padding: 0px 5px;">161</li><li style="box-sizing: border-box; padding: 0px 5px;">162</li><li style="box-sizing: border-box; padding: 0px 5px;">163</li><li style="box-sizing: border-box; padding: 0px 5px;">164</li><li style="box-sizing: border-box; padding: 0px 5px;">165</li><li style="box-sizing: border-box; padding: 0px 5px;">166</li><li style="box-sizing: border-box; padding: 0px 5px;">167</li><li style="box-sizing: border-box; padding: 0px 5px;">168</li></ul>

  下面介绍常用第三方混淆配置(已按字母排序,不定期更新):

<code class="hljs haml has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"># AndroidEventBus
-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">org</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">simple</span>.** { *;</span> }
</span>-<span class="ruby" style="box-sizing: border-box;">keep interface org.simple.** { *; }
</span>-<span class="ruby" style="box-sizing: border-box;">keepclassmembers <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> * {</span>
</span>    @org.simple.eventbus.Subscriber <methods>;
}

# 百度地图(jar包换成自己的版本,记得签名要匹配)
-<span class="ruby" style="box-sizing: border-box;">libraryjars libs/baidumapapi_v2_1_3.jar
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">baidu</span>.** {*;</span>}
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">vi</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.** {*;</span>}
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">sinovoice</span>.** {*;</span>}
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">pvi</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.** {*;</span>}
</span>-<span class="ruby" style="box-sizing: border-box;">dontwarn com.baidu.**
</span>-<span class="ruby" style="box-sizing: border-box;">dontwarn vi.com.**
</span>-<span class="ruby" style="box-sizing: border-box;">dontwarn pvi.com.**
</span>
# Bugly
-<span class="ruby" style="box-sizing: border-box;">dontwarn com.tencent.bugly.**
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">tencent</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">bugly</span>.** {*;</span>}
</span>
# ButterKnife
-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">butterknife</span>.** { *;</span> }
</span>-<span class="ruby" style="box-sizing: border-box;">dontwarn butterknife.internal.**
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> **$$<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">ViewBinder</span> { *;</span> } 
</span>-<span class="ruby" style="box-sizing: border-box;">keepclasseswithmembernames <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> * {</span>
</span>    @butterknife.* <fields>;
} 
-<span class="ruby" style="box-sizing: border-box;">keepclasseswithmembernames <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> * {</span>
</span>    @butterknife.* <methods>;
}

# EventBus
-<span class="ruby" style="box-sizing: border-box;">keepattributes *<span class="hljs-constant" style="box-sizing: border-box;">Annotation</span>*
</span>-<span class="ruby" style="box-sizing: border-box;">keepclassmembers <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> ** {</span>
</span>    @org.greenrobot.eventbus.Subscribe <methods>;
}
-<span class="ruby" style="box-sizing: border-box;">keep enum org.greenrobot.eventbus.<span class="hljs-constant" style="box-sizing: border-box;">ThreadMode</span> { *; }
</span>
# Facebook
-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">facebook</span>.** {*;</span>}
</span>-<span class="ruby" style="box-sizing: border-box;">keep interface com.facebook.** {*;}
</span>-<span class="ruby" style="box-sizing: border-box;">keep enum com.facebook.** {*;}
</span>
# FastJson
-<span class="ruby" style="box-sizing: border-box;">dontwarn com.alibaba.fastjson.**
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">alibaba</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">fastjson</span>.** { *;</span> }
</span>-<span class="ruby" style="box-sizing: border-box;">keepattributes <span class="hljs-constant" style="box-sizing: border-box;">Signature</span>
</span>-<span class="ruby" style="box-sizing: border-box;">keepattributes *<span class="hljs-constant" style="box-sizing: border-box;">Annotation</span>*
</span>
# Fresco
-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">facebook</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">fresco</span>.** {*;</span>}
</span>-<span class="ruby" style="box-sizing: border-box;">keep interface com.facebook.fresco.** {*;}
</span>-<span class="ruby" style="box-sizing: border-box;">keep enum com.facebook.fresco.** {*;}
</span>
# 高德相关依赖
# 集合包:3D地图3.3.2 导航1.8.0 定位2.5.0
-<span class="ruby" style="box-sizing: border-box;">dontwarn com.amap.api.**
</span>-<span class="ruby" style="box-sizing: border-box;">dontwarn com.autonavi.**
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">amap</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">api</span>.**{*;</span>}
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">autonavi</span>.**{*;</span>}
</span># 地图服务
-<span class="ruby" style="box-sizing: border-box;">dontwarn com.amap.api.services.**
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">map</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">api</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">services</span>.** {*;</span>}
</span># 3D地图
-<span class="ruby" style="box-sizing: border-box;">dontwarn com.amap.api.mapcore.**
</span>-<span class="ruby" style="box-sizing: border-box;">dontwarn com.amap.api.maps.**
</span>-<span class="ruby" style="box-sizing: border-box;">dontwarn com.autonavi.amap.mapcore.**
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">amap</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">api</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">mapcore</span>.**{*;</span>}
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">amap</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">api</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">maps</span>.**{*;</span>}
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">autonavi</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">amap</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">mapcore</span>.**{*;</span>}
</span># 定位
-<span class="ruby" style="box-sizing: border-box;">dontwarn com.amap.api.location.**
</span>-<span class="ruby" style="box-sizing: border-box;">dontwarn com.aps.**
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">amap</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">api</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">location</span>.**{*;</span>}
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">aps</span>.**{*;</span>}
</span># 导航
-<span class="ruby" style="box-sizing: border-box;">dontwarn com.amap.api.navi.**
</span>-<span class="ruby" style="box-sizing: border-box;">dontwarn com.autonavi.**
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">amap</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">api</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">navi</span>.** {*;</span>}
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">autonavi</span>.** {*;</span>}
</span>
# Glide
-<span class="ruby" style="box-sizing: border-box;">keep public <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> * <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">implements</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">bumptech</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">glide</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">module</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">GlideModule</span></span>
</span>-<span class="ruby" style="box-sizing: border-box;">keep public enum com.bumptech.glide.load.resource.bitmap.<span class="hljs-constant" style="box-sizing: border-box;">ImageHeaderParser</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$*</span>* {
</span>  **[] $VALUES;
  public *;
}

# Gson
-<span class="ruby" style="box-sizing: border-box;">keepattributes <span class="hljs-constant" style="box-sizing: border-box;">Signature</span>-keepattributes *<span class="hljs-constant" style="box-sizing: border-box;">Annotation</span>*
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">sun</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">misc</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">Unsafe</span> { *;</span> }
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">google</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">gson</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">stream</span>.** { *;</span> }
</span># 使用Gson时需要配置Gson的解析对象及变量都不混淆。不然Gson会找不到变量。
# 将下面替换成自己的实体类
-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">example</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">bean</span>.** { *;</span> }
</span>
# Jackson
-<span class="ruby" style="box-sizing: border-box;">dontwarn org.codehaus.jackson.**
</span>-<span class="ruby" style="box-sizing: border-box;">dontwarn com.fasterxml.jackson.databind.**
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">org</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">codehaus</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">jackson</span>.** { *;</span>}
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">fasterxml</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">jackson</span>.** { *;</span> }
</span>
# 极光推送
-<span class="ruby" style="box-sizing: border-box;">dontoptimize
</span>-<span class="ruby" style="box-sizing: border-box;">dontpreverify
</span>-<span class="ruby" style="box-sizing: border-box;">dontwarn cn.jpush.**
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">cn</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">jpush</span>.** { *;</span> }
</span>
# OkHttp3
-<span class="ruby" style="box-sizing: border-box;">dontwarn com.squareup.okhttp3.**
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">squareup</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">okhttp3</span>.** { *;</span>}
</span>-<span class="ruby" style="box-sizing: border-box;">dontwarn okio.**
</span>
# Okio
-<span class="ruby" style="box-sizing: border-box;">dontwarn com.squareup.**  
</span>-<span class="ruby" style="box-sizing: border-box;">dontwarn okio.**  
</span>-<span class="ruby" style="box-sizing: border-box;">keep public <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">org</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">codehaus</span>.* { *;</span> }  
</span>-<span class="ruby" style="box-sizing: border-box;">keep public <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">java</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">nio</span>.* { *;</span> }
</span>
# OrmLite
-<span class="ruby" style="box-sizing: border-box;">keepattributes *<span class="hljs-constant" style="box-sizing: border-box;">DatabaseField</span>* 
</span>-<span class="ruby" style="box-sizing: border-box;">keepattributes *<span class="hljs-constant" style="box-sizing: border-box;">DatabaseTable</span>* 
</span>-<span class="ruby" style="box-sizing: border-box;">keepattributes *<span class="hljs-constant" style="box-sizing: border-box;">SerializedName</span>*  
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">j256</span>.**</span>
</span>-<span class="ruby" style="box-sizing: border-box;">keepclassmembers <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">j256</span>.** { *;</span> }
</span>-<span class="ruby" style="box-sizing: border-box;">keep enum com.j256.**
</span>-<span class="ruby" style="box-sizing: border-box;">keepclassmembers enum com.j256.** { *; }
</span>-<span class="ruby" style="box-sizing: border-box;">keep interface com.j256.**
</span>-<span class="ruby" style="box-sizing: border-box;">keepclassmembers interface com.j256.** { *; }
</span>
# Realm
-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">io</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">realm</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">annotations</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">RealmModule</span></span>
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@io</span>.realm.annotations.<span class="hljs-constant" style="box-sizing: border-box;">RealmModule</span> <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> *</span>
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">io</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">realm</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">internal</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">Keep</span></span>
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@io</span>.realm.internal.<span class="hljs-constant" style="box-sizing: border-box;">Keep</span> <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> * { *;</span> }
</span>-<span class="ruby" style="box-sizing: border-box;">dontwarn javax.**
</span>-<span class="ruby" style="box-sizing: border-box;">dontwarn io.realm.**
</span>
# Retrofit
-<span class="ruby" style="box-sizing: border-box;">dontwarn retrofit2.**
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">retrofit2</span>.** { *;</span> }
</span>-<span class="ruby" style="box-sizing: border-box;">keepattributes <span class="hljs-constant" style="box-sizing: border-box;">Signature</span>
</span>-<span class="ruby" style="box-sizing: border-box;">keepattributes <span class="hljs-constant" style="box-sizing: border-box;">Exceptions</span>
</span>
# Retrolambda
-<span class="ruby" style="box-sizing: border-box;">dontwarn java.lang.invoke.*
</span>
# RxJava RxAndroid
-<span class="ruby" style="box-sizing: border-box;">dontwarn sun.misc.**
</span>-<span class="ruby" style="box-sizing: border-box;">keepclassmembers <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">rx</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">internal</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">util</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">unsafe</span>.*<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">ArrayQueue</span>*<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">Field</span>* {</span>
</span>    long producerIndex;
    long consumerIndex;
}
-<span class="ruby" style="box-sizing: border-box;">keepclassmembers <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">rx</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">internal</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">util</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">unsafe</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">BaseLinkedQueueProducerNodeRef</span> {</span>
</span>    rx.internal.util.atomic.LinkedQueueNode producerNode;
}
-<span class="ruby" style="box-sizing: border-box;">keepclassmembers <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">rx</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">internal</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">util</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">unsafe</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">BaseLinkedQueueConsumerNodeRef</span> {</span>
</span>    rx.internal.util.atomic.LinkedQueueNode consumerNode;
}

# 微信支付
-<span class="ruby" style="box-sizing: border-box;">dontwarn com.tencent.mm.**
</span>-<span class="ruby" style="box-sizing: border-box;">dontwarn com.tencent.wxop.stat.**
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">tencent</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">mm</span>.** {*;</span>}
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">tencent</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">wxop</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">stat</span>.**{*;</span>}
</span>
# 信鸽
-<span class="ruby" style="box-sizing: border-box;">keep public <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> * <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">extends</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">android</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">app</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">Service</span></span>
</span>-<span class="ruby" style="box-sizing: border-box;">keep public <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> * <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">extends</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">android</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">content</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">BroadcastReceiver</span></span>
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">tencent</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">android</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">tpush</span>.**  {* ;</span>}
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">tencent</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">mid</span>.**  {* ;</span>}
</span>-<span class="ruby" style="box-sizing: border-box;">keepattributes *<span class="hljs-constant" style="box-sizing: border-box;">Annotation</span>*
</span>
# 新浪微博
-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">sina</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">weibo</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">sdk</span>.* { *;</span> }  
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">android</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">support</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">v4</span>.* { *;</span> }  
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">tencent</span>.* { *;</span> }  
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">baidu</span>.* { *;</span> }  
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">lombok</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">ast</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">ecj</span>.* { *;</span> }  
</span>-<span class="ruby" style="box-sizing: border-box;">dontwarn android.support.v4.**  
</span>-<span class="ruby" style="box-sizing: border-box;">dontwarn com.tencent.**s  
</span>-<span class="ruby" style="box-sizing: border-box;">dontwarn com.baidu.**  
</span>
# 讯飞语音
-<span class="ruby" style="box-sizing: border-box;">dontwarn com.iflytek.**
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">iflytek</span>.** {*;</span>}
</span>
# 银联
-<span class="ruby" style="box-sizing: border-box;">dontwarn com.unionpay.**
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">unionpay</span>.** { *;</span> }
</span>
# 友盟统计分析
-<span class="ruby" style="box-sizing: border-box;">keepclassmembers <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> * { <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">public</span> <span class="hljs-inheritance" style="box-sizing: border-box;"><<span class="hljs-parent" style="box-sizing: border-box;">init</span></span>>(<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">org</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">json</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">JSONObject</span>);</span> }
</span>-<span class="ruby" style="box-sizing: border-box;">keepclassmembers enum com.umeng.analytics.** {
</span>    public static **[] values();
    public static ** valueOf(java.lang.String);
}

# 友盟自动更新
-<span class="ruby" style="box-sizing: border-box;">keepclassmembers <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> * { <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">public</span> <span class="hljs-inheritance" style="box-sizing: border-box;"><<span class="hljs-parent" style="box-sizing: border-box;">init</span></span>>(<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">org</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">json</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">JSONObject</span>);</span> }
</span>-<span class="ruby" style="box-sizing: border-box;">keep public <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">cn</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">irains</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">parking</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">cloud</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">pub</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">R</span>$*{ <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">public</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">static</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">final</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">int</span> *;</span> }
</span>-<span class="ruby" style="box-sizing: border-box;">keep public <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> * <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">extends</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">umeng</span>.**</span>
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">umeng</span>.** { *;</span> }
</span>
# 支付宝钱包
-<span class="ruby" style="box-sizing: border-box;">dontwarn com.alipay.**
</span>-<span class="ruby" style="box-sizing: border-box;">dontwarn <span class="hljs-constant" style="box-sizing: border-box;">HttpUtils</span>.<span class="hljs-constant" style="box-sizing: border-box;">HttpFetcher</span>
</span>-<span class="ruby" style="box-sizing: border-box;">dontwarn com.ta.utdid2.**
</span>-<span class="ruby" style="box-sizing: border-box;">dontwarn com.ut.device.**
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">alipay</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">android</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">app</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">IAlixPay</span>{*;</span>}
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">alipay</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">android</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">app</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">IAlixPay</span>$<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">Stub</span>{*;</span>}
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">alipay</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">android</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">app</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">IRemoteServiceCallback</span>{*;</span>}
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">alipay</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">android</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">app</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">IRemoteServiceCallback</span>$<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">Stub</span>{*;</span>}
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">alipay</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">sdk</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">app</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">PayTask</span>{ <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">public</span> *;</span>}
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">alipay</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">sdk</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">app</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">AuthTask</span>{ <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">public</span> *;</span>}
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">alipay</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">mobilesecuritysdk</span>.*</span>
</span>-<span class="ruby" style="box-sizing: border-box;">keep <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">com</span>.<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">ut</span>.*</span></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li><li style="box-sizing: border-box; padding: 0px 5px;">40</li><li style="box-sizing: border-box; padding: 0px 5px;">41</li><li style="box-sizing: border-box; padding: 0px 5px;">42</li><li style="box-sizing: border-box; padding: 0px 5px;">43</li><li style="box-sizing: border-box; padding: 0px 5px;">44</li><li style="box-sizing: border-box; padding: 0px 5px;">45</li><li style="box-sizing: border-box; padding: 0px 5px;">46</li><li style="box-sizing: border-box; padding: 0px 5px;">47</li><li style="box-sizing: border-box; padding: 0px 5px;">48</li><li style="box-sizing: border-box; padding: 0px 5px;">49</li><li style="box-sizing: border-box; padding: 0px 5px;">50</li><li style="box-sizing: border-box; padding: 0px 5px;">51</li><li style="box-sizing: border-box; padding: 0px 5px;">52</li><li style="box-sizing: border-box; padding: 0px 5px;">53</li><li style="box-sizing: border-box; padding: 0px 5px;">54</li><li style="box-sizing: border-box; padding: 0px 5px;">55</li><li style="box-sizing: border-box; padding: 0px 5px;">56</li><li style="box-sizing: border-box; padding: 0px 5px;">57</li><li style="box-sizing: border-box; padding: 0px 5px;">58</li><li style="box-sizing: border-box; padding: 0px 5px;">59</li><li style="box-sizing: border-box; padding: 0px 5px;">60</li><li style="box-sizing: border-box; padding: 0px 5px;">61</li><li style="box-sizing: border-box; padding: 0px 5px;">62</li><li style="box-sizing: border-box; padding: 0px 5px;">63</li><li style="box-sizing: border-box; padding: 0px 5px;">64</li><li style="box-sizing: border-box; padding: 0px 5px;">65</li><li style="box-sizing: border-box; padding: 0px 5px;">66</li><li style="box-sizing: border-box; padding: 0px 5px;">67</li><li style="box-sizing: border-box; padding: 0px 5px;">68</li><li style="box-sizing: border-box; padding: 0px 5px;">69</li><li style="box-sizing: border-box; padding: 0px 5px;">70</li><li style="box-sizing: border-box; padding: 0px 5px;">71</li><li style="box-sizing: border-box; padding: 0px 5px;">72</li><li style="box-sizing: border-box; padding: 0px 5px;">73</li><li style="box-sizing: border-box; padding: 0px 5px;">74</li><li style="box-sizing: border-box; padding: 0px 5px;">75</li><li style="box-sizing: border-box; padding: 0px 5px;">76</li><li style="box-sizing: border-box; padding: 0px 5px;">77</li><li style="box-sizing: border-box; padding: 0px 5px;">78</li><li style="box-sizing: border-box; padding: 0px 5px;">79</li><li style="box-sizing: border-box; padding: 0px 5px;">80</li><li style="box-sizing: border-box; padding: 0px 5px;">81</li><li style="box-sizing: border-box; padding: 0px 5px;">82</li><li style="box-sizing: border-box; padding: 0px 5px;">83</li><li style="box-sizing: border-box; padding: 0px 5px;">84</li><li style="box-sizing: border-box; padding: 0px 5px;">85</li><li style="box-sizing: border-box; padding: 0px 5px;">86</li><li style="box-sizing: border-box; padding: 0px 5px;">87</li><li style="box-sizing: border-box; padding: 0px 5px;">88</li><li style="box-sizing: border-box; padding: 0px 5px;">89</li><li style="box-sizing: border-box; padding: 0px 5px;">90</li><li style="box-sizing: border-box; padding: 0px 5px;">91</li><li style="box-sizing: border-box; padding: 0px 5px;">92</li><li style="box-sizing: border-box; padding: 0px 5px;">93</li><li style="box-sizing: border-box; padding: 0px 5px;">94</li><li style="box-sizing: border-box; padding: 0px 5px;">95</li><li style="box-sizing: border-box; padding: 0px 5px;">96</li><li style="box-sizing: border-box; padding: 0px 5px;">97</li><li style="box-sizing: border-box; padding: 0px 5px;">98</li><li style="box-sizing: border-box; padding: 0px 5px;">99</li><li style="box-sizing: border-box; padding: 0px 5px;">100</li><li style="box-sizing: border-box; padding: 0px 5px;">101</li><li style="box-sizing: border-box; padding: 0px 5px;">102</li><li style="box-sizing: border-box; padding: 0px 5px;">103</li><li style="box-sizing: border-box; padding: 0px 5px;">104</li><li style="box-sizing: border-box; padding: 0px 5px;">105</li><li style="box-sizing: border-box; padding: 0px 5px;">106</li><li style="box-sizing: border-box; padding: 0px 5px;">107</li><li style="box-sizing: border-box; padding: 0px 5px;">108</li><li style="box-sizing: border-box; padding: 0px 5px;">109</li><li style="box-sizing: border-box; padding: 0px 5px;">110</li><li style="box-sizing: border-box; padding: 0px 5px;">111</li><li style="box-sizing: border-box; padding: 0px 5px;">112</li><li style="box-sizing: border-box; padding: 0px 5px;">113</li><li style="box-sizing: border-box; padding: 0px 5px;">114</li><li style="box-sizing: border-box; padding: 0px 5px;">115</li><li style="box-sizing: border-box; padding: 0px 5px;">116</li><li style="box-sizing: border-box; padding: 0px 5px;">117</li><li style="box-sizing: border-box; padding: 0px 5px;">118</li><li style="box-sizing: border-box; padding: 0px 5px;">119</li><li style="box-sizing: border-box; padding: 0px 5px;">120</li><li style="box-sizing: border-box; padding: 0px 5px;">121</li><li style="box-sizing: border-box; padding: 0px 5px;">122</li><li style="box-sizing: border-box; padding: 0px 5px;">123</li><li style="box-sizing: border-box; padding: 0px 5px;">124</li><li style="box-sizing: border-box; padding: 0px 5px;">125</li><li style="box-sizing: border-box; padding: 0px 5px;">126</li><li style="box-sizing: border-box; padding: 0px 5px;">127</li><li style="box-sizing: border-box; padding: 0px 5px;">128</li><li style="box-sizing: border-box; padding: 0px 5px;">129</li><li style="box-sizing: border-box; padding: 0px 5px;">130</li><li style="box-sizing: border-box; padding: 0px 5px;">131</li><li style="box-sizing: border-box; padding: 0px 5px;">132</li><li style="box-sizing: border-box; padding: 0px 5px;">133</li><li style="box-sizing: border-box; padding: 0px 5px;">134</li><li style="box-sizing: border-box; padding: 0px 5px;">135</li><li style="box-sizing: border-box; padding: 0px 5px;">136</li><li style="box-sizing: border-box; padding: 0px 5px;">137</li><li style="box-sizing: border-box; padding: 0px 5px;">138</li><li style="box-sizing: border-box; padding: 0px 5px;">139</li><li style="box-sizing: border-box; padding: 0px 5px;">140</li><li style="box-sizing: border-box; padding: 0px 5px;">141</li><li style="box-sizing: border-box; padding: 0px 5px;">142</li><li style="box-sizing: border-box; padding: 0px 5px;">143</li><li style="box-sizing: border-box; padding: 0px 5px;">144</li><li style="box-sizing: border-box; padding: 0px 5px;">145</li><li style="box-sizing: border-box; padding: 0px 5px;">146</li><li style="box-sizing: border-box; padding: 0px 5px;">147</li><li style="box-sizing: border-box; padding: 0px 5px;">148</li><li style="box-sizing: border-box; padding: 0px 5px;">149</li><li style="box-sizing: border-box; padding: 0px 5px;">150</li><li style="box-sizing: border-box; padding: 0px 5px;">151</li><li style="box-sizing: border-box; padding: 0px 5px;">152</li><li style="box-sizing: border-box; padding: 0px 5px;">153</li><li style="box-sizing: border-box; padding: 0px 5px;">154</li><li style="box-sizing: border-box; padding: 0px 5px;">155</li><li style="box-sizing: border-box; padding: 0px 5px;">156</li><li style="box-sizing: border-box; padding: 0px 5px;">157</li><li style="box-sizing: border-box; padding: 0px 5px;">158</li><li style="box-sizing: border-box; padding: 0px 5px;">159</li><li style="box-sizing: border-box; padding: 0px 5px;">160</li><li style="box-sizing: border-box; padding: 0px 5px;">161</li><li style="box-sizing: border-box; padding: 0px 5px;">162</li><li style="box-sizing: border-box; padding: 0px 5px;">163</li><li style="box-sizing: border-box; padding: 0px 5px;">164</li><li style="box-sizing: border-box; padding: 0px 5px;">165</li><li style="box-sizing: border-box; padding: 0px 5px;">166</li><li style="box-sizing: border-box; padding: 0px 5px;">167</li><li style="box-sizing: border-box; padding: 0px 5px;">168</li><li style="box-sizing: border-box; padding: 0px 5px;">169</li><li style="box-sizing: border-box; padding: 0px 5px;">170</li><li style="box-sizing: border-box; padding: 0px 5px;">171</li><li style="box-sizing: border-box; padding: 0px 5px;">172</li><li style="box-sizing: border-box; padding: 0px 5px;">173</li><li style="box-sizing: border-box; padding: 0px 5px;">174</li><li style="box-sizing: border-box; padding: 0px 5px;">175</li><li style="box-sizing: border-box; padding: 0px 5px;">176</li><li style="box-sizing: border-box; padding: 0px 5px;">177</li><li style="box-sizing: border-box; padding: 0px 5px;">178</li><li style="box-sizing: border-box; padding: 0px 5px;">179</li><li style="box-sizing: border-box; padding: 0px 5px;">180</li><li style="box-sizing: border-box; padding: 0px 5px;">181</li><li style="box-sizing: border-box; padding: 0px 5px;">182</li><li style="box-sizing: border-box; padding: 0px 5px;">183</li><li style="box-sizing: border-box; padding: 0px 5px;">184</li><li style="box-sizing: border-box; padding: 0px 5px;">185</li><li style="box-sizing: border-box; padding: 0px 5px;">186</li><li style="box-sizing: border-box; padding: 0px 5px;">187</li><li style="box-sizing: border-box; padding: 0px 5px;">188</li><li style="box-sizing: border-box; padding: 0px 5px;">189</li><li style="box-sizing: border-box; padding: 0px 5px;">190</li><li style="box-sizing: border-box; padding: 0px 5px;">191</li><li style="box-sizing: border-box; padding: 0px 5px;">192</li><li style="box-sizing: border-box; padding: 0px 5px;">193</li><li style="box-sizing: border-box; padding: 0px 5px;">194</li><li style="box-sizing: border-box; padding: 0px 5px;">195</li><li style="box-sizing: border-box; padding: 0px 5px;">196</li><li style="box-sizing: border-box; padding: 0px 5px;">197</li><li style="box-sizing: border-box; padding: 0px 5px;">198</li><li style="box-sizing: border-box; padding: 0px 5px;">199</li><li style="box-sizing: border-box; padding: 0px 5px;">200</li><li style="box-sizing: border-box; padding: 0px 5px;">201</li><li style="box-sizing: border-box; padding: 0px 5px;">202</li><li style="box-sizing: border-box; padding: 0px 5px;">203</li><li style="box-sizing: border-box; padding: 0px 5px;">204</li><li style="box-sizing: border-box; padding: 0px 5px;">205</li><li style="box-sizing: border-box; padding: 0px 5px;">206</li><li style="box-sizing: border-box; padding: 0px 5px;">207</li><li style="box-sizing: border-box; padding: 0px 5px;">208</li><li style="box-sizing: border-box; padding: 0px 5px;">209</li><li style="box-sizing: border-box; padding: 0px 5px;">210</li><li style="box-sizing: border-box; padding: 0px 5px;">211</li><li style="box-sizing: border-box; padding: 0px 5px;">212</li><li style="box-sizing: border-box; padding: 0px 5px;">213</li><li style="box-sizing: border-box; padding: 0px 5px;">214</li><li style="box-sizing: border-box; padding: 0px 5px;">215</li><li style="box-sizing: border-box; padding: 0px 5px;">216</li><li style="box-sizing: border-box; padding: 0px 5px;">217</li><li style="box-sizing: border-box; padding: 0px 5px;">218</li></ul>

原文地址Android Studio混淆模板及常用第三方混淆(看了都说好) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值