【问题标题】:Okhttp stops working after updating android studioOkhttp 在更新 android studio 后停止工作
【发布时间】:2021-02-03 16:36:39
【问题描述】:

我有一个 Android 应用程序,它使用改造 2 和 okhttp 来处理它的 json 请求。一切都很顺利,直到 android studio(AS) 向我提供了从 3.9.6 到 4.1 的更新 更新在 AS 内部很容易完成,它还更新了 gradle 插件。

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

我尝试在 AS 模拟器中运行 -> 效果很好。 我尝试在模拟器中运行 minifyEnabled true shrinkResources true -> 效果很好

所以我在代码中添加了几个调试调用,以便让我知道确切的信息,直到应用程序工作的那一行......我得到了。

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

这是一个小sn-p,我用来测试用户是否有互联网连接。 不抛出异常,不返回值,调用简单潜入 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"
    }

【问题讨论】:

    标签: android android-studio google-play okhttp


    【解决方案1】:

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

    是的,每个人都面临这些问题。这是成为开发人员的学习过程的一部分。暂时停止关注这个库的这个特殊问题,问问你为什么卡住以及如何摆脱卡住。如果您将此报告给图书馆维护者,这就是他们需要做的事情,这就是他们要求干净复制的原因。

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

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

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

    回到 SSCCE 示例,制作一个重现问题的小示例项目并将其发布到临时 github 项目,然后将其作为错误报告给 OkHttp 项目。他们可以检查项目并运行它来重现。

    【讨论】:

      猜你喜欢
      • 2016-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多