NoSuchMethodException при запутывании с помощью proGuard - PullRequest
0 голосов
/ 16 апреля 2020

хорошо, это становится болью, чтобы сгенерировать мой релиз apk и заставить его работать

, так что, буквально, я успешно строю apk, но у меня ошибка с методом

Caused by: java.lang.NoSuchMethodException: <init> [interface com.myapp.domain.login.LoginRepo]

Теперь у меня в proGuard есть следующее

-keep class com.myapp.domain.** {*;}
-keep interface com.myapp.domain.** {*;}

Теперь я не знаю, почему происходит эта ошибка, так как я сохраняю эти интерфейсы и эти классы, строка ошибки, сообщающая мне об этой проблеме, находится здесь

class LoginVMFactory(val repo:LoginRepo):ViewModelProvider.Factory {
    override fun <T : ViewModel?> create(modelClass: Class<T>): T {
        return modelClass.getConstructor(LoginRepo::class.java).newInstance(repo)
    }
}

У меня также есть этот LoginVMFactory в моем доменном пакете, поэтому я также держу этот класс, я действительно не знаю, почему это происходит непосредственно перед выпуском, приложение работает хорошо без proGuard, но я не хочу это должно быть 50 МБ, вместо этого с proGuard оно уменьшается до 10

спасибо

1 Ответ

0 голосов
/ 16 апреля 2020

Проблема в том, что нам нужно также сохранять модели представления при выключении, поэтому в этой строке будут сохранены все классы, которые выходят из ViewModel

-keep public class * extends androidx.lifecycle.ViewModel {*;}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...