Okhttp更新Android Studio后停止工作

时间:2020-10-20 19:31:23

标签: android android-studio google-play okhttp

我有一个Android应用,其翻新2和okhttp用于json请求。一切都很好,直到android studio(AS)将我的更新从3.9.6升级到4.1 更新可以在AS内部轻松完成,并且还可以更新gradle插件。

更新完成后,我重建并编译了一个新的aab,然后我注意到生成的新文件比上一个小100kb(尽管未进行任何代码或资产更改,仅更新了IDE版本)...然后我在Google Play上发布并下载到我的测试设备(真实手机)中。没用该应用会打开,但无法执行任何okhttp请求

我试图在AS模拟器中运行->正常。 我试图在模拟器中使用minifyEnabled true TrueRerinkResources true->运行正常

所以我在代码中添加了几个调试调用,以便让我知道准确无误,直到应用程序运行到哪一行为止....我知道了。

try {
               okHttpClient.newCall(new Request.Builder().get().url("https://www.google.com").build()).execute();
               return true;
           } catch (Exception e) {
               return false;
           }

这是一个小片段,用于测试用户是否可以连接互联网。 没有抛出异常,没有返回任何值,调用简单地跳入okhttp api,再也不会回来...

所以我想说清楚:未更改代码,未更新api,未更改r8规则 唯一更改的是将AS从3.9.6更新到4.1,并且还更新了一些强制性gradle插件 之后,已建立的签名aab缩小了100kb,这种非常奇怪的行为开始发生...

我已经尽力了,但是仍然不知道如何解决。有没有人遇到过类似的问题或不知道该怎么办?

有我的进口货

implementation 'com.squareup.picasso:picasso:2.71828'
    implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'

    implementation('com.facebook.android:facebook-login:5.13.0') {
        exclude group: 'com.android.support', module: 'appcompat-v7'
    }

    //retrofit
    implementation('com.squareup.retrofit2:retrofit:2.9.0') {
        exclude group: 'com.squareup.okhttp3', module: 'okhttp'
    }

 
    implementation "com.squareup.okhttp3:okhttp:4.10.0-RC1"
    implementation 'com.squareup.okio:okio:2.9.0'
    implementation 'com.google.code.gson:gson:2.8.6'
    implementation('com.squareup.retrofit2:converter-gson:2.9.0') {
        exclude group: "com.google.code.gson", module: "gson"
    }

1 个答案:

答案 0 :(得分:0)

我已经尽力了,但是仍然不知道如何解决。有没有人遇到过类似的问题或不知道该怎么办?

是的,每个人都面临这些问题。这是成为开发人员的学习过程的一部分。请停止关注此库的特定问题一分钟,并询问您为什么卡住以及如何解开。如果您将此报告给图书馆维护者,这就是他们需要做的,这就是为什么他们会要求提供完整的复制品。

首先阅读http://sscce.org/,了解其含义以及为什么上述问题没有得到答案。这不是干净的复制品,而是几行随机的代码。

然后请一位同事帮助您使用调试器,它停在哪里,正在做什么或在等待什么线程。

使用库的功能,例如添加一个OkHttp事件监听器https://square.github.io/okhttp/events/

返回SSCCE示例,创建一个小示例项目以重现该问题并将其发布到临时github项目,然后将其报告为OkHttp项目的错误。他们只需签出项目并运行它即可复制。