Использование библиотеки Android Parceler с minifyEnabled
Всякий раз, когда я пытаюсь минимизировать свой проект, использующий библиотеку parceler, я не могу создать релизный apk из-за большого количества предупреждений от proguard. Например:
Предупреждение: org.parceler.transfuse.gen.FilerResourceWriter: не удается найти указанный класс javax.tools.FileObject
Я даже не использую большинство библиотек, описанных в этих сообщениях. Что я хотел бы знать, так это если кто-то сталкивался с этой проблемой и сумел ее решить. Я пытался использовать -dontwarn для подавления всех сообщений, но это не кажется правильным, и, кроме того, в редких случаях происходит сбой моего приложения (что заставляет меня думать, что некоторые предупреждающие сообщения действительно верны, но мне бы хотелось, чтобы библиотека сохранить нужные классы автоматически).
Мой сценарий gradle выглядит следующим образом:
apply plugin: 'com.android.application'
...
dependencies {
...
compile 'org.parceler:parceler:1.0.3'
}
1 ответ
Вы видите эту ошибку от Proguard, потому что вы включили Parceler в качестве зависимости времени выполнения. Parceler был разработан для включения в ваш проект в виде двух отдельных библиотек; процессор аннотаций и API. Если вы используете Gradle, ваш скрипт сборки должен выглядеть следующим образом:
compile "org.parceler:parceler-api:1.0.3"
apt "org.parceler:parceler:1.0.3"
Смотрите Получение посылки.
где apt - плагин для android-apt. Во-вторых, он также может быть запущен в рамках предоставленной области.
Ваш скрипт сборки в итоге будет выглядеть следующим образом:
buildscript {
repositories {
mavenCentral()
}
dependencies {
// replace with the current version of the Android plugin
classpath 'com.android.tools.build:gradle:1.3.0'
// the latest version of the android-apt plugin
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.7'
}
}
apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'
...
dependencies {
...
compile "org.parceler:parceler-api:1.0.3"
apt "org.parceler:parceler:1.0.3"
}