ProGuard с AppBundle и привязкой данных: IllegalStateException - PullRequest
0 голосов
/ 28 января 2019

У меня есть многомодульный проект (я использую Android App Bundles) с привязкой данных, ViewModels.Но когда я включаю Proguard, приложение вылетает со следующей ошибкой:

java.lang.RuntimeException: Unable to start activity ComponentInfo{...MyActivity}: java.lang.IllegalStateException: DataBindingUtil.setConte… R.layout.my_activity) must not be null

Caused by: java.lang.IllegalStateException: DataBindingUtil.setConte… R.layout.my_activity) must not be null at MyActivity.onCreate(MyActivity.kt:38)

Когда я удаляю модули и создаю один app модуль, все работает.Когда я отключаю Proguard, он также работает нормально.Вот часть моего proguard-rules.pro:

-dontwarn android.databinding.**
-keep class android.databinding.** { *; }
-keep class com.example.module1.databinding.** { *; }
-keep class com.example.module2.databinding.** { *; }

In build.gradle:

minifyEnabled true
useProguard true

Так что ошибка указывает на эту строку кода:

val binding: com.example.module1.databinding.MyActivityBinding =
                DataBindingUtil.setContentView(this, R.layout.my_activity)

Может есть идеи как починить?

1 Ответ

0 голосов
/ 07 февраля 2019

Нужно только добавить это к вашему proguard-rules.pro, где module1 и module2 - это динамические функциональные модули с включенной привязкой данных.

-keep class com.example.module1.DataBinderMapperImpl { *; } 
-keep class com.example.module2.DataBinderMapperImpl { *; } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...