问题描述
这是一个很长的故事,我将尽力提供尽可能多的细节。
几个月来,我一直在使用android studio 3.x.x来构建我的应用程序,直到最近它开始为我提供最新的稳定版4.0.1的更新。
我进行了更新,并且按预期的方式进行了无忧无虑,所有插件均无错误更新,并且代码首先在新的android studio中编译,项目在测试中运行良好,然后我将其上传到Play商店的内部测试轨道(问题从这里开始)。
该应用程序开始在某些设备中显示某种锁定或无限循环错误...这很奇怪,因为运行调试版本时使用的设备完全相同,这时我认为有些proguard rules
是问题。因此,我调整了build.grade
文件,以使debug
构建与release
构建具有相同的设置(缩小并缩小TRUE)。
编译后,该应用程序可以在仿真器和有问题的设备中顺利运行...
我再次将其上传到Google Play,然后从那里下载该应用程序不起作用...
我进行了非常详尽且烦人的代码调试,以便以某种方式锁定什么方法,我发现了这个可疑者:
OkHttpClient.Builder httpClientBuilder = new OkHttpClient.Builder();
httpClientBuilder.readTimeout(15000,TimeUnit.MILLISECONDS);
httpClientBuilder.writeTimeout(15000,TimeUnit.MILLISECONDS);
httpClientBuilder.connectTimeout(15000,TimeUnit.MILLISECONDS);
httpClientBuilder.retryOnConnectionFailure(true);
httpClientBuilder.followRedirects(true);
httpClientBuilder.followSslRedirects(true);
httpClientBuilder.connectionPool(DEFAULT_CONNECTION_POOL);
Dispatcher dispatcher = new Dispatcher();
dispatcher.setMaxRequests(10);
dispatcher.setMaxRequestsPerHost(10);
httpClientBuilder.dispatcher(dispatcher);
okHttpClient = httpClientBuilder.build();
private boolean isInternetOK(){
boolean ret = false;
try {
okHttpClient.newCall(new Request.Builder().get().url("https://www.google.com").build()).execute();
ret true;
} catch (Exception e) {
}
return ret;
}
在启动器活动中,在开始登录之前,我验证用户互联网连接是否正常(这是简单的代码),并且httpclient
的超时时间为15秒,因此连接或快速失败。
对于我来说,为什么这种特定方法在开发商店中有效,而在从Play商店提供服务(在相同的设备和相同的构建配置中)中却不起作用,这是没有意义的
我花了几个小时试图解决问题...直到我决定将android studio降级到我使用的先前版本。以及自己解决的问题!
因此,我100%确信问题与android studio 4.0.1及其gradle插件以及它们与"com.squareup.okhttp3:okhttp:3.12.12"
的交互方式有关
这是我的观察结果:
1- android studio 4.0.1生成的apk为4.18MB,而3.6.3生成的4.33MB apk(相同的build.config
和相同的proguard.rules
)
2-将android studio更新为4.0.1后,proguard.rules开始显示很多错误,就像这里所说的:Unresolved class name proguard-rules Android Studio 4.0,但仍然可以正常编译(并且可以在缩小和缩小的情况下很好地进行调试)>
3-项目中唯一的区别是android studio版本和com.android.tools.build:gradle
依赖项,因为它必须遵循android studio版本。
据我所知,如果有人可以帮助我,我将提供更多信息,甚至提供从不同版本编译的apk ...现在我需要睡觉了,因为今天是23:30,今天是星期六,在这次垃圾邮件更新中,我失去了7个小时的生命
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)