Примечание: android.support.v4.app.NotificationCompatJellybean вызывает 'Field.getType'
Я использую ProGuard с моим проектом Android Studio. Когда я создаю свой релиз, я получаю следующее примечание:
Note: android.support.v4.app.NotificationCompatJellybean calls 'Field.getType'
Вот мой конфиг Gradle:
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
Вот proguard-rules.pro:
-dontnote org.apache.http.conn.scheme.HostNameResolver
-dontnote org.apache.http.conn.**
-dontnote org.apache.http.params.**
-dontnote android.net.http.**
-dontnote **ILicensingService
-dontnote com.android.vending.billing.IInAppBillingService
Как я могу решить проблему этой заметки?
2 ответа
Добавьте следующую строку в ваш proguard-rules.pro
файл:
-keepattributes Signature
Объяснение:
Ваша заметка не имеет ничего общего с android.support.v4.app.NotificationCompatJellybean специально, но с Field.getType.
Метод getType принадлежит java.lang.reflect.Field
пакета отражения и может получить доступ к метаинформации, хранящейся в файлах классов Java. Тем не менее, эта метаинформация удаляется proguard (без правила выше)- поэтому предупреждение.
Смотрите также атрибуты, которые можно использовать с -keepattributes
, Для атрибута Signature сказано следующее:
Определяет общую подпись класса, поля или метода. Компиляторам может понадобиться эта информация для правильной компиляции классов, которые используют универсальные типы из скомпилированных библиотек.
Код может получить доступ к этой подписи путем отражения.
Попробуйте добавить следующую строку в конфигурацию ProGuard:
-dontnote android.support.v4.app.NotificationCompatJellybean
NotificationCompatJellybean
получит тип частного Notification.extras
поля в его getExtras()
метод. Но как это поле в Notification
Класс из Android SDK вы можете просто проигнорировать эту заметку с помощью команды выше.