Status Update
Comments
yb...@google.com <yb...@google.com> #2
Do you have multidex support library? If so, make sure those classes are in the original classpath (i remember we had a bug like that in some android versions, i'm not sure it is still relevant)
yb...@google.com <yb...@google.com> #3
Oh just saw this was referenced from
[Deleted User] <[Deleted User]> #4
ce...@gmail.com <ce...@gmail.com> #5
Hi, we have the same issue. We are not able to upgrade because the exception is thrown as soon as the Room database is built.
We do have android.defaultConfig.multiDexEnabled = true
but no appearance of multidex library (support or androidx) among production dependencies.
I'm not building the app with an M1 Mac. We use Intel Mac & Linux.
da...@google.com <da...@google.com> #6
Can you verify the version of androidx.sqlite
being brought as a transitive dependency? Specifically that it is not being downgraded. To check you can use ./gradlew :app:dependencies
./gradlew androidDependencies
Also maybe try forcing the androidx.sqlite
dependency to 2.2.0 via implementation 'androidx.sqlite:sqlite:2.2.0'
to see if it makes a difference.
ce...@gmail.com <ce...@gmail.com> #7
Good catch! We had forced the version of androidx.sqlite
to 2.1.0
because of some very old incompatibility between WorkManager and Room. WorkManager needed androidx.sqlite:2.1.0
but Room forced androidx.sqlite:2.0.1
.
Removing the forced version to 2.1.0
solved the issue and now the transitive resolved version of androidx.sqlite
is 2.2.0
.
Thanks!
Description
Version used: 2.4.0
Devices/Android versions reproduced on: API 31 arm64-v8a emulator
Our M1 Mac builds crash at runtime with the following error:
12-21 13:10:18.623 E/AndroidRuntime( 6025): Process: com.netflix.mediaclient, PID: 6025
12-21 13:10:18.623 E/AndroidRuntime( 6025): java.lang.RuntimeException: Unable to get provider androidx.startup.InitializationProvider: androidx.startup.StartupException: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/sqlite/db/SupportSQLiteCompat$Api19Impl;
12-21 13:10:18.623 E/AndroidRuntime( 6025): at android.app.ActivityThread.installProvider(ActivityThread.java:7430)
12-21 13:10:18.623 E/AndroidRuntime( 6025): at android.app.ActivityThread.installContentProviders(ActivityThread.java:6942)
12-21 13:10:18.623 E/AndroidRuntime( 6025): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6713)
12-21 13:10:18.623 E/AndroidRuntime( 6025): at android.app.ActivityThread.access$1500(ActivityThread.java:247)
12-21 13:10:18.623 E/AndroidRuntime( 6025): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2057)
12-21 13:10:18.623 E/AndroidRuntime( 6025): at android.os.Handler.dispatchMessage(Handler.java:106)
12-21 13:10:18.623 E/AndroidRuntime( 6025): at android.os.Looper.loopOnce(Looper.java:201)
12-21 13:10:18.623 E/AndroidRuntime( 6025): at android.os.Looper.loop(Looper.java:288)
12-21 13:10:18.623 E/AndroidRuntime( 6025): at android.app.ActivityThread.main(ActivityThread.java:7842)
12-21 13:10:18.623 E/AndroidRuntime( 6025): at java.lang.reflect.Method.invoke(Native Method)
12-21 13:10:18.623 E/AndroidRuntime( 6025): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
12-21 13:10:18.623 E/AndroidRuntime( 6025): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
12-21 13:10:18.623 E/AndroidRuntime( 6025): Caused by: androidx.startup.StartupException: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/sqlite/db/SupportSQLiteCompat$Api19Impl;
12-21 13:10:18.623 E/AndroidRuntime( 6025): at androidx.startup.AppInitializer.doInitialize(AppInitializer.java:162)
12-21 13:10:18.623 E/AndroidRuntime( 6025): at androidx.startup.AppInitializer.discoverAndInitialize(AppInitializer.java:198)
12-21 13:10:18.623 E/AndroidRuntime( 6025): at androidx.startup.InitializationProvider.onCreate(InitializationProvider.java:42)
12-21 13:10:18.623 E/AndroidRuntime( 6025): at android.content.ContentProvider.attachInfo(ContentProvider.java:2404)
12-21 13:10:18.623 E/AndroidRuntime( 6025): at android.content.ContentProvider.attachInfo(ContentProvider.java:2374)
12-21 13:10:18.623 E/AndroidRuntime( 6025): at android.app.ActivityThread.installProvider(ActivityThread.java:7425)
12-21 13:10:18.623 E/AndroidRuntime( 6025): ... 11 more
12-21 13:10:18.623 E/AndroidRuntime( 6025): Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/sqlite/db/SupportSQLiteCompat$Api19Impl;
12-21 13:10:18.623 E/AndroidRuntime( 6025): at androidx.room.RoomDatabase$JournalMode.isLowRamDevice(RoomDatabase.java:756)
12-21 13:10:18.623 E/AndroidRuntime( 6025): at androidx.room.RoomDatabase$JournalMode.resolve(RoomDatabase.java:747)
12-21 13:10:18.623 E/AndroidRuntime( 6025): at androidx.room.RoomDatabase$Builder.build(RoomDatabase.java:1473)
12-21 13:10:18.623 E/AndroidRuntime( 6025): at androidx.work.impl.WorkDatabase.create(WorkDatabase.java:155)
12-21 13:10:18.623 E/AndroidRuntime( 6025): at androidx.work.impl.WorkManagerImpl.<init>(WorkManagerImpl.java:244)
12-21 13:10:18.623 E/AndroidRuntime( 6025): at androidx.work.impl.WorkManagerImpl.<init>(WorkManagerImpl.java:219)
12-21 13:10:18.623 E/AndroidRuntime( 6025): at androidx.work.impl.WorkManagerImpl.initialize(WorkManagerImpl.java:198)
12-21 13:10:18.623 E/AndroidRuntime( 6025): at androidx.work.WorkManager.initialize(WorkManager.java:210)
12-21 13:10:18.623 E/AndroidRuntime( 6025): at androidx.work.WorkManagerInitializer.create(WorkManagerInitializer.java:39)
12-21 13:10:18.623 E/AndroidRuntime( 6025): at androidx.work.WorkManagerInitializer.create(WorkManagerInitializer.java:30)
12-21 13:10:18.623 E/AndroidRuntime( 6025): at androidx.startup.AppInitializer.doInitialize(AppInitializer.java:155)
12-21 13:10:18.623 E/AndroidRuntime( 6025): ... 16 more
12-21 13:10:18.623 E/AndroidRuntime( 6025): Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.sqlite.db.SupportSQLiteCompat$Api19Impl" on path: DexPathList[[zip file "/data/app/~~arruly0E5btL9661zrUQEA==/com.netflix.mediaclient-Ce0di3-LLRxOxkbPA5cgCQ==/base.apk"],nativeLibraryDirectories=[/data/app/~~arruly0E5btL9661zrUQEA==/com.netflix.mediaclient-Ce0di3-LLRxOxkbPA5cgCQ==/lib/arm64, /data/app/~~arruly0E5btL9661zrUQEA==/com.netflix.mediaclient-Ce0di3-LLRxOxkbPA5cgCQ==/base.apk!/lib/arm64-v8a, /system/lib64, /system_ext/lib64]]
12-21 13:10:18.623 E/AndroidRuntime( 6025): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:218)
12-21 13:10:18.623 E/AndroidRuntime( 6025): at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
12-21 13:10:18.623 E/AndroidRuntime( 6025): at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
Multi-dexing is enabled for our app. We're using AGP 7.0.3.