I have been struggling for a week with my app who is crashing on the play store but works well with Expo GO. I took over a legacy app that I upgraded from SDK 41 to 48.
My eas.json
{
"cli": {
"version": ">= 3.6.1"
},
"build": {
"development": {
"developmentClient": true,
"distribution": "internal",
"ios": {
"resourceClass": "m1-medium"
},
"channel": "development"
},
"preview": {
"distribution": "internal",
"ios": {
"resourceClass": "m1-medium"
},
"channel": "preview"
},
"production": {
"ios": {
"resourceClass": "m1-medium"
},
"channel": "production"
}
},
"submit": {
"production": {}
}
}
ADB Logcat highlights
02-28 06:32:56.106 1255 1388 I MiuiNetworkPolicy: updateUidState uid = 10088, uidState = 20
02-28 06:32:56.128 11932 11932 E LoaderTask: Failed to launch embedded or launchable update
02-28 06:32:56.128 11932 11932 E LoaderTask: java.lang.Exception: No launchable update was found. If this is a bare workflow app, make sure you have configured expo-updates correctly in android/app/build.gradle.
02-28 06:32:56.128 11932 11932 E LoaderTask: at expo.modules.updates.launcher.DatabaseLauncher.launch(DatabaseLauncher.kt:71)
02-28 06:32:56.128 11932 11932 E LoaderTask: at expo.modules.updates.loader.LoaderTask$launchFallbackUpdateFromDisk$1.onSuccess(LoaderTask.kt:269)
02-28 06:32:56.128 11932 11932 E LoaderTask: at expo.modules.updates.loader.Loader.finishWithSuccess(Loader.kt:137)
02-28 06:32:56.128 11932 11932 E LoaderTask: at expo.modules.updates.loader.Loader.handleAssetDownloadCompleted(Loader.kt:305)
02-28 06:32:56.128 11932 11932 E LoaderTask: at expo.modules.updates.loader.Loader.downloadAllAssets(Loader.kt:229)
02-28 06:32:56.128 11932 11932 E LoaderTask: at expo.modules.updates.loader.Loader.processUpdateManifest(Loader.kt:196)
....
02-28 06:32:56.403 1255 1264 I system_server: Background concurrent copying GC freed 195079(6508KB) AllocSpace objects, 2(104KB) LOS objects, 13% free, 38MB/44MB, paused 308us total 461.449ms
02-28 06:32:56.449 11932 11975 E dev.expo.updates: {"timestamp":1677583976446,"message":"Failed to download manifest from URL: https:\/\/u.expo.dev\/0db3f5b0-a7ce-11e9-b565-4586c71668b9","code":"UpdateFailedToLoad","level":"error","stacktrace":["expo.modules.updates.logging.UpdatesLogger.logEntryString(UpdatesLogger.kt:135)","expo.modules.updates.logging.UpdatesLogger.error(UpdatesLogger.kt:96)","expo.modules.updates.logging.UpdatesLogger.error(UpdatesLogger.kt:86)","expo.modules.updates.logging.UpdatesLogger.error$default(UpdatesLogger.kt:81)","expo.modules.updates.loader.FileDownloader$downloadManifest$1.onResponse(FileDownloader.kt:309)","expo.modules.updates.loader.FileDownloader$downloadData$1.onResponse(FileDownloader.kt:393)","okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:519)","java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)","java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)","java.lang.Thread.run(Thread.java:919)"]}
02-28 06:32:56.453 11932 11975 E Loader : Failed to download manifest from URL: https://u.expo.dev/0db3f5b0-a7ce-11e9-b565-4586c71668b9
02-28 06:32:56.453 11932 11975 E Loader : java.lang.Exception: "channel-name" is not allowed to be empty. The headers "expo-runtime-version", "expo-channel-name", and "expo-platform" are required. They can also be set with the query parameters "runtime-version", "channel-name", and "platform".
02-28 06:32:56.453 11932 11975 E Loader : at expo.modules.updates.loader.FileDownloader$downloadManifest$1.onResponse(FileDownloader.kt:312)
02-28 06:32:56.453 11932 11975 E Loader : at expo.modules.updates.loader.FileDownloader$downloadData$1.onResponse(FileDownloader.kt:393)
02-28 06:32:56.453 11932 11975 E Loader : at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:519)
02-28 06:32:56.453 11932 11975 E Loader : at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
02-28 06:32:56.453 11932 11975 E Loader : at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
02-28 06:32:56.453 11932 11975 E Loader : at java.lang.Thread.run(Thread.java:919)
02-28 06:32:56.454 11932 11975 E dev.expo.updates: {"timestamp":1677583976453,"message":"UpdatesController loaderTask onFailure: \"channel-name\" is not allowed to be empty. The headers \"expo-runtime-version\", \"expo-channel-name\", and \"expo-platform\" are required. They can also be set with the query parameters \"runtime-version\", \"channel-name\", and \"platform\".","code":"None","level":"error","stacktrace":["expo.modules.updates.logging.UpdatesLogger.logEntryString(UpdatesLogger.kt:135)","expo.modules.updates.logging.UpdatesLogger.error(UpdatesLogger.kt:96)","expo.modules.updates.logging.UpdatesLogger.error(UpdatesLogger.kt:86)","expo.modules.updates.logging.UpdatesLogger.error$default(UpdatesLogger.kt:81)","expo.modules.updates.UpdatesController$start$1.onFailure(UpdatesController.kt:269)","expo.modules.updates.loader.LoaderTask.finish(LoaderTask.kt:194)","expo.modules.updates.loader.LoaderTask.access$finish(LoaderTask.kt:43)","expo.modules.updates.loader.LoaderTask$start$2$launchRemoteUpdate$1.onFailure(LoaderTask.kt:126)","expo.modules.updates.loader.LoaderTask$launchRemoteUpdateInBackground$1$1.onFailure(LoaderTask.kt:300)","expo.modules.updates.loader.Loader.finishWithError(Loader.kt:150)","expo.modules.updates.loader.Loader.access$finishWithError(Loader.kt:25)","expo.modules.updates.loader.Loader$start$1.onFailure(Loader.kt:102)","expo.modules.updates.loader.FileDownloader$downloadManifest$1.onResponse(FileDownloader.kt:310)","expo.modules.updates.loader.FileDownloader$downloadData$1.onResponse(FileDownloader.kt:393)","okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:519)","java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)","java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)","java.lang.Thread.run(Thread.java:919)"]}
02-28 06:32:56.455 11932 11975 E LoaderTask: Unexpected error encountered while loading this app
02-28 06:32:56.455 11932 11975 E LoaderTask: java.lang.Exception: "channel-name" is not allowed to be empty. The headers "expo-runtime-version", "expo-channel-name", and "expo-platform" are required. They can also be set with the query parameters "runtime-version", "channel-name", and "platform".
02-28 06:32:56.455 11932 11975 E LoaderTask: at expo.modules.updates.loader.FileDownloader$downloadManifest$1.onResponse(FileDownloader.kt:312)
02-28 06:32:56.455 11932 11975 E LoaderTask: at expo.modules.updates.loader.FileDownloader$downloadData$1.onResponse(FileDownloader.kt:393)
02-28 06:32:56.455 11932 11975 E LoaderTask: at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:519)
02-28 06:32:56.455 11932 11975 E LoaderTask: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
02-28 06:32:56.455 11932 11975 E LoaderTask: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
02-28 06:32:56.455 11932 11975 E LoaderTask: at java.lang.Thread.run(Thread.java:919)
02-28 06:32:56.456 11932 11975 E dev.expo.updates: {"timestamp":1677583976456,"message":"UpdatesController onBackgroundUpdateFinished: Error: \"channel-name\" is not allowed to be empty. The headers \"expo-runtime-version\", \"expo-channel-name\", and \"expo-platform\" are required. They can also be set with the query parameters \"runtime-version\", \"channel-name\", and \"platform\".","code":"Unknown","level":"error","stacktrace":["expo.modules.updates.loader.FileDownloader$downloadManifest$1.onResponse(FileDownloader.kt:312)","expo.modules.updates.loader.FileDownloader$downloadData$1.onResponse(FileDownloader.kt:393)","okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:519)","java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)","java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)","java.lang.Thread.run(Thread.java:919)"]}
02-28 06:32:56.457 11932 11932 W unknown:ReactInstanceManagerBuilder: You're not setting the JS Engine Resolution Algorithm. We'll try to load JSC first, and if it fails we'll fallback to Hermes
02-28 06:32:56.458 11932 11932 V SoLoader: libjscexecutor.so not found on /data/app/com.blessme.blessme-bhwoRSyMPUbNHmHEQ8Qgcw==/lib/arm
02-28 06:32:56.458 11932 11932 V SoLoader: libjscexecutor.so not found on /data/app/com.blessme.blessme-bhwoRSyMPUbNHmHEQ8Qgcw==/base.apk!/lib/armeabi-v7a
02-28 06:32:56.458 11932 11932 V SoLoader: libjscexecutor.so not found on /data/app/com.blessme.blessme-bhwoRSyMPUbNHmHEQ8Qgcw==/split_config.armeabi_v7a.apk!/lib/armeabi-v7a
02-28 06:32:56.458 11932 11932 V SoLoader: libjscexecutor.so not found on /data/app/com.blessme.blessme-bhwoRSyMPUbNHmHEQ8Qgcw==/split_config.fr.apk!/lib/armeabi-v7a
02-28 06:32:56.458 11932 11932 V SoLoader: libjscexecutor.so not found on /data/app/com.blessme.blessme-bhwoRSyMPUbNHmHEQ8Qgcw==/split_config.xhdpi.apk!/lib/armeabi-v7a
02-28 06:32:56.458 11932 11932 V SoLoader: libjscexecutor.so not found on /data/app/com.blessme.blessme-bhwoRSyMPUbNHmHEQ8Qgcw==/split_config.xhdpi.apk!/lib/armeabi-v7a
02-28 06:32:56.458 11932 11932 V SoLoader: libjscexecutor.so not found on /data/app/com.blessme.blessme-bhwoRSyMPUbNHmHEQ8Qgcw==/split_config.fr.apk!/lib/armeabi-v7a
02-28 06:32:56.458 11932 11932 V SoLoader: libjscexecutor.so not found on /data/app/com.blessme.blessme-bhwoRSyMPUbNHmHEQ8Qgcw==/split_config.armeabi_v7a.apk!/lib/armeabi-v7a
02-28 06:32:56.458 11932 11932 V SoLoader: libjscexecutor.so not found on /vendor/lib
02-28 06:32:56.458 11932 11975 V SoLoader: libreactnativejni.so not found on /data/app/com.blessme.blessme-bhwoRSyMPUbNHmHEQ8Qgcw==/lib/arm
02-28 06:32:56.458 11932 11975 V SoLoader: libreactnativejni.so not found on /data/app/com.blessme.blessme-bhwoRSyMPUbNHmHEQ8Qgcw==/base.apk!/lib/armeabi-v7a
02-28 06:32:56.458 11932 11975 V SoLoader: libreactnativejni.so not found on /data/app/com.blessme.blessme-bhwoRSyMPUbNHmHEQ8Qgcw==/split_config.armeabi_v7a.apk!/lib/armeabi-v7a
02-28 06:32:56.458 11932 11975 V SoLoader: libreactnativejni.so not found on /data/app/com.blessme.blessme-bhwoRSyMPUbNHmHEQ8Qgcw==/split_config.fr.apk!/lib/armeabi-v7a
02-28 06:32:56.459 11932 11975 V SoLoader: libreactnativejni.so not found on /data/app/com.blessme.blessme-bhwoRSyMPUbNHmHEQ8Qgcw==/split_config.xhdpi.apk!/lib/armeabi-v7a
02-28 06:32:56.459 11932 11975 V SoLoader: libreactnativejni.so not found on /data/app/com.blessme.blessme-bhwoRSyMPUbNHmHEQ8Qgcw==/split_config.xhdpi.apk!/lib/armeabi-v7a
02-28 06:32:56.459 11932 11932 V SoLoader: libjscexecutor.so not found on /system/lib
02-28 06:32:56.459 11932 11975 V SoLoader: libreactnativejni.so not found on /data/app/com.blessme.blessme-bhwoRSyMPUbNHmHEQ8Qgcw==/split_config.fr.apk!/lib/armeabi-v7a
02-28 06:32:56.460 692 786 D AAL : 02-28 06:32:56.378 BL= 840,ESS= 256, 02-28 06:32:56.394 BL= 839,ESS= 256, 02-28 06:32:56.427 BL= 838,ESS= 256, 02-28 06:32:56.444 BL= 837,ESS= 256, 02-28 06:32:56.460 BL= 836,ESS= 256,
02-28 06:32:56.461 11932 11932 E SoLoader: couldn't find DSO to load: libjscexecutor.so
02-28 06:32:56.461 11932 11932 E SoLoader: SoSource 0: com.facebook.soloader.DirectorySoSource[root = /data/app/com.blessme.blessme-bhwoRSyMPUbNHmHEQ8Qgcw==/lib/arm flags = 0]
02-28 06:32:56.461 11932 11932 E SoLoader: SoSource 1: com.facebook.soloader.DirectApkSoSource[root = (/data/app/com.blessme.blessme-bhwoRSyMPUbNHmHEQ8Qgcw==/base.apk!/lib/armeabi-v7a, /data/app/com.blessme.blessme-bhwoRSyMPUbNHmHEQ8Qgcw==/split_config.armeabi_v7a.apk!/lib/armeabi-v7a, /data/app/com.blessme.blessme-bhwoRSyMPUbNHmHEQ8Qgcw==/split_config.fr.apk!/lib/armeabi-v7a, /data/app/com.blessme.blessme-bhwoRSyMPUbNHmHEQ8Qgcw==/split_config.xhdpi.apk!/lib/armeabi-v7a, )]
02-28 06:32:56.461 11932 11932 E SoLoader: SoSource 2: com.facebook.soloader.DirectApkSoSource[root = (/data/app/com.blessme.blessme-bhwoRSyMPUbNHmHEQ8Qgcw==/split_config.xhdpi.apk!/lib/armeabi-v7a, )]
02-28 06:32:56.461 11932 11932 E SoLoader: SoSource 3: com.facebook.soloader.DirectApkSoSource[root = (/data/app/com.blessme.blessme-bhwoRSyMPUbNHmHEQ8Qgcw==/split_config.fr.apk!/lib/armeabi-v7a, )]
02-28 06:32:56.461 11932 11932 E SoLoader: SoSource 4: com.facebook.soloader.DirectApkSoSource[root = (/data/app/com.blessme.blessme-bhwoRSyMPUbNHmHEQ8Qgcw==/split_config.armeabi_v7a.apk!/lib/armeabi-v7a, )]
02-28 06:32:56.461 11932 11932 E SoLoader: SoSource 5: com.facebook.soloader.DirectorySoSource[root = /vendor/lib flags = 2]
02-28 06:32:56.461 11932 11932 E SoLoader: SoSource 6: com.facebook.soloader.DirectorySoSource[root = /system/lib flags = 2]
02-28 06:32:56.461 11932 11932 E SoLoader: Native lib dir: /data/app/com.blessme.blessme-bhwoRSyMPUbNHmHEQ8Qgcw==/lib/arm
02-28 06:32:56.461 11932 11932 E SoLoader: result: 0
I tried many stuff without success…any clues?.
Thanks!