Выпуск сборки с R8, не исключая классы

#android #android-r8

#Android #android-r8

Вопрос:

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

В настоящее время я использую Room, и у меня есть классы моделей, которые находятся под:

 com.example.room.entity
  

и для того, чтобы приложение работало, я использую правило proguard

 -keepattributes *Annotation*,SourceFile,LineNumberTable
-keep class com.example.room.entity.**.* { *; }
  

Как только я создаю версию и запускаю на своем телефоне сбой приложения, и я вижу

Вызвано java.lang.ClassNotFoundException com.roommate.example.room.entity.Пользовательская идентификация

Вывод -printusage показывает мне, что класс, который я пытаюсь сохранить, несколько затронут R8.

Что я могу сделать, чтобы обеспечить соблюдение моих правил?

Ответ №1:

Попробуйте изменить вторую строку на:

 -keep class com.roommate.example.room.entity.** { *; }
  

Комментарии:

1. Таким образом, проблема может быть окончательной. * часть? Есть особая причина?

2. @MatteoBucci Ах, нет, проблема в том, что вы сохраняете классы в, -keep class com.example.room.entity.**.* { *; } тогда как ваш код фактически находится в com.roommate.example.room.entity.UserEntity (обратите внимание на com.roommate в начале, в отличие от com.example …)