R8: NullPointerException во время преобразования IR - PullRequest
1 голос
/ 03 апреля 2020

У меня проблема при попытке создать версию выпуска моего приложения. Выдает странную ошибку

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 в приложение. Я знаю, что google-speech-api официально не поддерживается на Android. Может быть, это основная проблема. До этого у меня была проблема с 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
})

Я выполнил это исправление.

Теперь я застрял с этой ошибкой, которую я показал выше.

Я пробовал разные версии на 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 файл

этот является файлом Gradle верхнего уровня

1 Ответ

0 голосов
/ 22 апреля 2020

Отвечая на мой собственный вопрос, потому что это оказалось ошибкой R8, и после того, как я сообщил об этом, они решили проблему. Что здорово.

Полный отчет об ошибках и как применить исправить здесь здесь

Короткая версия:

изменить 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'
     }
}

Я столкнулся с этой ошибкой при реализации Google Speech API в моем приложении android. Для тех, кому это может понадобиться, это моя последняя 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.** {*;}
...