android studio 3.1 Предупреждение: общедоступный класс правила -keep * расширяет java.lang.annotation.Annotation {

Недавно я обновил студию Android, но я не смог найти источник следующей проблемы, о которой сообщалось в android studio 3.1:

Warning: The rule '-keep public class *extends java.lang.annotation.Annotation {

enter image description here

enter image description here

предупреждение, кажется, обрезается, возможно, и отсутствует информация. но это выглядит как проблема с proguard, хотя я получаю это предупреждение при создании варианта отладки. Я проверил файлы proguard, и у меня нет строки, которая точно соответствует этому. Я просмотрел весь проект. любые идеи о первопричине?

Ответ 1

Как упоминалось в комментариях к вопросу @arcone1, @Vincent Mattana и подтверждается @random, проблема устранена в Android Studio 3.2.

Из вопроса в Google Issue Tracker:

Для пояснения, это предупреждение, а не ошибка R8, которую мы используем для вычисления списка классов для основного dex в устаревшем мультидексном варианте. Он не влияет на вывод и не должен вызывать сбои сборки или выполнения.
Я работаю над исправлением, чтобы изменить это правило хранения на "-keep открытый класс * реализует java.lang.annotation.Annotation", которое семантически совпадает, и удаляет предупреждение.

Так что, просто проигнорируйте это сейчас или идите к черту с канарейкой (действуйте на свой страх и риск).

ОБНОВЛЕНИЕ: 3.2 выходит !

Ответ 2

Вам не хватает пробела между подстановочным знаком * и ключевым словом extends. Само предупреждение, вероятно, не исходит от ProGuard, а от встроенной усадки google.

Если вы не можете найти его в своем проекте, то, скорее всего, это сломанное правило из файла Proguard для потребителей, включенного в зависимые файлы aar.

Ответ 3

Я получил ту же проблему из-за установки "multiDexEnabled true" в gradle defaultConfig.

Я решил эту проблему, добавив мультидексную зависимость "реализация" com.android.support:multidex:1.0.3 '"

android {
defaultConfig {
    ...
    multiDexEnabled true
}
...
}

dependencies {
  implementation 'com.android.support:multidex:1.0.3'
}

Ссылка: https://developer.android.com/studio/build/multidex

Ответ 4

Я удалил значение "multiDexEnabled true" из шаблона defaultConfig построения приложения, и WARNING уходит:

defaultConfig {
    ...

    //multiDexEnabled true
}

dexOptions {
    javaMaxHeapSize "Xg"
}

удачи)

Ответ 5

class android.support.annotation.Keep - это то, что я использую (Android Studio 3.1.2)...

-keep @interface android.support.annotation.Keep
-keep @android.support.annotation.Keep class *
-keepclasseswithmembers class * {
    @android.support.annotation.Keep <fields>;
}
-keepclasseswithmembers class * {
    @android.support.annotation.Keep <methods>;
}

есть дополнительные флаги для контроля, какие аннотации держать:

-keepattributes RuntimeVisibleAnnotations
-keepattributes AnnotationDefault
-keepattributes *Annotation*

можно получить исходный вывод, запустив ./gradlew assembleRelease на вкладке терминала.

когда ничто в проекте конфигурации ProGuard не относится к Annotation, это предупреждение может происходить из правил "потребителя" какой-либо справочной библиотеки, которые должны быть запутаны во время сборки.

следовательно, это безобидное предупреждение, можно его отключить:

-dontwarn java.lang.annotation.Annotation

Ответ 6

  1. открыть файл build.gradle.
  2. удалить "multiDexEnabled true".
  3. перестроить приложение.

Ответ 7

Версия для коляски: 3.1.4

MultiDex: включено

В моем случае я забыл добавить перевод для некоторых строковых ресурсов. После добавления ошибки/предупреждения нет.

Ответ 8

Эта проблема возникает, когда вы загружаете новую версию обновления в Google Play Store, и после загрузки большинство пользователей нажимают на сохранение и затем отправляют. Не нажимайте Сохранить, просто загрузите и отправьте. Ваш файл apk успешно загружен, и файл Retain автоматически удаляется и устанавливается в режим деактивации.

Помните: убедитесь, что вы указали все детали нового обновления, отличные от старых версий.

Ответ 9

Моя версия gradle была проблемой, которую я обновил до com.android.tools.build:gradle:3.3.2, и ошибка исчезла.

Ответ 10

использовала реализацию 'com.android.support:support-annotations:27.1.1' в зависимости от приложения

версию выбрать в соответствии с версией вашего приложения

Ответ 11

В моем случае предупреждение появилось после смены версии Gradle. Как только я сделал недействительной кэш и перезапустил Android Studio, предупреждение исчезло.

Из меню: File> Invalidate cache & restart

аннулировать кэши и перезапустить