Intereting Posts
Использование GCM на Android и iOS без полезной информации уведомления Обновление встроенного инструмента для Android до 18.0 Android 3.x + Java ZipFile Class – Невозможно прочитать ZipEntries из больших файлов Android build с retrolambda игнорирует изменения исходного кода Как сделать .jar из проекта Volley? Android.Share для социальных сетей Получить название страны из кода страны Можем ли мы установить INSTALL_REFERRER два раза в одном приложении для Android? Редактирование текстового курсора Android не отображается? Как создать диалоговое окно предупреждения с помощью счетчика Советы по повышению скорости заполнения OpenGL ES на Android Android: настраиваемый макет представления для SectionIndexer и отключение SectionIndexer на лету Как получить IP-адрес каждого устройства в сценарии Wi-Fi Direct? SQLite Database дает предупреждение об автоматическом индексе на <имя_таблицы> (столбец). После обновления Android L Отключить пул соединений

Почему Butterknife @Bind не работает в выпуске (после proguard)

Я создавал приложение для Android, используя Butterknife, и недавно обновил его до 7.0.1. Я заменил все использование @InjectView и ButterKnife.inject новой @Bind и не испытывал проблем с сборками отладки, но при @InjectView ButterKnife.inject при @Bind сбой при запуске приложения.

Если я переключу ' minifyEnabled ' на false в моем build.gradle, тогда я могу создать рабочую сборку выпуска.

Я использую конфигурацию proguard, которая задокументирована на сайте Butterknife, но, похоже, она не работает для меня. Я также использую Кинжал, Пикассо и Флеш в моей сборке.

Содержимое моей proguard-rules.pro:

 # ButterKnife -keep class butterknife.** { *; } -dontwarn butterknife.internal.** -keep class **$$ViewBinder { *; } -keepclasseswithmembernames class * { @butterknife.* <fields>; } -keepclasseswithmembernames class * { @butterknife.* <methods>; } # Dagger -keepclassmembers,allowobfuscation class * { @javax.inject.* *; @dagger.* *; <init>(); } -keep class javax.inject.** { *; } -keep class **$$ModuleAdapter -keep class **$$InjectAdapter -keep class **$$StaticInjection -keep class dagger.** { *; } # Picaso -dontwarn com.squareup.okhttp.** # Flurry -keep class com.flurry.** { *; } -dontwarn com.flurry.** 

Solutions Collecting From Web of "Почему Butterknife @Bind не работает в выпуске (после proguard)"

У нас были аналогичные проблемы после обновления до 7.0.1, но вместо этого мы получили ANR.

Проблема заключается в том, что мы заменили раздел Butterknife Proguard новыми рекомендуемыми вариантами на веб-сайте ButterKnife.

Добавление -keepnames class * { @butterknife.Bind *;} в файл proguard устраняет наши проблемы.

С веб-сайта http://jakewharton.github.io/butterknife/ это показалось мне полезным:

 -keep class butterknife.** { *; } -dontwarn butterknife.internal.** -keep class **$$ViewBinder { *; } -keepclasseswithmembernames class * { @butterknife.* <fields>; } -keepclasseswithmembernames class * { @butterknife.* <methods>; }