首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >红外转换过程中的R8: NullPointerException

红外转换过程中的R8: NullPointerException
EN

Stack Overflow用户
提问于 2020-04-03 20:23:06
回答 1查看 1.2K关注 0票数 4

当我试图生成我的应用程序的发布版本时,我遇到了一个问题。它产生了一个奇怪的错误

代码语言:javascript
复制
C:\Users\rshal\.gradle\caches\transforms-2\files-2.1\6c326691eb00442622017dd95f96e92a\jetified-firebase-config-19.1.3-runtime.jar: R8: NullPointerException during IR Conversion
> Task :app:minifyProdReleaseWithR8 FAILED

我一直在使用防火墙分析和防火墙远程配置没有问题。而且,我也没有问题,R8最小化。最近我已经集成了google-speech-api,在那之后,我无法使用R8。

直到我将google-speech-api集成到应用程序中,我才有这个问题。我知道安卓系统不支持google-speech-api。也许这就是核心问题。在此之前,我对firebase-config依赖有一个问题。我认为它与google-speech-api库不兼容。我用这个分级配置解决了这个问题

代码语言:javascript
复制
implementation('com.google.firebase:firebase-config', {
    exclude group: 'com.google.protobuf' // google-cloud-speech causes this. see  https://github.com/firebase/firebase-android-sdk/issues/1143
})

我遵循了的做法。

现在,我被上面显示的错误困住了。

我在R8上尝试了不同的版本,如建议的这里

这是gradle构建日志

代码语言:javascript
复制
> Task :app:minifyProdReleaseWithR8
R8: Missing class: org.apache.logging.log4j.spi.ExtendedLoggerWrapper
R8: Missing class: org.eclipse.jetty.npn.NextProtoNego$ClientProvider
R8: Missing class: javax.servlet.ServletContextListener
R8: Missing class: org.jboss.marshalling.ByteOutput
R8: Missing class: java.lang.ClassValue
R8: Missing class: org.eclipse.jetty.alpn.ALPN$ClientProvider
R8: Missing class: org.jboss.marshalling.ByteInput
R8: Missing class: org.eclipse.jetty.alpn.ALPN$ServerProvider
R8: Missing class: org.eclipse.jetty.npn.NextProtoNego$ServerProvider
R8: Library class android.net.http.AndroidHttpClientConnection implements program class org.apache.http.HttpInetConnection
R8: Library class android.net.http.AndroidHttpClientConnection implements program class org.apache.http.HttpConnection
C:\Users\rshal\.gradle\caches\transforms-2\files-2.1\6c326691eb00442622017dd95f96e92a\jetified-firebase-config-19.1.3-runtime.jar: R8: NullPointerException during IR Conversion

> Task :app:minifyProdReleaseWithR8 FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:minifyProdReleaseWithR8'.
> com.android.tools.r8.CompilationFailedException: Compilation failed to complet

我是build.gradle 文件

是顶级的级别文件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-22 20:58:27

回答我自己的问题,因为它原来是一个R8错误,在我报告之后,他们解决了这个问题。这太棒了。

完整的bug报告以及如何应用fix is 这里

简短版本:

gradle配置更改为

代码语言:javascript
复制
buildscript {
repositories {
    maven {
        url 'https://storage.googleapis.com/r8-releases/raw'
    }
}
    dependencies {
        classpath 'com.android.tools:r8:1.6.88'          // Must be before the Gradle Plugin for Android.
        classpath 'com.android.tools.build:gradle:3.6.2'
     }
}

在我的android应用程序中实现Google时,我遇到了这个错误。对于任何可能需要它的人来说,这是我最后的groguard配置

代码语言:javascript
复制
-keep class com.google.api.gax.** {*;}
-keep class com.google.cloud.** {*;}
-keep class com.google.api.services.translate.** {*;}
-keep class com.google.api.client.util.** {*;}
-keep class com.google.api.client.googleapis.** {*;}
-keep class com.google.cloud.speech.v1.stub.** {*;}
-keep class io.grpc.** {*;}
-keep class com.google.auth.oauth2.** {*;}
-keep class com.google.auth.** {*;}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61019845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档