RuntimeException:ClassNotFoundException android.arch.lifecycle.ProcessLifecycleOwnerInitializer

问题描述 投票:10回答:3

我只在Android SDK <5.0上收到此错误。所以4.0,4.2,4.3等。运行Android 5.0+的任何东西都能完美运行。有任何想法吗?发射时崩溃。

按照本指南进行设置 - > https://developer.android.com/topic/libraries/architecture/adding-components.html

app.Java

public void onCreate() {
    super.onCreate();

    ProcessLifecycleOwner.get().getLifecycle().addObserver(new AppLifecycleListener(this));
    registerActivityLifecycleCallbacks(this);
}

app life cycle listener.Java

public class AppLifecycleListener implements LifecycleObserver {
private App app;

public AppLifecycleListener(App app)
{
    this.app = app;
}

@OnLifecycleEvent(Lifecycle.Event.ON_START)
public void onMoveToForeground() {
    if (app.getCurrentActivity() instanceof BaseActivity)
    {
        BaseActivity baseActivity = (BaseActivity) app.getCurrentActivity();
        baseActivity.runIsAPIVersionCheck();
        baseActivity.fetchObjectsWithHUD(false);
    }
}

@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
public void onMoveToBackground() {}

}

摇篮

compileSdkVersion 26

dexOptions {
    javaMaxHeapSize "4g"
}

defaultConfig {
    applicationId "app"
    minSdkVersion 16
    targetSdkVersion 26
    versionCode 71
    versionName "4.9.9"
    multiDexEnabled true
    resConfigs "en"

    javaCompileOptions {
        annotationProcessorOptions {
            includeCompileClasspath false
        }
    }

compile 'com.android.support:appcompat-v7:26.1.0'
compile 'com.android.support:support-v4:26.1.0'
compile 'com.android.support:design:26.1.0'
compile 'android.arch.lifecycle:extensions:1.1.0'
compile 'android.arch.lifecycle:compiler:1.1.0'

02-28 20:54:03.151 2558-2558 /? E / AndroidRuntime:FATAL EXCEPTION:main java.lang.RuntimeException:无法获取提供者android.arch.lifecycle.ProcessLifecycleOwnerInitializer:java.lang.ClassNotFoundException:android.app.ArocessThread.installProvider中的android.arch.lifecycle.ProcessLifecycleOwnerInitializer(ActivityThread。 java:4563)在android.app.ActivityThread.handleBindApplication(ActivityThread.java:4132)的android.app.ActivityThread.installContentProviders(ActivityThread.java:4190)android.app.ActivityThread.access $ 1300(ActivityThread.java:130)在android.app.A.运行Android.os.Holer.loop(Looper.java:137)的android.app.A.运行时,运行android.app.A.运行时,运行android.app.A.运行时,运行android.app.Ath app.ActivityThread.main(ActivityThread.java:4745)位于com.android.internal的java.lang.reflect.Method.invoke(Method.java:511)的java.lang.reflect.Method.invokeNative(Native Method)中。 os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:786)at com.android.internal.os.ZygoteInit.main( ZygoteInit.java:553)at dalvik.system.NativeStart.main(Native Method)引起:java.lang.ClassNotFoundException:android.arch.lifecycle.ProcessLifecycleOwnerInitializer at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)at java.lang.ClassLoader.loadClass(ClassLoader.java:501)位于android.app.ActivityThread的android.app.ActivityThread.installProvider(ActivityThread.java:4548)的java.lang.ClassLoader.loadClass(ClassLoader.java:461) android.app.ActivityThread $ 3.handleMessage上android.app.ActivityThread.access $ 1300(ActivityThread.java:130)的android.app.ActivityThread.handleBindApplication(ActivityThread.java:4132)上的.installContentProviders(ActivityThread.java:4190) (ActivityThread.java:1255)android.app.Handler.dispatchMessage(Handler.java:99)android.app.Looper.loop(Looper.java:137)android.app.ActivityThread.main(ActivityThread.java: 4745)java.lang.reflect.Method.invoke上的java.lang.reflect.Method.invokeNative(Native Method) .java:511)在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:786)at dalvik.system的com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)。 NativeStart.main(本机方法)

android android-support-library android-lifecycle
3个回答
20
投票

这最终成为一个多指数问题。我按照这里的文档 - > https://developer.android.com/studio/build/multidex.html#mdex-gradle,它现在很棒!

摇篮:

implementation 'com.android.support:multidex:1.0.3'

app.Java:

public class App extends Application implements Application.ActivityLifecycleCallbacks {

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}

5
投票

我所要做的就是将以下内容添加到我的proguard-rules.pro文件中:

-keep class android.arch.lifecycle.** {*;}

1
投票

将以下内容添加到ProGuard文件中。从Android Architecture Components 1.0.0(source)开始,这应该不是必需的,但显然它仍然是。

-keep class * implements android.arch.lifecycle.GeneratedAdapter {<init>(...);}
© www.soinside.com 2019 - 2024. All rights reserved.