【问题标题】:How to resolve D8 warning: D8: Type `org.conscrypt.Conscrypt` was not found如何解决 D8 警告:D8:找不到类型 `org.conscrypt.Conscrypt`
【发布时间】:2018-04-17 14:35:21
【问题描述】:
/Volumes/SSD/.gradle/caches/modules-2/files-2.1/com.squareup.okhttp3/okhttp/3.10.0/7ef0f1d95bf4c0b3ba30bbae25e0e562b05cf75e/okhttp-3.10.0.jar: D8: Type `org.conscrypt.Conscrypt` was not found, it is required for default or static interface methods desugaring of `okhttp3.internal.platform.Platform okhttp3.internal.platform.ConscryptPlatform.buildIfSupported()`

【问题讨论】:

  • 我遇到了同样的错误。你找到解决办法了吗?
  • 我得到了类似的东西:AGPBI: {"kind":"warning","text":"Type `libcore.io.Memory` was not found, it is required for default or static interface methods desugaring of `void com.google.android.gms.internal.measurement.zzyh$zzb.a(long, byte)`","sources":[{"file":"/path/to/MyProject/app/build/intermediates/transforms/proguard/myvariant/release/0.jar"}],"tool":"D8"}

标签: okhttp3


【解决方案1】:

我能够通过添加来解决问题:

-dontwarn okhttp3.internal.platform.ConscryptPlatform

proguard-rules.pro 文件。

【讨论】:

  • 似乎我们正在强制警告消失,你能帮我理解为什么警告会来吗?
【解决方案2】:

根据https://github.com/square/okhttp/issues/3922,忽略这些警告是安全的。

如果构建不成功,我想还有一个问题。

【讨论】:

    【解决方案3】:

    https://github.com/square/okhttp/issues/4604 可能会有所帮助,但我没有尝试。

    buildscript {
        ...
        repositories {
            ...
            maven {
                url 'http://storage.googleapis.com/r8-releases/raw'
            }
        }
    
        dependencies {
            classpath 'com.android.tools:r8:1.4.57'  // Must be before the Gradle Plugin for Android.
            classpath 'com.android.tools.build:gradle:3.3.1'  // You don't need to upgrade this to use a newer R8 version.
            ...
         }
    }
    

    就我而言,我添加了 OkHttp 库和它的 Proguard 规则。然后删除了库但忘记删除规则。如果您从 build.gradle 中删除了 OkHttp,您可以从 proguard-rules.pro 中评论或删除这些行:

    ### OkHttp.
    
    # JSR 305 annotations are for embedding nullability information.
    -dontwarn javax.annotation.**
    
    # A resource is loaded with a relative path so the package of this class must be preserved.
    -keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
    
    # Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java.
    -dontwarn org.codehaus.mojo.animal_sniffer.*
    
    # OkHttp platform used only on JVM and when Conscrypt dependency is available.
    -dontwarn okhttp3.internal.platform.ConscryptPlatform
    

    【讨论】:

      【解决方案4】:

      来自 ./gradlew assemble

      R8 是新的 Android 代码压缩器。如果您遇到任何问题, 请使用“Shrinker”在https://issuetracker.google.com 提交错误 (R8)' 作为组件名称。您可以通过更新禁用 R8 带有“android.enableR8=false”的 gradle.properties。当前版本是: 1.4.94(从 go/r8bot (luci-r8-ci-archive-0-5g74) 构建 390954928f0db9c3b888a367f7f128ce3bbfb160)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-11-15
        • 2019-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-13
        • 2019-08-30
        相关资源
        最近更新 更多