高效码农

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 构建、打包、测试。搞定!

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »