このエラーはAndroid SDK <5.0でのみ発生します。したがって、4.0、4.2、4.3 ect。 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);
}
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:FATAL EXCEPTION:main Java.lang.RuntimeException:Unable to get provider Android.Arch.lifecycle.ProcessLifecycleOwnerInitializer:Java.lang.ClassNotFoundException:Android.Arch.lifecycle.ProcessLifecycleOwnerInitializer at Android.app.ActivityThread.installProvider(ActivityThread。 Java:4563)Android.app.ActivityThread.installContentProviders(ActivityThread.Java:4190)at Android.app.ActivityThread.handleBindApplication(ActivityThread.Java:4132)at Android.app.ActivityThread.access $ 1300(ActivityThread.Java:130) Android.app.ActivityThread $ H.handleMessage(ActivityThread.Java:1255)at Android.os.Handler.dispatchMessage(Handler.Java:99)at Android.os.Looper.loop(Looper.Java:137)at Android。 app.ActivityThread.main(ActivityThread.Java:4745)at Java.lang.reflect.Method.invokeNative(Native Method)at Java.lang.reflect.Method.invoke(Method.Java:511)at com.Android.internal。 os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.Java:786)at com.Android.internal.os.ZygoteInit.main( ZygoteInit.Java:553)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)at Java.lang.ClassLoader.loadClass(ClassLoader.Java:461)at Android.app.ActivityThread.installProvider(ActivityThread.Java:4548)at Android.app.ActivityThread .installContentProviders(ActivityThread.Java:4190)Android.app.ActivityThread.handleBindApplication(ActivityThread.Java:4132)Android.app.ActivityThread.access $ 1300(ActivityThread.Java:130)Android.app.ActivityThread $ H.handleMessage (ActivityThread.Java:1255)Android.os.Handler.dispatchMessage(Handler.Java:99)Android Android.os.Looper.loop(Looper.Java:137)Android.app.ActivityThread.main(ActivityThread.Java: 4745)Java.lang.reflect.Method.invokeNative(Native Method)Java.lang.reflect.Method.invoke(Method .Java:511)com.Android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.Java:786)at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:553)dalvik.system。 NativeStart.main(ネイティブメソッド)
これは最終的にマルチデックスの問題になりました。私はここでドキュメントをフォローしました-> https://developer.Android.com/studio/build/multidex.html#mdex-gradle それは今うまくいきます!
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>(...);}
私の場合、何らかの方法でAndroidアーキテクチャライフサイクルファイルがAndroid Pie(Android9)のバンドルで省略されています。 proguard-rules.pro
AndroidXの場合:
-keep class androidx.lifecycle.** {*;}
サポートのための :
-keep class Android.Arch.lifecycle.** {*;}