Je reçois cette erreur uniquement sur le SDK Android <5.0. Donc 4.0, 4.2, 4.3 etc. Tout ce qui tourne sous Android 5.0+ fonctionne parfaitement. Des idées? Crashes au lancement.
Suivez ce guide pour la configuration -> 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() {}
}
Gradle
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: EXCEPTION FATALE: main Java.lang.RuntimeException: impossible d'obtenir le fournisseur Android.Arch.lifecycle.ProcessLifecycleOwnerInitializer: Java.lang.ClassNotFoundException: Android.Arch.lifecycle.ProcessLifecycleOwnerInitializer sur Android.app.ActivityThread.installProvider (ActivityThread.Java:4563) sur Android.app.ActivityThread.installContentProviders (ActivityThread.Java:4190) sur Android.app.ActivityThread.handleBindApplication (ActivityThread.Java:4132) sur Android.app.ActivityThread.access $ 1300 (ActivityThread.Java:130) sur Android.app.ActivityThread $ H.handleMessage (ActivityThread.Java:1255) sur Android.os.Handler.dispatchMessage (Handler.Java:99) sur Android.os.Looper.loop (Looper.Java:137) sur Android.app.ActivityThread.main (ActivityThread.Java:4745) à Java.lang.reflect.Method.invokeNative (Méthode native) à Java.lang.reflect.Method.invoke (Method.Java:511) sur com.Android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.Java:786) sur com.Android.internal.os.ZygoteInit.main (ZygoteInit.Java:553) sur dalvik.system.NativeStart.main (Native Method) Causée par: Java.lang.ClassNotFoundException: Android.Arch.lifecycle.ProcessLifecycleOwnerInitializer at dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.Java:61) sur Java.lang.ClassLoader.loadClass (ClassLoader.Java:501) sur Java.lang.ClassLoader.loadClass (ClassLoader.Java:461) sur Android.app.ActivityThread.installProvider (ActivityThread.Java:4548) sur Android.app.ActivityThread.installContentProviders (ActivityThread.Java:4190) sur Android.app.ActivityThread.handleBindApplication (ActivityThread.Java:4132) sur Android.app.ActivityThread.access $ 1300 (ActivityThread.Java:130) sur Android.app.ActivityThread $ H.handleMessage (ActivityThread.Java:1255) sur Android.os.Handler.dispatchMessage (Handler.Java:99) sur Android.os.Looper.loop (Looper.Java:137) sur Android.app.ActivityThread.main (ActivityThread.Java:4745) à Java.lang.reflect.Method.invokeNative (Méthode native) à Java.lang.reflect.Method.invoke (Method.Java:511) sur com.Android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.Java:786) sur com.Android.internal.os.ZygoteInit.main (ZygoteInit.Java:553) at dalvik.system.NativeStart.main (Native Method)
Cela a fini par être une question multdex. J'ai suivi la documentation ici -> https://developer.Android.com/studio/build/multidex.html#mdex-gradle et cela fonctionne très bien maintenant!
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);
}
Tout ce que je devais faire était d’ajouter ce qui suit dans mon fichier proguard-rules.pro
:
-keep class Android.Arch.lifecycle.** {*;}
Ajoutez les éléments suivants à votre fichier ProGuard. Cela ne devrait pas être nécessaire depuis Android Architecture Components 1.0.0 ( source ), mais apparemment, cela l’est toujours.
-keep class * implements Android.Arch.lifecycle.GeneratedAdapter {<init>(...);}