相关疑难解决方法(0)

RuntimeException:ClassNotFoundException android.arch.lifecycle.ProcessLifecycleOwnerInitializer

我只在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);
}
Run Code Online (Sandbox Code Playgroud)

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() {}
Run Code Online (Sandbox Code Playgroud)

}

摇篮

compileSdkVersion 26

dexOptions {
    javaMaxHeapSize "4g"
}

defaultConfig {
    applicationId "app"
    minSdkVersion 16
    targetSdkVersion 26
    versionCode 71
    versionName …
Run Code Online (Sandbox Code Playgroud)

android android-lifecycle android-support-library

13
推荐指数
2
解决办法
6982
查看次数

multidex - NoClassDefFoundError 启用了 multidex

我的应用程序在 21 之前崩溃并java.lang.NoClassDefFoundError app.module.SomeClass出现错误。

我已经启用了 Multidex:

构建.gradle:

android {
    defaultConfig {
        ...
        multiDexEnabled true
    }
}

dependencies {
   ...
   implementation "androidx.multidex:multidex:2.0.1"
}
Run Code Online (Sandbox Code Playgroud)

我的应用程序类:

class App : DaggerApplication() {
    ...
    override fun attachBaseContext(base: Context) {
        super.attachBaseContext(base)
        MultiDex.install(this)
    }
Run Code Online (Sandbox Code Playgroud)

在阅读了主 DEX 文件中所需的声明类之后,我创建了multidex-config.pro文件以包含app.module.**在主 DEX 文件中:

-keep class app.module.** { *; }
Run Code Online (Sandbox Code Playgroud)

并在 build.gradle 中注册:

android {
  buildTypes {
    debug {
      ...
      multiDexKeepProguard file('multidex-config.pro')
    }
}
Run Code Online (Sandbox Code Playgroud)

我通过检查build/intermediates/legacy_multidex_main_dex_list/debug/mainDexList.txt和分析调试 apk(检查是否classes.dex包含app.module.SomeClass)来确认它。

但我仍然收到java.lang.NoClassDefFoundError …

android kotlin android-multidex

8
推荐指数
2
解决办法
2863
查看次数