使用proGuard进行混淆时会出现NoSuchMethodException

问题描述 投票:0回答:1

嗯,生成我的发布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的情况下仍然可以正常运行,但是我不希望它是50mb,而是proGuard缩小到仅10

谢谢

android kotlin proguard android-viewmodel
1个回答
0
投票

问题是,在离题时,我们还需要保留视图模型,因此此行将保留从ViewModel扩展的所有类

© www.soinside.com 2019 - 2024. All rights reserved.