R8:IR 转换期间出现 NullPointerException
R8: NullPointerException during IR Conversion
我在尝试生成我的应用程序的发布版本时遇到问题。它给出了一个奇怪的错误
C:\Users\rshal\.gradle\caches\transforms-2\files-2.1c326691eb00442622017dd95f96e92a\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 修复。
现在我被上面显示的这个错误困住了。
我已经按照建议在 R8 上尝试了不同的版本 here
这是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.1c326691eb00442622017dd95f96e92a\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 文件
回答我自己的问题,因为它原来是一个 R8
错误,在我报告之后,他们解决了问题。太棒了。
完整的错误报告以及如何应用 修复 是 here
简短版本:
将 gradle
配置更改为此
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 语音 API 时遇到了这个错误。
对于可能需要它的任何人,这是我最终的 groguard
配置
-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.** {*;}
我在尝试生成我的应用程序的发布版本时遇到问题。它给出了一个奇怪的错误
C:\Users\rshal\.gradle\caches\transforms-2\files-2.1c326691eb00442622017dd95f96e92a\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 修复。
现在我被上面显示的这个错误困住了。
我已经按照建议在 R8 上尝试了不同的版本 here
这是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.1c326691eb00442622017dd95f96e92a\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 文件
回答我自己的问题,因为它原来是一个 R8
错误,在我报告之后,他们解决了问题。太棒了。
完整的错误报告以及如何应用 修复 是 here
简短版本:
将 gradle
配置更改为此
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 语音 API 时遇到了这个错误。
对于可能需要它的任何人,这是我最终的 groguard
配置
-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.** {*;}