R8:IR转换期间为NullPointerException

问题描述 投票:1回答:1

[尝试生成我的应用的发行版时遇到问题。它给出了一个奇怪的错误

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

我一直在使用firebase分析和firebase远程配置,没有问题。而且我也没有将R8最小化的问题。最近,我集成了google-speech-api,此后,我将无法使用R8。

直到我将google-speech-api集成到应用中之前,我才没有这个问题。我知道Android上不正式支持google-speech-api。也许这是核心问题。在此之前,我对firebase-config依赖性有疑问。我认为它与google-speech-api库不兼容。我用这个Gradle配置解决了这个问题

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
})

我已遵循this修复。

现在,我被上面显示的错误所困扰。

我已经在建议的here的R8上尝试过不同的版本

这是gradle构建日志

> 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 file

this是顶级Gradle文件

java android firebase proguard android-r8
1个回答
0
投票

遇到同样的问题,该怎么办? r8优化会中断装配,只有添加规则,装配才能通过:

-dontoptimize

尝试避免优化protobuf和firebase不会产生结果,程序集也无法以如上所述的相同错误工作。

-keep,includedescriptorclasses,includecode class com.google.firebase.** { *; }
-keep,includedescriptorclasses,includecode class com.google.android.gms.** { *; }
-keep,includedescriptorclasses,includecode class com.google.protobuf.** { *; }
© www.soinside.com 2019 - 2024. All rights reserved.