android studio 混淆打包apk后volley无法访问网络
一、问题
最近在开发升级Android版APP时,打包APK后出现无法访问网络的错误:
二、解决方案:
先说解决方案,再说解决过程。方便大家快速解决问题。开发的时间,你懂得~~~
在gradle-wrapper.properties文件中修改:
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
在build.gradle中修改:
dependencies {
classpath 'com.android.tools.build:gradle:3.2.0'
}
注意:gradle版本和插件版本需要对应
三、解决思路
在开发和打包的时候都没有问题,打包后出现。说明业务代码没有问题,可能是打包参数出现问题。
排查问题发现minifyEnabled true
参数;当值设置为true时,APK没有问题。一开始认为是混淆规则中的volley被混淆无法找到的原因,添加了volley的:
# volley
-keep class com.android.volley.** {*;}
-keep class com.android.volley.toolbox.** {*;}
-keep class com.android.volley.Response$* {*;}
-keep class com.android.volley.Request$* {*;}
-keep class com.android.volley.RequestQueue$* {*;}
-keep class com.android.volley.toolbox.HurlStack$* {*;}
-keep class com.android.volley.toolbox.ImageLoader$* {*;}
-keep class org.apache.http.** {*;}
问题依旧没有解决!!!
折腾无数次之后,想到由于之前都是在MacOS上开发iOS版,转到windows上开发Android时将Android Studio、gradle版本都升级到了最新版本。于是开始降级gradle版本,将gradle版本从5.1.1降级到4.6,插件从3.4降级到3.1在构建时出错,原因是插件版本和gradle版本不一致。翻看Android Developers
最后将gradle版本改为4.6 插件版本改为3.2 构建、打包、测试。搞定!