Не удается создать экземпляр класса для подкласса AndroidViewModel - PullRequest
0 голосов
/ 20 сентября 2018

Я получаю следующую ошибку при использовании пакета выпуска моего приложения:

E / AndroidRuntime: FATAL EXCEPTION: main Процесс: 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) в android.app.servertransaction.TransactionExecutor.cycleToPath (TransactionExecutor.java:165) в android.app.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:142) в android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:70) в android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1808) в android.os.H..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: [class 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.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) в android.app.servertransaction.TransactionExecutor.cycleToPath (TransactionExecutor)в android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:142) в android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:70) в android.app.ActivityThread $ H.handleMessage (ActivityThread8java: ActivityThread8java: ActivityThread8j)) на 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)

Если я посмотрю на файл сопоставления, 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'
...