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

RuntimeException:ClassNotFoundException android。拱生命周期。ProcessLifecycleOwnerInitializer

  •  14
  • mikemike396  · 技术社区  · 7 年前

    我仅在Android SDK上收到此错误<5.0. So 4.0、4.2、4.3等。任何运行Android 5.0+的软件都能完美运行。有什么想法吗?发射时崩溃。

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

    应用程序。Java语言

    public void onCreate() {
        super.onCreate();
    
        ProcessLifecycleOwner.get().getLifecycle().addObserver(new AppLifecycleListener(this));
        registerActivityLifecycleCallbacks(this);
    }
    

    AppLifecycleListener。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:致命异常:主 Java语言lang.RuntimeException:无法获取提供程序android。拱生命周期。ProcessLifecycleOwnerInitializer:java。lang.ClassNotFoundException:android。拱生命周期。ProcessLifecycleOwnerInitializer 在android上。应用程序。ActivityThread。installProvider(ActivityThread.java:4563) 在android上。应用程序。ActivityThread。installContentProviders(ActivityThread.java:4190) 在android上。应用程序。ActivityThread。handleBindApplication(ActivityThread.java:4132) 在android上。应用程序。ActivityThread。access$1300(ActivityThread.java:130) 在android上。应用程序。ActivityThread$H.handleMessage(ActivityThread.java:1255) 在android上。操作系统。处理程序。dispatchMessage(Handler.java:99) 在android上。操作系统。活套。循环(Looper.java:137) 在android上。应用程序。ActivityThread。main(ActivityThread.java:4745) 在java。lang.reflect。方法invokenactive(本机方法) 在java。lang.reflect。方法invoke(方法java:511) 在com。安卓内部的操作系统。ZygoteInit$MethodandArgscaler。运行(ZygoteInit.java:786) 在com。安卓内部的操作系统。合子岩。main(ZygoteInit.java:553) 在dalvik。系统NativeStart。main(本机方法) 原因:java。lang.ClassNotFoundException:android。拱生命周期。ProcessLifecycleOwnerInitializer 在dalvik。系统BaseDexClassLoader。findClass(BaseDexClassLoader.java:61) 在java。lang.ClassLoader。loadClass(ClassLoader.java:501) 在java。lang.ClassLoader。loadClass(ClassLoader.java:461) 在android上。应用程序。ActivityThread。installProvider(ActivityThread.java:4548) 在android上。应用程序。ActivityThread。installContentProviders(ActivityThread.java:4190) 在android上。应用程序。ActivityThread。handleBindApplication(ActivityThread.java:4132) 在android上。应用程序。ActivityThread。access$1300(ActivityThread.java:130) 在android上。应用程序。ActivityThread$H.handleMessage(ActivityThread.java:1255) 在android上。操作系统。处理程序。dispatchMessage(Handler.java:99) 在android上。操作系统。活套。循环(Looper.java:137) 在android上。应用程序。ActivityThread。main(ActivityThread.java:4745) 在java。lang.reflect。方法invokenactive(本机方法) 在java。lang.reflect。方法invoke(方法java:511) 在com。安卓内部的操作系统。ZygoteInit$MethodandArgscaler。运行(ZygoteInit.java:786) 在com。安卓内部的操作系统。合子岩。main(ZygoteInit.java:553) 在dalvik。系统NativeStart。main(本机方法)

    4 回复  |  直到 7 年前
        1
  •  25
  •   mikemike396    6 年前

    这最终成为了multdex的问题。我在这里查看了文档-> https://developer.android.com/studio/build/multidex.html#mdex-gradle 现在效果很好!

    格拉德尔:

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

    应用程序。java:

    public class App extends Application implements Application.ActivityLifecycleCallbacks {
    
    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }
    
        2
  •  7
  •   Paul LeBeau    6 年前

    我所要做的就是在我的 proguard-rules.pro 文件:

    -keep class android.arch.lifecycle.** {*;}
    
        3
  •  3
  •   Dino    5 年前

    在我的例子中,android架构生命周期文件在Pie上的android捆绑包(Android9)中被忽略了。所以我所做的就是在 proguard-rules.pro

    对于AndroidX:

    -keep class androidx.lifecycle.** {*;}
    

    支持:

    -keep class android.arch.lifecycle.** {*;}
    
        4
  •  1
  •   Cristan    6 年前

    将以下内容添加到您的ProGuard文件中。由于Android架构组件1.0.0,这应该不是必需的( source ),但显然仍然如此。

    -keep class * implements android.arch.lifecycle.GeneratedAdapter {<init>(...);}