Ошибка сборки Android: для подписи атрибута требуется атрибут InnerClasses. Проверьте директиву -keepattributes - PullRequest
0 голосов
/ 10 сентября 2018

Я сталкиваюсь с этой ошибкой при попытке собрать приложение в режиме релиза.

Ошибка: для подписи атрибута требуется атрибут InnerClasses.Проверка -keepattributes директива

Моя строка proguard-rules.pro выглядит следующим образом:

-keepattributes Signature

на какие InnerClasses ссылается компилятор?Что я опускаю?

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

Ссылка: https://stuff.mit.edu/afs/sipb/project/android/sdk/android-sdk-linux/tools/proguard/docs/index.html#manual/usage.html

keepattributes [attribute_filter]

Указывает любые необязательные атрибуты, которые должны быть сохранены. Атрибуты могут указывается одной или несколькими директивами -keepattributes. Необязательный Фильтр - это список имен атрибутов через запятую. Имена атрибутов могут содержать символы подстановки?, * и **, и им может предшествовать символ! Negator. Типичные необязательные атрибуты: Исключения, Подпись, Устаревший, SourceFile, SourceDir, LineNumberTable, LocalVariableTable, LocalVariableTypeTable, Синтетический, EnclosingMethod, RuntimeVisibleAnnotations, RuntimeInvisibleAnnotations, RuntimeVisibleParameterAnnotations, RuntimeInvisibleParameterAnnotations и AnnotationDefault. Также можно указать имя атрибута InnerClasses, ссылаясь на имя источника часть этого атрибута. Например, вы должны хотя бы сохраните атрибуты Исключения, InnerClasses и Подпись при обработка библиотеки. Вы также должны сохранить SourceFile и Атрибуты LineNumberTable для создания полезного запутанного стека следы. Наконец, вы можете сохранить аннотации, если ваш код зависит на них. Применяется только при запутывании.

Добавить эту строку в файл proguard-rules.pro

-keepattributes InnerClasses

Подробнее найдено https://stuff.mit.edu/afs/sipb/project/android/sdk/android-sdk-linux/tools/proguard/docs/index.html#manual/usage.html

0 голосов
/ 15 сентября 2018

Подпись (Java 8 или выше) работает только с Java 8 или выше и InnerClasses (Java 5 или выше), поэтому убедитесь, что в Android Studio используется версия Java SDK. Пожалуйста, обновите вашу конфигурацию Proguard с настройками ниже

Добавьте эту строку в ваш proguard-rules.pro файл:

-keepattributes InnerClasses

InnerClasses (Java 5 или выше)

Определяет отношения между классом и его внутренними классами и внешние классы. Кроме этого и соглашения об именах с '$' разделитель между именами внутренних классов и внешних классов, внутренних классы, как обычные классы. Компиляторы могут нуждаться в этом информация для поиска классов, на которые есть ссылки в скомпилированной библиотеке. Код может получить доступ к этой информации с помощью отражения, например, чтобы получить простое имя класса.

Подпись (Java 8 или выше)

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

Подробнее о -keepattributes и дополнительных настройках, которые вы можете применить, см. Ссылку ниже.

Опции Proguard

...