Невозможно создать экземпляр класса для подкласса AndroidViewModel
При использовании пакета выпуска моего приложения я получаю следующую ошибку:
E / AndroidRuntime: ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основной Процесс: my.package.free, PID: 14179 java.lang.RuntimeException: не удается создать экземпляр класса cafE в bpy$aa(:9) в cafConCreate(:14) в androidx.fragment.app.Fragment.performCreate(:5) в bmasa(:243) в bmaDa(:260) в bmaDa (: 11) в bmasa(:510) в bmasb(:31) в bmasg(:8) в bmasd (: 11) в bmasm(:3) в androidx.fragment.app.FragmentActivity.onStart(:6) в androidx.appcompat.app.AppCompatActivity.onStart(:1) в android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1391) в android.app.Activity.performStart(Activity.java:7157) в android.app.ActivityThread.handleStartActivity(ActivityThread.java:2937) в android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:180) на андроиде.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:165) в android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142) в android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70) в android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) в android.os.Handler.dispatchMessage(Handler.java:106) в android.os.Looper.loop(Looper.java:193) в android.app.ActivityThread.main(ActivityThread.java:6669) в java.lang.reflect.Method.invoke(собственный метод) в com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) на com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) Вызывается: java.lang.NoSuchMethodException: [класс android.app.Application] на java.lang.Class.getConstructor0(Class.java:2327) в java.lang.Class.getConstructor(Class.java:1725) в bpy$aa(:5) в cafConCreate(:14) в androidx.fragment.app.Fragment.performCreate(:5) в bmasa(:243) в bmaDa(:260) в bmaDa (: 11) в bmasa(:510) в bmasb(:31) в bmasg(:8) в bmasd (: 11) в bmasm(:3) в androidx.fragment.app.FragmentActivity.onStart(:6) в androidx.appcompat.app.AppCompatActivity.onStart(:1) в android.app.I nstrumentation.callActivityOnStart (Instrumentation.java:1391) в android.app.Activity.performStart(Activity.java:7157) в android.app.ActivityThread.handleStartActivity(ActivityThread.java:2937) в android.app.servertransaction.TransactionExecutor.perquenceSife. (TransactionExecutor.java:180) на android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:165) на android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142) на android.app.ransactionser выполнить (TransactionExecutor.java:70) в android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) в android.os.Handler.dispatchMessage(Handler.java:106) в android.os.Looper.loop (Looper.java: 193) в android.app.ActivityThread.main(ActivityThread.java:6669) в java.lang.reflect.Method.invoke(собственный метод) в com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit.java: 493) на com.android.internal.os.ZygoteInit.ma в (ZygoteInit.java:858)
Если я посмотрю на файл сопоставления, c.a.f.E
сопоставлен с my.package.fragments.ProfileViewModel
, Вот определение класса:
public class ProfileViewModel extends AndroidViewModel {
private final ContactSpanRepository contactSpanRepository;
private final ProfileRepository profileRepository;
public ProfileViewModel(Application application) {
super(application);
Context context = getApplication().getApplicationContext();
this.contactSpanRepository = ContactSpanRepository.getInstance(context);
this.profileRepository = ProfileRepository.getInstance(context);
}
public LiveData<List<ContactSpan>> getContactSpans(Long profileId) {
return contactSpanRepository.getContactSpan(profileId);
}
public LiveData<List<Profile>> getProfiles() {
return profileRepository.getProfiles();
}
}
Проблема не возникает, когда я запускаю приложение из Android Studio (3.3 Canary 11). Проблема возникает только с выпущенными пакетами (когда я устанавливаю APK, созданный gradle assembleRelease
). Я думаю, что проблема связана с оптимизацией запуска при создании пакетов выпуска.
Я пытался отключить R8 (android.enableR8=false
) но я все еще получаю ту же проблему. Принудительное сохранение определения класса в файле конфигурации Proguard также не помогает.
Используются следующие свойства Gradle:
android.enableJetifier = true android.useAndroidX = true
Вот используемые зависимости androidx:
annotationProcessor 'androidx.annotation:annotation:1.0.0-rc02'
implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0-rc01'
implementation "android.arch.work:work-runtime:1.0.0-alpha08"
implementation 'androidx.appcompat:appcompat:1.0.0-rc02'
implementation 'androidx.browser:browser:1.0.0-rc02'
implementation 'androidx.cardview:cardview:1.0.0-rc02'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.exifinterface:exifinterface:1.0.0-rc02'
implementation 'androidx.legacy:legacy-support-v4:1.0.0-rc02'
implementation 'androidx.recyclerview:recyclerview:1.0.0-rc02'