Proguard дает мне много предупреждений и ошибок

Я получаю сообщение об ошибке

Ошибка: выполнение выполнено для задачи: app: transformClassesAndResourcesWithProguardForDebug. Не удалось выполнить работу, см. Журналы для подробностей

Я получаю много предупреждений, таких как

Предупреждение: es.usc.citius.hipster.util.examples.maze.MazeSearch $ Результат: не удается найти ссылочный класс java.awt.Point

Это выглядит странно для меня, потому что в моих правилах proguard я добавил это правило

-keep public class es.usc.citius.hipster.** { *; } 

[EDITED] Я также получаю предупреждения вроде

Предупреждение: com.mypackage.android.dagger.modules.AppModule_ProvideAccelerometerSensorFactory: не удается найти суперкласс или интерфейс dagger.internal.Factory

Я добавил правила кинжала

 -dontwarn dagger.internal.codegen.** -keepclassmembers,allowobfuscation class * { @javax.inject.* *; @dagger.* *; <init>(); } -keep class dagger.* { *; } -keep class javax.inject.* { *; } -keep class * extends dagger.internal.Binding -keep class * extends dagger.internal.ModuleAdapter -keep class * extends dagger.internal.StaticInjection 

И правило для хранения моего пакета

 -keep public class com.mypackage.android.** { *; } 

После ответа об игнорировании предупреждений я добавил это правило

 -dontwarn com.mypackage.android.** 

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

Класс библиотеки es.usc.citius.hipster.util.examples.maze.MazeSearch ссылается на пакет java.awt.Point который является частью JDK, но не Android JDK, который не содержит этот пакет. Вы просто не можете использовать его в среде Android.

обновленный

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

Android имеет свои собственные графические библиотеки (например, android.graphics ), используйте его вместо классов Java AWT .

Вот довольно полезный комментарий от java.awt.Toolkit :

ПРЕДУПРЕЖДЕНИЕ. Это временное решение проблемы, связанной с тем, как AWT загружает собственные библиотеки. Ряд классов в пакете AWT имеет собственный метод initIDs (), который инициализирует поле JNI и идентификаторы метода, используемые в нативной части их реализации. Поскольку использование и хранение этих идентификаторов выполняется библиотеками реализации, реализация этого метода обеспечивается конкретными реализациями AWT (например, «Toolkit» s / Peer), такими как Motif, Microsoft Windows или Tiny. Проблема в том, что это означает, что собственные библиотеки должны быть загружены с помощью классов java. *, Которые не обязательно знают имена загружаемых библиотек. Лучший способ сделать это – предоставить отдельную библиотеку, которая определяет java.awt. * InitIDs, и экспортирует соответствующие символы в библиотеки реализации. На данный момент мы знаем, что это сделано реализацией, и мы предполагаем, что имя библиотеки «awt». -Br. Если вы измените loadLibraries (), добавьте изменение в java.awt.image.ColorModel.loadLibraries (). К сожалению, классы могут быть загружены в java.awt.image, которые зависят от libawt, и нет способа напрямую вызвать Toolkit.loadLibraries (). -висела

оригинал

Класс java.awt.Point

java.awt.* Классы не являются частью среды выполнения Android. Лучшим решением было бы удалить классы, которые ссылаются на них.

Самое простое решение – просто подавить предупреждения:

 -dontwarn java.awt.**