【问题标题】:OkHttp android 5 crash adcolony and helpshiftOkHttp android 5 崩溃 adcolony 和 helpshift
【发布时间】:2016-06-22 08:03:49
【问题描述】:

仅在 android 5 上,一些 3rd 方 sdks(adcolony 和 helpshift)随机崩溃(大部分时间在应用刚启动时)。在下面的 android 5 上,两者都可以正常工作。

他们都崩溃了

com.android.okhttp.internal.http.JavaApiConverter.extractStatusLine(JavaApiConverter.java:329) com.android.okhttp.internal.http.JavaApiConverter.extractStatusLine(JavaApiConverter.java:324)

Helpshift 崩溃堆栈跟踪:

java.lang.NullPointerException:尝试在空对象引用上调用接口方法“java.lang.Object java.util.Map.get(java.lang.Object)” com.android.okhttp.internal.http.JavaApiConverter.extractStatusLine(JavaApiConverter.java:329) com.android.okhttp.internal.http.JavaApiConverter.extractStatusLine(JavaApiConverter.java:324) com.android.okhttp.internal.http.JavaApiConverter.createOkResponse(JavaApiConverter.java:116) com.android.okhttp.internal.http.ResponseCacheAdapter.get(ResponseCacheAdapter.java:53) com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:190) com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:373) com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:323) com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:491) com.android.okhttp.internal.http.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105) com.android.okhttp.internal.http.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:25) com.helpshift.support.HSApiClient$1.run(HSApiClient.java:318) java.lang.Thread.run(Thread.java:818)

广告群崩溃堆栈跟踪:

java.lang.NullPointerException:尝试在空对象引用上调用接口方法“java.lang.Object java.util.Map.get(java.lang.Object)” com.android.okhttp.internal.http.JavaApiConverter.extractStatusLine(JavaApiConverter.java:329) com.android.okhttp.internal.http.JavaApiConverter.extractStatusLine(JavaApiConverter.java:324) com.android.okhttp.internal.http.JavaApiConverter.createOkResponse(JavaApiConverter.java:116) com.android.okhttp.internal.http.ResponseCacheAdapter.get(ResponseCacheAdapter.java:53) com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:269) com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:373) com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:106) com.android.okhttp.internal.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:208) com.android.okhttp.internal.http.DelegatingHttpsURLConnection.getOutputStream(DelegatingHttpsURLConnection.java:218) com.android.okhttp.internal.http.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:25) com.jirbo.adcolony.ADCDownload.run(SourceFile:107) 在 java.lang.Thread.run(Thread.java:818)

有人知道如何解决这个问题吗?

【问题讨论】:

    标签: okhttp adcolony helpshift


    【解决方案1】:

    您提到的 NPE 似乎与在 android 5.0 的 okhttp 问题线程:http://code.google.com/p/android/issues/detail?id=160522

    此问题的可能原因:
    您可能正在使用自定义 ResponseCache/第三方 ResponseCache,但未正确实现,并且 okhttp 无法正确处理空响应。

    1.如果您不需要响应缓存

    此 NPE 的快速修复方法是 - 通过
    conn.setUseCaches(false)

    禁用连接缓存

    2。如果您需要响应缓存

    您使用的是什么 ResponseCache 实现?是android.net.http.HttpResponseCache 的Android 还是第三方的?

    自定义 ResponseCache 问题的根本原因

    根本原因是 Android 假定状态行(例如 指示响应代码的响应的一部分,一条消息)是 作为带有空键的标题。这在 API 中被提及 当您查看索引为零的标题时的文档,但不是 在返回 Map 或采用 String 的方法中显式

    请看这里:http://developer.android.com/reference/java/net/CacheResponse.html#getHeaders()

    从您提供的堆栈跟踪来看,该问题似乎与使用自定义 ResponseCache 有关。 如果是这样,如果不需要,您可以禁用缓存,否则您可以联系自定义响应缓存的维护者,如上面给出的 okhttp 问题的响应中所述。

    如有任何其他 Helpshift 相关问题,请随时通过 support@helpshift.com 与我们联系

    【讨论】:

      猜你喜欢
      • 2014-03-19
      • 1970-01-01
      • 2014-12-25
      • 1970-01-01
      • 2020-03-06
      • 1970-01-01
      • 2022-06-14
      • 2021-02-14
      • 2017-01-12
      相关资源
      最近更新 更多