代码之家  ›  专栏  ›  技术社区  ›  Laurent

无法为AndroidViewModel的子类创建类的实例

  •  1
  • Laurent  · 技术社区  · 8 年前

    我在使用我的应用程序的发行包时遇到以下错误:

    E/AndroidRuntime:致命异常:main java.lang.RuntimeException:无法创建类c.a.f.E的实例 在b.p.y$a.a(:9) 在androidx.fragment.app.fragment.performCreate(:5) 在b.m.a.s.a(:243) 公元前260年 公元前11点 在b.m.a.s.b(:31) 上午11点 凌晨3点 在androidx.appcompat.app.AppCompatActivity.onStart(:1) 在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.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.zygenetinit.main上(zygenetinit.java:858) 原因:java.lang.NoSuchMethodException:[类android.app.Application] 在java.lang.Class.getConstructor0上(Class.java:2327) 在b.p.y$a.a(:5) 在c.a.f.c.onCreate(:14) 在androidx.fragment.app.fragment.performCreate(:5) 在b.m.a.s.a(:243) 公元前260年 公元前11点 上午10点(510分) 在b.m.a.s.b(:31) 在b.m.a.s.g.(:8) 上午11点 凌晨3点 在androidx.appcompat.app.AppCompatActivity.onStart(:1) 在android.app.Instrumentation.callActivityOnStart上(Instrumentation.java:1391) 在android.app.ActivityThread.handleStartActivity上(ActivityThread.java:2937) 在android.app.servertransaction.TransactionExecutor.performLifecycleSequence上(TransactionExecutor.java:180) 在android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142) 在android.app.ActivityThread$H.handleMessage上(ActivityThread.java:1808) 在android.os.Looper.loop上(Looper.java:193) 在android.app.ActivityThread.main上(ActivityThread.java:6669) 在com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 在com.android.internal.os.zygenetinit.main上(zygenetinit.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();
        }
    
    }
    

    gradle assembleRelease ). 我认为这个问题与创建发布包时运行的优化有关。

    我试图禁用R8( android.enableR8=false )但我还是有同样的问题。强制将类定义保留在Proguard配置文件中也没有帮助。

    使用以下渐变属性:

    android.enableJetifier=真

    下面是使用的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'
    
    0 回复  |  直到 8 年前