代码之家  ›  专栏  ›  技术社区  ›  Sira Lam

OkHttp正在使用反射,这违反了android9对非SDK方法的限制?

  •  1
  • Sira Lam  · 技术社区  · 6 年前

    在Android 9中,谷歌宣布 new limitations on accessing non-SDK interface methods by using reflection

    如果您的项目使用一个,您将得到一个对话框 Detected problems with API compatibility (visit g.co/dev/appcompat for more info)

    StrictMode 类,我能够记录正在使用的反射方法。其中一个由OkHttp库调用:

    2019-02-01 13:45:43.260 14892-14892/com.xxx.xxx.xxx W/com.xxx.xxx.xxx: Accessing hidden method Ldalvik/system/CloseGuard;->get()Ldalvik/system/CloseGuard; (light greylist, reflection)
    2019-02-01 13:45:43.261 14892-14892/com.xxx.xxx.xxx D/StrictMode: StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Ldalvik/system/CloseGuard;->get()Ldalvik/system/CloseGuard;
            at android.os.StrictMode.lambda$static$1(StrictMode.java:428)
            at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2)
            at java.lang.Class.getDeclaredMethodInternal(Native Method)
            at java.lang.Class.getPublicMethodRecursive(Class.java:2075)
            at java.lang.Class.getMethod(Class.java:2063)
            at java.lang.Class.getMethod(Class.java:1690)
            at okhttp3.internal.platform.AndroidPlatform$CloseGuard.get(AndroidPlatform.java:370)
            at okhttp3.internal.platform.AndroidPlatform.<init>(AndroidPlatform.java:58)
            at okhttp3.internal.platform.AndroidPlatform.buildIfSupported(AndroidPlatform.java:260)
            at okhttp3.internal.platform.Platform.findPlatform(Platform.java:201)
            at okhttp3.internal.platform.Platform.<clinit>(Platform.java:78)
            at okhttp3.internal.platform.Platform.get(Platform.java:84)
            at okhttp3.OkHttpClient.newSslSocketFactory(OkHttpClient.java:292)
            at okhttp3.OkHttpClient.<init>(OkHttpClient.java:258)
            at okhttp3.OkHttpClient$Builder.build(OkHttpClient.java:1040)
    

    我怎样才能摆脱对话?

    0 回复  |  直到 6 年前