as混淆几个问题的解决

感谢大佬们:

1、https://www.cnblogs.com/welhzh/p/6017434.html,这是个厉害的大佬,总结的很到位

2、https://blog.csdn.net/qq_35064774/article/details/52871521,这个有用的地方在此:

    

自定义配置忽略第三方jar包

首先我们要知道项目引入了多少jar包。 
在AS中也非常简单。打开build.gradle,找到dependencies,比如我的项目中是这样的:

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile files('libs/RootTools.jar')
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.android.support:support-v4:23.4.0'
    compile 'com.squareup.okhttp3:okhttp:3.4.1'
    compile 'com.squareup.okio:okio:1.10.0'
    compile 'com.google.code.gson:gson:2.7'
    compile 'com.android.support:support-vector-drawable:23.4.0'
    compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha9'
    testCompile 'junit:junit:4.12'
}

在这里可以清晰的看到compile中引用的库,除了官方的support库,其他都是需要自己在配置文件中取消混淆的。


接着是自定义文件配置。打开proguard-rules.pro,在里面加入-keep class com.xxx.**{*;}这样的忽略指定包名的语句。比如我的配置如下:

-keep class com.squareup.okio.**{*;}
-keep class com.squareup.okhttp3.**{*;}
-keep class com.google.code.gson.**{*;}
-keep class com.squareup.okio.**{*;}
-keep class com.stericson.RootTools.**{*;}

当然这样配置之后,可能你的项目依旧报错,那可能是你也使用了okio库。只需要在附加上这样一句。

-dontwarn okio.**
3、 https://blog.csdn.net/qduningning/article/details/41441387,这个解决了打包警告问题:

there were **duplicate class definitions,解决此问题命令:

根据提示,在proguard-project.txt文件添加

-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose
-ignorewarnings

4、https://blog.csdn.net/lvxiangan/article/details/17911623,这个解决了这个问题:

can't find superclass or interface,命令如下:

-dontwarn com.xx.bbb.**
-keep class com.xx.bbb.** { *;}

本以为需要避免混淆libs目录下的jar,查了一天命令,试了又试,没用,最后看到了第一位大佬说的,才知道不用管那些,也借助第一位大佬的文章,做了避免本地实体类混淆的命令,最后搞定,一天时间就这么没啦!

你可能感兴趣的:(我的android之路)