我只在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(本机方法)
这最终成为一个多指数问题。我按照这里的文档 - > 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);
}
我所要做的就是将以下内容添加到我的proguard-rules.pro
文件中:
-keep class android.arch.lifecycle.** {*;}
将以下内容添加到ProGuard文件中。从Android Architecture Components 1.0.0(source)开始,这应该不是必需的,但显然它仍然是。
-keep class * implements android.arch.lifecycle.GeneratedAdapter {<init>(...);}