com.android.tools.r8.utils.AbortException zza уже имеет маппин - PullRequest
0 голосов
/ 18 июня 2019

Я запускаю тесты инструментовки и получаю эту ошибку компиляции:

org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesAndResourcesWithR8ForDebugAndroidTest'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.accept(ExecuteActionsTaskExecuter.java:151)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.accept(ExecuteActionsTaskExecuter.java:148)
        at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:191)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:141)
        ...
Caused by: java.lang.RuntimeException: com.android.tools.r8.CompilationFailedException: Compilation failed to complete
        at com.android.builder.profile.Recorder$Block.handleException(Recorder.java:55)
        at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:108)
        at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:230)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:103)
        at org.gradle.api.internal.project.taskfactory.IncrementalTaskInputsTaskAction.doExecute(IncrementalTaskInputsTaskAction.java:46)
        ...
Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete
        at com.android.tools.r8.utils.z.a(:55)
        at com.android.tools.r8.R8.runForTesting(:3)
        at com.android.tools.r8.R8.run(:3)
        at com.android.builder.dexing.R8Tool.runR8(r8Tool.kt:195)

Caused by: com.android.tools.r8.utils.AbortException: Error: offset: 0, line: 16559, column: 1, 'void zza(com.google.android.gms.common.internal.BaseGmsClient,int,android.os.IInterface)' already has a mapping
        at com.android.tools.r8.utils.Reporter.a(:21)
        at com.android.tools.r8.naming.SeedMapper$a.build(:1)
        ...

Если я посмотрю в app/build/outputs/mappings/debug/mapping.txt, я увижу этот метод в списке дважды.

com.google.android.gms.common.internal.BaseGmsClient -> com.google.android.gms.common.internal.BaseGmsClient:
    ...
    344:344:void zza(com.google.android.gms.common.internal.BaseGmsClient,int,android.os.IInterface) -> zza
    ...
    350:350:void zza(com.google.android.gms.common.internal.BaseGmsClient,int,android.os.IInterface) -> zza
  1. Странно, что не происходит в базовой компиляции приложения. Не уверен, почему R8 что-то делает с тестовым кодом.
  2. Это проблема R8 или Play Services?
  3. Как я могу решить это. Очистка gradle + аннулирование / перезапуск ничего не сделали, равно как и удаление и восстановление файла mappings.txt вручную.

1 Ответ

1 голос
/ 18 июня 2019

У меня могут быть некоторые ответы.

Относительно 1. Если вы компилируете свое приложение с установленным значением minifyEnabled, равным true, и впоследствии запустите инструментальные тесты, ваше приложение может иметь минимизированные классы, методы и т. Д. Поэтому все тесты должны бытьперекомпилирован с R8 для исправления всех минимизированных имен в ваших тестах.Конкретно, ваши тесты компилируются R8 с вашим приложением на пути к библиотеке и конфигурацией proguard, которая говорит -applymapping.

Относительно 2. Это проблема R8.Возможно, вам повезет, добавив следующее в файл build.gradle уровня проекта:

buildscript {

    repositories {
        maven {
            url 'http://storage.googleapis.com/r8-releases/raw'
        }
    }

    dependencies {
        classpath 'com.android.tools:r8:1.5.45'          // Must be before the Gradle Plugin for Android.
        classpath 'com.android.tools.build:gradle:X.Y.Z' // Your current AGP version.
     }
}

Относительно 3. Если исправление в 2. не работает, вы можете выполнить следующую ошибку в ошибке R8-tracker: https://issuetracker.google.com/issues/122924648

Может также быть возможным жить без инструментов в минимизированном приложении, пока проблема не будет решена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...