Search code examples
androidhere-apiandroid-workmanager

Facing `WorkManager is not initialized properly` after migration to Here SDK v3.15


After migrating to Here SDK v3.15 and replacing the new service in the android manifest based on Here new sdk doc

<service
  android:name="com.here.android.mpa.service.MapService"
  android:label="HereMapService"
  android:process="global.Here.Map.Service.v3">
  <intent-filter>
    <!--Note, action name should not be changed.-->
    <action android:name="com.here.android.mpa.service.MapService.v3" />
  </intent-filter>
</service>

I am facing this issue in global.Here.Map.Service.v3 process:

2020-06-02 17:52:43.043 E/Zygote: isWhitelistProcess - Process is Whitelisted
2020-06-02 17:52:43.044 E/Zygote: accessInfo : 1
2020-06-02 17:52:43.098 E/.Map.Service.v: Unknown bits set in runtime_flags: 0x8000
2020-06-02 17:52:45.160 E/LoadedApk: Unable to instantiate appComponentFactory
    java.lang.ClassNotFoundException: Didn't find class "{##APPLICATION_PACKAGE_NAME##}.debug.whateverString" on path: DexPathList[[zip file "/data/app/{##APPLICATION_PACKAGE_NAME##}.debug-2kj8tO3o7W1yzkrRozOJbg==/base.apk"],nativeLibraryDirectories=[/data/app/{##APPLICATION_PACKAGE_NAME##}.debug-2kj8tO3o7W1yzkrRozOJbg==/lib/arm64, /data/app/{##APPLICATION_PACKAGE_NAME##}.debug-2kj8tO3o7W1yzkrRozOJbg==/base.apk!/lib/arm64-v8a, /system/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:196)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at android.app.LoadedApk.createAppFactory(LoadedApk.java:273)
        at android.app.LoadedApk.createOrUpdateClassLoaderLocked(LoadedApk.java:896)
        at android.app.LoadedApk.getClassLoader(LoadedApk.java:991)
        at android.app.LoadedApk.getResources(LoadedApk.java:1248)
        at android.app.ContextImpl.createAppContext(ContextImpl.java:2616)
        at android.app.ContextImpl.createAppContext(ContextImpl.java:2608)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6871)
        at android.app.ActivityThread.access$1300(ActivityThread.java:270)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2051)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:237)
        at android.app.ActivityThread.main(ActivityThread.java:7948)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)
2020-06-02 17:52:45.607 W/.Map.Service.v: Accessing hidden method Landroid/app/AppGlobals;->getInitialApplication()Landroid/app/Application; (greylist, reflection, allowed)
2020-06-02 17:52:46.172 E/AndroidRuntime: FATAL EXCEPTION: main
    Process: global.Here.Map.Service.v3, PID: 22039
    java.lang.RuntimeException: Unable to create application {##APPLICATION_PACKAGE_NAME##}.MyApplication: java.lang.IllegalStateException: WorkManager is not initialized properly.  You have explicitly disabled WorkManagerInitializer in your manifest, have not manually called WorkManager#initialize at this point, and your Application does not implement Configuration.Provider.
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6998)
        at android.app.ActivityThread.access$1300(ActivityThread.java:270)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2051)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:237)
        at android.app.ActivityThread.main(ActivityThread.java:7948)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)
     Caused by: java.lang.IllegalStateException: WorkManager is not initialized properly.  You have explicitly disabled WorkManagerInitializer in your manifest, have not manually called WorkManager#initialize at this point, and your Application does not implement Configuration.Provider.
        at androidx.work.impl.WorkManagerImpl.getInstance(WorkManagerImpl.java:146)
        at androidx.work.WorkManager.getInstance(WorkManager.java:181)
        at {##APPLICATION_PACKAGE_NAME##}.bl.actions.WorkDefinition$RecurringWorkDefinition.register(WorkDefinition.kt:63)
        at {##APPLICATION_PACKAGE_NAME##}.MyApplication.onCreate(MyApplication.kt:71)
        at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1190)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6993)
        at android.app.ActivityThread.access$1300(ActivityThread.java:270) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2051) 
        at android.os.Handler.dispatchMessage(Handler.java:107) 
        at android.os.Looper.loop(Looper.java:237) 
        at android.app.ActivityThread.main(ActivityThread.java:7948) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075) 
2020-06-02 17:52:47.250 E/(CombinedCrashHandler.kt:19)::uncaughtException [main]: uncaughtException
    java.lang.RuntimeException: Unable to create application {##APPLICATION_PACKAGE_NAME##}.MyApplication: java.lang.IllegalStateException: WorkManager is not initialized properly.  You have explicitly disabled WorkManagerInitializer in your manifest, have not manually called WorkManager#initialize at this point, and your Application does not implement Configuration.Provider.
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6998)
        at android.app.ActivityThread.access$1300(ActivityThread.java:270)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2051)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:237)
        at android.app.ActivityThread.main(ActivityThread.java:7948)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)
     Caused by: java.lang.IllegalStateException: WorkManager is not initialized properly.  You have explicitly disabled WorkManagerInitializer in your manifest, have not manually called WorkManager#initialize at this point, and your Application does not implement Configuration.Provider.
        at androidx.work.impl.WorkManagerImpl.getInstance(WorkManagerImpl.java:146)
        at androidx.work.WorkManager.getInstance(WorkManager.java:181)
        at {##APPLICATION_PACKAGE_NAME##}.bl.actions.WorkDefinition$RecurringWorkDefinition.register(WorkDefinition.kt:63)
        at {##APPLICATION_PACKAGE_NAME##}.MyApplication.onCreate(MyApplication.kt:71)
        at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1190)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6993)
        at android.app.ActivityThread.access$1300(ActivityThread.java:270) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2051) 
        at android.os.Handler.dispatchMessage(Handler.java:107) 
        at android.os.Looper.loop(Looper.java:237) 
        at android.app.ActivityThread.main(ActivityThread.java:7948) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075) 
2020-06-02 17:52:47.775 E/SQLiteLog: (10) POSIX Error : 11 SQLite Error : 3850
2020-06-02 17:52:47.775 E/SQLiteLog: (10) LOCK : Getting pending lock for (1) failed due to (11). The current owner is (21676).
2020-06-02 17:52:47.777 E/SQLiteLog: (10) POSIX Error : 11 SQLite Error : 3850
2020-06-02 17:52:47.777 E/SQLiteLog: (10) LOCK : Getting pending lock for (1) failed due to (11). The current owner is (21676).
2020-06-02 17:52:47.779 E/SQLiteLog: (10) POSIX Error : 11 SQLite Error : 3850
2020-06-02 17:52:47.779 E/SQLiteLog: (10) LOCK : Getting pending lock for (1) failed due to (11). The current owner is (21676).
2020-06-02 17:52:47.784 E/SQLiteLog: (10) POSIX Error : 11 SQLite Error : 3850
2020-06-02 17:52:47.784 E/SQLiteLog: (10) LOCK : Getting pending lock for (1) failed due to (11). The current owner is (21676).

any suggestion?


Solution

  • I removed the android:process part from the service definition in AndroidManifest and problem solved:

            <service
                android:name="com.here.android.mpa.service.MapService"
                android:exported="false"
                android:label="HereMapService">
                <intent-filter>
                    <!--Note, action name should not be changed.-->
                    <action android:name="com.here.android.mpa.service.MapService.v3" />
                </intent-filter>
            </service>