Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"IUpdatesController.launchAssetFile should not be called in dev client" error when running detox tests #28918

Open
Stewartarmbrecht opened this issue May 16, 2024 · 7 comments
Assignees
Labels
Development Builds needs review Issue is ready to be reviewed by a maintainer

Comments

@Stewartarmbrecht
Copy link

Summary

I get the following error when running detox tests on a debug instance of my app on Android hosted in Genymotion. I have not tried this on any other Android emulator or device as I do not have one.

/home/node/Android/Sdk/platform-tools/adb -s localhost:44767 shell am instrument -w -r -e detoxServer ws://localhost:46141 -e detoxSessionId 1e1ed5b0-9dd5-d1d3-4f28-fda757c8fbd5 -e detoxURLOverride 'exp+my-app://expo-development-client/?url=https%3A%2F%2Fu.expo.dev%2F%3Fchannel-name%3Dtest_debug%26disableOnboarding%3D1' -e debug false com.stewartarmbrecht.myapp.dev.test/androidx.test.runner.AndroidJUnitRunner exited with code #0
11:31:58.143 detox[26193] i device An error occurred while waiting for the app to become ready. Waiting for disconnection...
  error: Failed to run application on the device
  
  HINT: Most likely, your main activity has crashed prematurely.
  
  Native stacktrace dump:
  java.lang.Exception: IUpdatesController.launchAssetFile should not be called in dev client
        at expo.modules.updates.UpdatesDevLauncherController.getLaunchAssetFile(UpdatesDevLauncherController.kt:79)
        at expo.modules.updates.UpdatesPackage$createApplicationLifecycleListeners$handler$1.onCreate(UpdatesPackage.kt:103)
        at expo.modules.ApplicationLifecycleDispatcher.onApplicationCreate(ApplicationLifecycleDispatcher.kt:20)
        at com.stewartarmbrecht.myapp.dev.MainApplication.onCreate(MainApplication.kt:55)
        at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1192)
        at androidx.test.runner.MonitoringInstrumentation.callApplicationOnCreate(MonitoringInstrumentation.java:483)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6715)
        at android.app.ActivityThread.access$1300(ActivityThread.java:237)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1913)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7660)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
  
11:31:58.143 detox[26193] i device The app disconnected.

Managed or bare workflow?

bare

What platform(s) does this occur on?

Android

Package versions

"dependencies": {
"@aws-amplify/react-native": "1.1.0",
"@aws-amplify/ui-react-native": "^2.2.0",
"@expo/config": "~9.0.1",
"@expo/server": "^0.4.2",
"@expo/vector-icons": "^14.0.2",
"@react-native-async-storage/async-storage": "1.23.1",
"@react-native-community/netinfo": "11.3.1",
"@react-navigation/drawer": "^6.6.15",
"@react-navigation/material-top-tabs": "^6.6.13",
"@react-navigation/native": "^6.1.17",
"@reduxjs/toolkit": "2.2.4",
"@tamagui/babel-plugin": "^1.98.0",
"@tamagui/build": "^1.98.0",
"@tamagui/config": "^1.98.0",
"@tamagui/lucide-icons": "^1.98.0",
"@tamagui/metro-plugin": "^1.98.0w",
"aws-amplify": "^6.3.0",
"babel-preset-expo": "^11.0.6",
"core-js": "^3.37.1",
"dotenv": "^16.4.5",
"expo": "~51.0.6",
"expo-application": "~5.9.1",
"expo-constants": "~16.0.1",
"expo-dev-client": "~4.0.13",
"expo-font": "~12.0.5",
"expo-image": "~1.12.9",
"expo-linking": "~6.3.1",
"expo-router": "~3.5.14",
"expo-screen-orientation": "~7.0.5",
"expo-splash-screen": "~0.27.4",
"expo-status-bar": "~1.12.1",
"expo-system-ui": "~3.0.4",
"expo-updates": "~0.25.12",
"moment": "^2.30.1",
"react": "18.2.0",
"react-devtools": "^5.2.0",
"react-dom": "18.2.0",
"react-native": "0.74.1",
"react-native-gesture-handler": "~2.16.2",
"react-native-get-random-values": "~1.11.0",
"react-native-reanimated": "~3.10.1",
"react-native-safe-area-context": "4.10.1",
"react-native-screens": "3.31.1",
"react-native-sqlite-storage": "^6.0.1",
"react-native-svg": "15.2.0",
"react-native-svg-transformer": "^1.4.0",
"react-native-url-polyfill": "^2.0.0",
"react-native-web": "~0.19.11",
"react-redux": "^9.1.2",
"tamagui": "^1.98.0",
"tslib": "^2.6.2"
},
"devDependencies": {
"@babel/core": "^7.24.5",
"@config-plugins/detox": "^8.0.0",
"@expo/metro-config": "~0.18.3",
"@expo/metro-runtime": "~3.2.1",
"@nx/detox": "19.0.3",
"@nx/eslint": "19.0.3",
"@nx/eslint-plugin": "19.0.3",
"@nx/expo": "19.0.3",
"@nx/jest": "19.0.3",
"@nx/js": "19.0.3",
"@nx/workspace": "19.0.3",
"@swc-node/register": "1.9.1",
"@swc/core": "^1.5.7",
"@testing-library/jest-dom": "^6.4.5",
"@testing-library/jest-native": "~5.4.3",
"@testing-library/react-native": "12.4.3",
"@types/jest": "^29.5.12",
"@types/node": "^20.12.12",
"@types/react": "~18.2.79",
"@typescript-eslint/eslint-plugin": "7.8.0",
"@typescript-eslint/parser": "7.8.0",
"babel-jest": "^29.7.0",
"cypress": "^13.9.0",
"detox": "^20.21.0",
"eslint": "^8.56.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-cypress": "^3.2.0",
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-jsx-a11y": "^6.8.0",
"eslint-plugin-react": "^7.34.1",
"eslint-plugin-react-hooks": "^4.6.2",
"jest": "^29.7.0",
"jest-circus": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"jest-expo": "~51.0.1",
"nx": "19.0.3",
"prettier": "^3.2.5",
"react-test-renderer": "18.2.0",
"renamer": "^5.0.0",
"replace-in-file": "^7.1.0",
"shelljs": "^0.8.5",
"ts-jest": "^29.1.2",
"ts-node": "^10.9.2",
"typescript": "~5.3.3"
},

Environment

expo-env-info 1.2.0 environment info:
System:
OS: Linux 5.15 Debian GNU/Linux 11 (bullseye) 11 (bullseye)
Shell: 5.1.4 - /bin/bash
Binaries:
Node: 20.12.2 - /usr/local/bin/node
Yarn: 1.22.19 - /usr/local/bin/yarn
npm: 10.6.0 - /usr/local/share/npm-global/bin/npm
Watchman: 4.9.0 - /usr/bin/watchman
SDKs:
Android SDK:
API Levels: 34
Build Tools: 33.0.1, 34.0.0
Android NDK: 22.1.7171670
npmGlobalPackages:
eas-cli: 7.8.5
Expo Workflow: bare

Reproducible demo

https://github.com/Stewartarmbrecht/my-solution

Pre-requisits
1. Docker Desktop
2. VS Code
3. Dev Containers Extension in VS Code
4. Genymotion Account
Steps to Recreate

	git clone https://github.com/Stewartarmbrecht/my-solution.git
	cd my-solution
	code .
	# Edit devcontainer.json to use your Machines IP address in the appPort section.
	Cntrl+shift+p; Dev Containers: Reopen in Container;
	npm install
	# If tasks are not showing you may need to reload the vs code window so that the nx extension takes effect.
	cntrl+shift+p; Tasks: Run Task; build-dev-detox;
	# Create token in Genymotion:  https://cloud.geny.io/api and copy it to your clipboard.
	cntrl+shift+p; Tasks: Run Task; login-geny;
	cntrl+shift+p; Tasks: Run Task; test-e2e-mobile-debug;

Stacktrace (if a crash is involved)

I don't have stack trace but here is the detox log output. I terminated the run after the error occurred.

--------- beginning of main
05-16 11:31:58.695  2692  2692 I Zygote  : seccomp disabled by setenforce 0
05-16 11:31:58.696  2692  2692 I recht.myapp.de: Late-enabling -Xcheck:jni
05-16 11:31:58.703  2692  2692 I recht.myapp.de: Unquickening 12 vdex files!
05-16 11:31:58.703  2692  2692 W recht.myapp.de: Unexpected CPU variant for X86 using defaults: x86_64
--------- beginning of system
05-16 11:31:58.721  2692  2692 W ActivityThread: Package uses different ABI(s) than its instrumentation: package[com.stewartarmbrecht.myapp.dev]: x86_64, null instrumentation[com.stewartarmbrecht.myapp.dev.test]: null, null
05-16 11:31:58.724  2692  2692 I recht.myapp.de: The ClassLoaderContext is a special shared library.
05-16 11:31:58.725  2692  2692 I chatty  : uid=10129(com.stewartarmbrecht.myapp.dev) identical 1 line
05-16 11:31:58.725  2692  2692 I recht.myapp.de: The ClassLoaderContext is a special shared library.
05-16 11:31:59.083  2692  2692 D ApplicationLoaders: Returning zygote-cached class loader: /system/framework/android.test.base.jar
05-16 11:31:59.084  2692  2692 D ApplicationLoaders: Returning zygote-cached class loader: /system/framework/android.test.base.jar
05-16 11:31:59.084  2692  2692 I recht.myapp.de: The ClassLoaderContext is a special shared library.
05-16 11:31:59.086  2692  2692 D ApplicationLoaders: Returning zygote-cached class loader: /system/framework/android.test.base.jar
05-16 11:31:59.086  2692  2692 D ApplicationLoaders: Returning zygote-cached class loader: /system/framework/android.test.base.jar
05-16 11:31:59.087  2692  2692 I recht.myapp.de: The ClassLoaderContext is a special shared library.
05-16 11:31:59.088  2692  2692 I chatty  : uid=10129(com.stewartarmbrecht.myapp.dev) identical 2 lines
05-16 11:31:59.088  2692  2692 I recht.myapp.de: The ClassLoaderContext is a special shared library.
05-16 11:31:59.451  2692  2692 W recht.myapp.de: Accessing hidden method Landroid/app/Instrumentation;->execStartActivity(Landroid/content/Context;Landroid/os/IBinder;Landroid/os/IBinder;Landroid/app/Activity;Landroid/content/Intent;ILandroid/os/Bundle;)Landroid/app/Instrumentation$ActivityResult; (greylist, linking, allowed)
05-16 11:31:59.451  2692  2692 W recht.myapp.de: Accessing hidden method Landroid/app/Instrumentation;->execStartActivity(Landroid/content/Context;Landroid/os/IBinder;Landroid/os/IBinder;Ljava/lang/String;Landroid/content/Intent;ILandroid/os/Bundle;)Landroid/app/Instrumentation$ActivityResult; (greylist, linking, allowed)
05-16 11:31:59.456  2692  2692 D NetworkSecurityConfig: Using Network Security Config from resource network_security_config debugBuild: true
05-16 11:31:59.457  2692  2692 D NetworkSecurityConfig: Using Network Security Config from resource network_security_config debugBuild: true
05-16 11:31:59.458  2692  2692 I MonitoringInstr: newApplication called!
05-16 11:31:59.547  2692  2692 I MonitoringInstr: Instrumentation started!
05-16 11:31:59.553  2692  2692 I AndroidJUnitRunner: onCreate Bundle[{detoxURLOverride=exp+my-app://expo-development-client/?url=https%3A%2F%2Fu.expo.dev%2F%3Fchannel-name%3Dtest_debug%26disableOnboarding%3D1, debug=false, detoxServer=ws://localhost:46141, detoxSessionId=1e1ed5b0-9dd5-d1d3-4f28-fda757c8fbd5}]
05-16 11:31:59.554  2692  2692 V TestEventClient: No service name argument was given (testDiscoveryService, testRunEventService or orchestratorService)
05-16 11:31:59.555  2692  2722 D AndroidJUnitRunner: onStart is called.
05-16 11:31:59.558  2692  2692 W SoLoader: Initializing SoLoader: 0
05-16 11:31:59.559  2692  2692 W SoLoader: Recording new base apk path: /data/app/~~C_XbuALLdUB6jxbz2b-fWw==/com.stewartarmbrecht.myapp.dev-UQ_VLPUGyw1Czdm-0XeKBw==/base.apk
05-16 11:31:59.559  2692  2692 W SoLoader: Previously recorded 0 base apk paths.
05-16 11:31:59.588  2692  2692 W SoLoader: SoLoader initialized: 8
05-16 11:31:59.593  2692  2692 I Tracing : Tracer added: class androidx.test.platform.tracing.AndroidXTracer
05-16 11:31:59.639  2692  2692 W AndroidJUnitRunner: An unhandled exception was thrown by the app.
05-16 11:31:59.639  2692  2692 W AndroidJUnitRunner: java.lang.Exception: IUpdatesController.launchAssetFile should not be called in dev client
05-16 11:31:59.639  2692  2692 W AndroidJUnitRunner: 	at expo.modules.updates.UpdatesDevLauncherController.getLaunchAssetFile(UpdatesDevLauncherController.kt:79)
05-16 11:31:59.639  2692  2692 W AndroidJUnitRunner: 	at expo.modules.updates.UpdatesPackage$createApplicationLifecycleListeners$handler$1.onCreate(UpdatesPackage.kt:103)
05-16 11:31:59.639  2692  2692 W AndroidJUnitRunner: 	at expo.modules.ApplicationLifecycleDispatcher.onApplicationCreate(ApplicationLifecycleDispatcher.kt:20)
05-16 11:31:59.639  2692  2692 W AndroidJUnitRunner: 	at com.stewartarmbrecht.myapp.dev.MainApplication.onCreate(MainApplication.kt:55)
05-16 11:31:59.639  2692  2692 W AndroidJUnitRunner: 	at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1192)
05-16 11:31:59.639  2692  2692 W AndroidJUnitRunner: 	at androidx.test.runner.MonitoringInstrumentation.callApplicationOnCreate(MonitoringInstrumentation.java:483)
05-16 11:31:59.639  2692  2692 W AndroidJUnitRunner: 	at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6715)
05-16 11:31:59.639  2692  2692 W AndroidJUnitRunner: 	at android.app.ActivityThread.access$1300(ActivityThread.java:237)
05-16 11:31:59.639  2692  2692 W AndroidJUnitRunner: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1913)
05-16 11:31:59.639  2692  2692 W AndroidJUnitRunner: 	at android.os.Handler.dispatchMessage(Handler.java:106)
05-16 11:31:59.639  2692  2692 W AndroidJUnitRunner: 	at android.os.Looper.loop(Looper.java:223)
05-16 11:31:59.639  2692  2692 W AndroidJUnitRunner: 	at android.app.ActivityThread.main(ActivityThread.java:7660)
05-16 11:31:59.639  2692  2692 W AndroidJUnitRunner: 	at java.lang.reflect.Method.invoke(Native Method)
05-16 11:31:59.639  2692  2692 W AndroidJUnitRunner: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
05-16 11:31:59.639  2692  2692 W AndroidJUnitRunner: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
05-16 11:31:59.641  2692  2692 D AndroidJUnitRunner: Reporting the crash to an event service.
05-16 11:31:59.641  2692  2692 W TestEventClient: Process crashed before connection to orchestrator
05-16 11:31:59.641  2692  2692 I AndroidJUnitRunner: Bringing down the entire Instrumentation process.
05-16 11:31:59.642  2692  2692 E MonitoringInstr: Exception encountered by: com.stewartarmbrecht.myapp.dev.MainApplication@1e6ea77. Dumping thread state to outputs and pining for the fjords.
05-16 11:31:59.642  2692  2692 E MonitoringInstr: java.lang.Exception: IUpdatesController.launchAssetFile should not be called in dev client
05-16 11:31:59.642  2692  2692 E MonitoringInstr: 	at expo.modules.updates.UpdatesDevLauncherController.getLaunchAssetFile(UpdatesDevLauncherController.kt:79)
05-16 11:31:59.642  2692  2692 E MonitoringInstr: 	at expo.modules.updates.UpdatesPackage$createApplicationLifecycleListeners$handler$1.onCreate(UpdatesPackage.kt:103)
05-16 11:31:59.642  2692  2692 E MonitoringInstr: 	at expo.modules.ApplicationLifecycleDispatcher.onApplicationCreate(ApplicationLifecycleDispatcher.kt:20)
05-16 11:31:59.642  2692  2692 E MonitoringInstr: 	at com.stewartarmbrecht.myapp.dev.MainApplication.onCreate(MainApplication.kt:55)
05-16 11:31:59.642  2692  2692 E MonitoringInstr: 	at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1192)
05-16 11:31:59.642  2692  2692 E MonitoringInstr: 	at androidx.test.runner.MonitoringInstrumentation.callApplicationOnCreate(MonitoringInstrumentation.java:483)
05-16 11:31:59.642  2692  2692 E MonitoringInstr: 	at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6715)
05-16 11:31:59.642  2692  2692 E MonitoringInstr: 	at android.app.ActivityThread.access$1300(ActivityThread.java:237)
05-16 11:31:59.642  2692  2692 E MonitoringInstr: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1913)
05-16 11:31:59.642  2692  2692 E MonitoringInstr: 	at android.os.Handler.dispatchMessage(Handler.java:106)
05-16 11:31:59.642  2692  2692 E MonitoringInstr: 	at android.os.Looper.loop(Looper.java:223)
05-16 11:31:59.642  2692  2692 E MonitoringInstr: 	at android.app.ActivityThread.main(ActivityThread.java:7660)
05-16 11:31:59.642  2692  2692 E MonitoringInstr: 	at java.lang.reflect.Method.invoke(Native Method)
05-16 11:31:59.642  2692  2692 E MonitoringInstr: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
05-16 11:31:59.642  2692  2692 E MonitoringInstr: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:   Thread[Instr: androidx.test.runner.AndroidJUnitRunner,5,main]
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     java.lang.Object.wait(Native Method)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     java.lang.Object.wait(Object.java:442)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     java.lang.Object.wait(Object.java:568)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     android.app.Instrumentation$SyncRunnable.waitForComplete(Instrumentation.java:2234)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     android.app.Instrumentation.runOnMainSync(Instrumentation.java:440)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     androidx.test.runner.MonitoringInstrumentation.runOnMainSync(MonitoringInstrumentation.java:498)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     androidx.test.runner.MonitoringInstrumentation.tryLoadingJsBridge(MonitoringInstrumentation.java:900)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     androidx.test.runner.MonitoringInstrumentation.onStart(MonitoringInstrumentation.java:366)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:417)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:2205)
05-16 11:31:59.644  2692  2692 E THREAD_STATE: 
05-16 11:31:59.644  2692  2692 E THREAD_STATE:   Thread[FinalizerWatchdogDaemon,5,system]
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     java.lang.Object.wait(Native Method)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     java.lang.Object.wait(Object.java:442)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     java.lang.Object.wait(Object.java:568)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     java.lang.Daemons$FinalizerWatchdogDaemon.sleepUntilNeeded(Daemons.java:341)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     java.lang.Daemons$FinalizerWatchdogDaemon.runInternal(Daemons.java:321)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     java.lang.Daemons$Daemon.run(Daemons.java:139)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     java.lang.Thread.run(Thread.java:923)
05-16 11:31:59.644  2692  2692 E THREAD_STATE: 
05-16 11:31:59.644  2692  2692 E THREAD_STATE:   Thread[Jit thread pool worker thread 0,5,system]
05-16 11:31:59.644  2692  2692 E THREAD_STATE: 
05-16 11:31:59.644  2692  2692 E THREAD_STATE:   Thread[ReferenceQueueDaemon,5,system]
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     java.lang.Object.wait(Native Method)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     java.lang.Object.wait(Object.java:442)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     java.lang.Object.wait(Object.java:568)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     java.lang.Daemons$ReferenceQueueDaemon.runInternal(Daemons.java:217)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     java.lang.Daemons$Daemon.run(Daemons.java:139)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     java.lang.Thread.run(Thread.java:923)
05-16 11:31:59.644  2692  2692 E THREAD_STATE: 
05-16 11:31:59.644  2692  2692 E THREAD_STATE:   Thread[Signal Catcher,10,system]
05-16 11:31:59.644  2692  2692 E THREAD_STATE: 
05-16 11:31:59.644  2692  2692 E THREAD_STATE:   Thread[FinalizerDaemon,5,system]
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     java.lang.Object.wait(Native Method)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     java.lang.Object.wait(Object.java:442)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:190)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:211)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:273)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     java.lang.Daemons$Daemon.run(Daemons.java:139)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     java.lang.Thread.run(Thread.java:923)
05-16 11:31:59.644  2692  2692 E THREAD_STATE: 
05-16 11:31:59.644  2692  2692 E THREAD_STATE:   Thread[Binder:2692_2,5,main]
05-16 11:31:59.644  2692  2692 E THREAD_STATE: 
05-16 11:31:59.644  2692  2692 E THREAD_STATE:   Thread[HeapTaskDaemon,5,system]
05-16 11:31:59.644  2692  2692 E THREAD_STATE: 
05-16 11:31:59.644  2692  2692 E THREAD_STATE:   Thread[main,5,main]
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     dalvik.system.VMStack.getThreadStackTrace(Native Method)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     java.lang.Thread.getStackTrace(Thread.java:1736)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     java.lang.Thread.getAllStackTraces(Thread.java:1812)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     androidx.test.runner.MonitoringInstrumentation.getThreadState(MonitoringInstrumentation.java:748)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     androidx.test.runner.MonitoringInstrumentation.dumpThreadStateToOutputs(MonitoringInstrumentation.java:743)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     androidx.test.runner.MonitoringInstrumentation.onException(MonitoringInstrumentation.java:737)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     androidx.test.runner.AndroidJUnitRunner.onException(AndroidJUnitRunner.java:626)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     android.app.ActivityThread.handleBindApplication(ActivityThread.java:6717)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     android.app.ActivityThread.access$1300(ActivityThread.java:237)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     android.app.ActivityThread$H.handleMessage(ActivityThread.java:1913)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     android.os.Handler.dispatchMessage(Handler.java:106)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     android.os.Looper.loop(Looper.java:223)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     android.app.ActivityThread.main(ActivityThread.java:7660)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     java.lang.reflect.Method.invoke(Native Method)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
05-16 11:31:59.644  2692  2692 E THREAD_STATE: 
05-16 11:31:59.644  2692  2692 E THREAD_STATE:   Thread[queued-work-looper,5,main]
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     android.os.MessageQueue.nativePollOnce(Native Method)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     android.os.MessageQueue.next(MessageQueue.java:335)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     android.os.Looper.loop(Looper.java:183)
05-16 11:31:59.644  2692  2692 E THREAD_STATE:     android.os.HandlerThread.run(HandlerThread.java:67)
05-16 11:31:59.644  2692  2692 E THREAD_STATE: 
05-16 11:31:59.644  2692  2692 E THREAD_STATE:   Thread[Profile Saver,5,system]
05-16 11:31:59.644  2692  2692 E THREAD_STATE: 
05-16 11:31:59.644  2692  2692 E THREAD_STATE:   Thread[Binder:2692_1,5,main]
05-16 11:31:59.644  2692  2692 E THREAD_STATE: 
05-16 11:31:59.644  2692  2692 E THREAD_STATE:   Thread[Binder:2692_3,5,main]
05-16 11:31:59.644  2692  2692 E THREAD_STATE: 
05-16 11:31:59.644  2692  2692 E MonitoringInstr: Dying now...
05-16 11:31:59.644  2692  2692 D AndroidRuntime: Shutting down VM
--------- beginning of crash
05-16 11:31:59.645  2692  2692 E AndroidRuntime: FATAL EXCEPTION: main
05-16 11:31:59.645  2692  2692 E AndroidRuntime: Process: com.stewartarmbrecht.myapp.dev, PID: 2692
05-16 11:31:59.645  2692  2692 E AndroidRuntime: java.lang.RuntimeException: Unable to create application com.stewartarmbrecht.myapp.dev.MainApplication: java.lang.Exception: IUpdatesController.launchAssetFile should not be called in dev client
05-16 11:31:59.645  2692  2692 E AndroidRuntime: 	at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6720)
05-16 11:31:59.645  2692  2692 E AndroidRuntime: 	at android.app.ActivityThread.access$1300(ActivityThread.java:237)
05-16 11:31:59.645  2692  2692 E AndroidRuntime: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1913)
05-16 11:31:59.645  2692  2692 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:106)
05-16 11:31:59.645  2692  2692 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:223)
05-16 11:31:59.645  2692  2692 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:7660)
05-16 11:31:59.645  2692  2692 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
05-16 11:31:59.645  2692  2692 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
05-16 11:31:59.645  2692  2692 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
05-16 11:31:59.645  2692  2692 E AndroidRuntime: Caused by: java.lang.Exception: IUpdatesController.launchAssetFile should not be called in dev client
05-16 11:31:59.645  2692  2692 E AndroidRuntime: 	at expo.modules.updates.UpdatesDevLauncherController.getLaunchAssetFile(UpdatesDevLauncherController.kt:79)
05-16 11:31:59.645  2692  2692 E AndroidRuntime: 	at expo.modules.updates.UpdatesPackage$createApplicationLifecycleListeners$handler$1.onCreate(UpdatesPackage.kt:103)
05-16 11:31:59.645  2692  2692 E AndroidRuntime: 	at expo.modules.ApplicationLifecycleDispatcher.onApplicationCreate(ApplicationLifecycleDispatcher.kt:20)
05-16 11:31:59.645  2692  2692 E AndroidRuntime: 	at com.stewartarmbrecht.myapp.dev.MainApplication.onCreate(MainApplication.kt:55)
05-16 11:31:59.645  2692  2692 E AndroidRuntime: 	at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1192)
05-16 11:31:59.645  2692  2692 E AndroidRuntime: 	at androidx.test.runner.MonitoringInstrumentation.callApplicationOnCreate(MonitoringInstrumentation.java:483)
05-16 11:31:59.645  2692  2692 E AndroidRuntime: 	at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6715)
05-16 11:31:59.645  2692  2692 E AndroidRuntime: 	... 8 more
05-16 11:31:59.646  2692  2692 D MonitoringInstr: Handling an uncaught exception thrown on the thread main.
05-16 11:31:59.646  2692  2692 D MonitoringInstr: java.lang.RuntimeException: Unable to create application com.stewartarmbrecht.myapp.dev.MainApplication: java.lang.Exception: IUpdatesController.launchAssetFile should not be called in dev client
05-16 11:31:59.646  2692  2692 D MonitoringInstr: 	at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6720)
05-16 11:31:59.646  2692  2692 D MonitoringInstr: 	at android.app.ActivityThread.access$1300(ActivityThread.java:237)
05-16 11:31:59.646  2692  2692 D MonitoringInstr: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1913)
05-16 11:31:59.646  2692  2692 D MonitoringInstr: 	at android.os.Handler.dispatchMessage(Handler.java:106)
05-16 11:31:59.646  2692  2692 D MonitoringInstr: 	at android.os.Looper.loop(Looper.java:223)
05-16 11:31:59.646  2692  2692 D MonitoringInstr: 	at android.app.ActivityThread.main(ActivityThread.java:7660)
05-16 11:31:59.646  2692  2692 D MonitoringInstr: 	at java.lang.reflect.Method.invoke(Native Method)
05-16 11:31:59.646  2692  2692 D MonitoringInstr: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
05-16 11:31:59.646  2692  2692 D MonitoringInstr: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
05-16 11:31:59.646  2692  2692 D MonitoringInstr: Caused by: java.lang.Exception: IUpdatesController.launchAssetFile should not be called in dev client
05-16 11:31:59.646  2692  2692 D MonitoringInstr: 	at expo.modules.updates.UpdatesDevLauncherController.getLaunchAssetFile(UpdatesDevLauncherController.kt:79)
05-16 11:31:59.646  2692  2692 D MonitoringInstr: 	at expo.modules.updates.UpdatesPackage$createApplicationLifecycleListeners$handler$1.onCreate(UpdatesPackage.kt:103)
05-16 11:31:59.646  2692  2692 D MonitoringInstr: 	at expo.modules.ApplicationLifecycleDispatcher.onApplicationCreate(ApplicationLifecycleDispatcher.kt:20)
05-16 11:31:59.646  2692  2692 D MonitoringInstr: 	at com.stewartarmbrecht.myapp.dev.MainApplication.onCreate(MainApplication.kt:55)
05-16 11:31:59.646  2692  2692 D MonitoringInstr: 	at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1192)
05-16 11:31:59.646  2692  2692 D MonitoringInstr: 	at androidx.test.runner.MonitoringInstrumentation.callApplicationOnCreate(MonitoringInstrumentation.java:483)
05-16 11:31:59.646  2692  2692 D MonitoringInstr: 	at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6715)
05-16 11:31:59.646  2692  2692 D MonitoringInstr: 	... 8 more
05-16 11:31:59.646  2692  2692 D AndroidJUnitRunner: We've already handled this exception java.lang.Exception. Ignoring.
05-16 11:31:59.646  2692  2692 W MonitoringInstr: Invoking default uncaught exception handler com.android.internal.os.RuntimeInit$KillApplicationHandler@a74d726 (a class com.android.internal.os.RuntimeInit$KillApplicationHandler)
05-16 11:31:59.647  2692  2692 I Process : Sending signal. PID: 2692 SIG: 9

@expo-bot expo-bot added needs review Issue is ready to be reviewed by a maintainer and removed needs validation Issue needs to be validated labels May 16, 2024
@wouterdebruijn
Copy link

Running into this same error running detox tests on Expo 31

@Stewartarmbrecht
Copy link
Author

@douglowder I tried running the detox tests using an attached android device (instead of genymotion) and I got the same error. I am able to install and run the app on the android device using all of the adb commands that detox uses. For example all of these commands work:

adb -s G3MX81285D3081000918 shell "getprop ro.build.version.sdk"
/home/node/Android/Sdk/build-tools/34.0.0/aapt dump badging "/workspaces/my-solution/apps/my-app/android/app/build/outputs/apk/debug/app-debug.apk"
/home/node/Android/Sdk/platform-tools/adb -s G3MX81285D3081000918 shell "pm list packages com.stewartarmbrecht.myapp.dev"
/home/node/Android/Sdk/platform-tools/adb -s G3MX81285D3081000918 shell "pm list packages com.stewartarmbrecht.myapp.dev.test"
/home/node/Android/Sdk/platform-tools/adb -s G3MX81285D3081000918 shell "am force-stop com.stewartarmbrecht.myapp.dev"
/home/node/Android/Sdk/build-tools/34.0.0/aapt dump xmlstrings "/workspaces/my-solution/apps/my-app/android/app/build/outputs/apk/debug/app-debug.apk" AndroidManifest.xml
/home/node/Android/Sdk/build-tools/34.0.0/aapt dump xmlstrings "/workspaces/my-solution/apps/my-app/android/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk" AndroidManifest.xml
/home/node/Android/Sdk/platform-tools/adb -s G3MX81285D3081000918 shell "getprop ro.build.version.sdk"
/home/node/Android/Sdk/platform-tools/adb -s G3MX81285D3081000918 install -r -g -t /workspaces/my-solution/apps/my-app/android/app/build/outputs/apk/debug/app-debug.apk
/home/node/Android/Sdk/platform-tools/adb -s G3MX81285D3081000918 install -r -g -t /workspaces/my-solution/apps/my-app/android/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk
/home/node/Android/Sdk/platform-tools/adb -s G3MX81285D3081000918 reverse tcp:19002 tcp:19002
/home/node/Android/Sdk/platform-tools/adb -s G3MX81285D3081000918 shell "am force-stop com.stewartarmbrecht.myapp.dev"

I think the problem is in how I am launching the app:

const appConfig = require('../../../my-app/app.config');
const { resolveConfig } = require('detox/internals');
const { device } = require('detox');

const platform = device.getPlatform();

module.exports.openApp = async function openApp() {
  console.log('Opening app...', platform);
  const config = await resolveConfig();
  console.log('Configuration:', config.configurationName);
  if (config.configurationName.split('.')[2] === 'debug') {
    console.log('Opening app for debug build...');
    return await openAppForDebugBuild(platform);
  } else {
    return await device.launchApp({
      newInstance: true,
    });
  }
};

async function openAppForDebugBuild(platform) {
  console.log('EXPO_USE_UPDATES:', process.env.EXPO_USE_UPDATES);
  const deepLinkUrl = process.env.EXPO_USE_UPDATES
    ? // Testing latest published EAS update for the test_debug channel
      getDeepLinkUrl(getLatestUpdateUrl())
    : // Local testing with packager
      getDeepLinkUrl(getDevLauncherPackagerUrl(platform));

  if (platform === 'ios') {
    await device.launchApp({
      newInstance: true,
    });
    sleep(3000);
    await device.openURL({
      url: deepLinkUrl,
    });
  } else {
    console.log('Launching app with deep link:', deepLinkUrl);
    await device.launchApp({
      newInstance: true,
      url: deepLinkUrl,      
    });
  }

  await sleep(3000);
}

const getDeepLinkUrl = url =>
  `exp+my-app://expo-development-client/?url=${encodeURIComponent(url)}`;

const getDevLauncherPackagerUrl = platform => 
  `http://localhost:19002/index.bundle?platform=${platform}&dev=true&minify=false&disableOnboarding=1`;

const getLatestUpdateUrl = () =>
  `https://u.expo.dev/${getAppId()}?channel-name=test_debug&disableOnboarding=1`;

const getAppId = () => appConfig?.extra?.eas?.projectId ?? '';

const sleep = t => new Promise(res => setTimeout(res, t));

I am getting the same error:

11:59:55.025 detox[3355] i device An error occurred while waiting for the app to become ready. Waiting for disconnection...
  error: Failed to run application on the device
  
  HINT: Most likely, your main activity has crashed prematurely.
  
  Native stacktrace dump:
  java.lang.Exception: IUpdatesController.launchAssetFile should not be called in dev client
        at expo.modules.updates.UpdatesDevLauncherController.getLaunchAssetFile(UpdatesDevLauncherController.kt:79)
        at expo.modules.updates.UpdatesPackage$createApplicationLifecycleListeners$handler$1.onCreate(UpdatesPackage.kt:103)
        at expo.modules.ApplicationLifecycleDispatcher.onApplicationCreate(ApplicationLifecycleDispatcher.kt:20)
        at com.stewartarmbrecht.myapp.dev.MainApplication.onCreate(MainApplication.kt:55)
        at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1266)
        at androidx.test.runner.MonitoringInstrumentation.callApplicationOnCreate(MonitoringInstrumentation.java:483)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6910)
        at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2219)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loopOnce(Looper.java:201)
        at android.os.Looper.loop(Looper.java:288)
        at android.app.ActivityThread.main(ActivityThread.java:8061)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:703)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:911)

@Stewartarmbrecht
Copy link
Author

I have noticed that I also get the same error if I have deliberately incorrect deep link for the dev client:

13:39:29.682 detox[1201] i child-process:SPAWN_END /home/node/Android/Sdk/platform-tools/adb -s G3MX81285D3081000918 shell am instrument -w -r -e detoxServer ws://localhost:40123 -e detoxSessionId e43cd9cd-af1b-0d76-a256-c4f85e4b6e1c -e detoxURLOverride 'exp+No-WORK://expo-development-client/?url=http%3A%2F%2Flocalhost%3A19002%3Fplatform%3Dandroid%26dev%3Dtrue%26minify%3Dfalse%26disableOnboarding%3D1' -e debug false com.stewartarmbrecht.myapp.dev.test/androidx.test.runner.AndroidJUnitRunner exited with code #0
13:39:29.683 detox[1201] i device An error occurred while waiting for the app to become ready. Waiting for disconnection...
  error: Failed to run application on the device
  
  HINT: Most likely, your main activity has crashed prematurely.
  
  Native stacktrace dump:
  java.lang.Exception: IUpdatesController.launchAssetFile should not be called in dev client
        at expo.modules.updates.UpdatesDevLauncherController.getLaunchAssetFile(UpdatesDevLauncherController.kt:79)
        at expo.modules.updates.UpdatesPackage$createApplicationLifecycleListeners$handler$1.onCreate(UpdatesPackage.kt:103)
        at expo.modules.ApplicationLifecycleDispatcher.onApplicationCreate(ApplicationLifecycleDispatcher.kt:20)
        at com.stewartarmbrecht.myapp.dev.MainApplication.onCreate(MainApplication.kt:55)
        at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1266)
        at androidx.test.runner.MonitoringInstrumentation.callApplicationOnCreate(MonitoringInstrumentation.java:483)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6910)
        at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2219)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loopOnce(Looper.java:201)
        at android.os.Looper.loop(Looper.java:288)
        at android.app.ActivityThread.main(ActivityThread.java:8061)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:703)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:911)
  
13:39:29.683 detox[1201] i device The app disconnected.
13:39:29.684 detox[1201] i child-process:EXEC_CMD "/home/node/Android/Sdk/platform-tools/adb" -s G3MX81285D3081000918 reverse --remove tcp:40123
13:39:29.687 detox[1201] i child-process:EXEC_CMD "/home/node/Android/Sdk/platform-tools/adb" -s G3MX81285D3081000918 shell "screencap /sdcard/133926383_1.png"

This was the code in the openApp.js. Notice the exp+No-WORK. Maybe I just need help understanding what I should be setting this value to.

const getDeepLinkUrl = url =>
  `exp+No-WORK://expo-development-client/?url=${encodeURIComponent(url)}`;

const getDevLauncherPackagerUrl = platform => 
  `http://localhost:19002?platform=${platform}&dev=true&minify=false&disableOnboarding=1`;

here is my app.config

const IS_PROD = process.env.APP_VARIANT === 'prod';
const IS_PREVIEW = process.env.APP_VARIANT === 'preview';

export default {
  name: IS_PROD ? 'MyApp' : (IS_PREVIEW ? 'MyApp (Preview)' : 'MyApp (Dev)'),
  slug: 'my-app',
  version: '0.0.7',
  runtimeVersion: '0.0.7',
  orientation: 'portrait',
  icon: './assets/images/icon.png',
  // Added for tamagui.
  userInterfaceStyle: 'automatic',
  splash: {
    image: './assets/images/splash.png',
    resizeMode: 'contain',
    backgroundColor: '#ffffff',
  }, 
  owner: 'stewartarmbrecht',
  scheme: IS_PROD ? 'my-app' : (IS_PREVIEW ? 'my-app-preview' : 'my-app-dev'),
  updates: {
    url: 'https://u.expo.dev/<REMOVED>',
  },
  assetBundlePatterns: ['**/*'],
  ios: {
    supportsTablet: true,
    userInterfaceStyle: 'automatic',
    bundleIdentifier: IS_PROD ? 'com.stewartarmbrecht.myapp' : 
      (IS_PREVIEW ? 'com.stewartarmbrecht.myapp.preview' : 'com.stewartarmbrecht.myapp.dev'),
  },
  android: {
    userInterfaceStyle: 'automatic',
    adaptiveIcon: {
      foregroundImage: './assets/images/adaptive-icon.png',
      backgroundColor: '#FFFFFF',
    },
    package: IS_PROD ? 'com.stewartarmbrecht.myapp' : 
      (IS_PREVIEW ? 'com.stewartarmbrecht.myapp.preview' : 'com.stewartarmbrecht.myapp.dev'),
  },
  web: {
    favicon: './assets/images/favicon.png',
    bundler: 'metro',
  },
  plugins: [
    'expo-router',
    // Added as part of tamagui.
    'expo-font',
    [
      "expo-screen-orientation",
      {
        "initialOrientation": "DEFAULT"
      }
    ],
    [
      '@config-plugins/detox',
      {
        skipProguard: false,
        subdomains: ['localhost', '10.24.1.57'],
      },
    ],
  ],
  experiments: {
    typedRoutes: true
  },
  extra: {
    // This is the project ID from the previous step
    eas: {
      projectId: <REMOVED>,
    },
  },
};

@Stewartarmbrecht
Copy link
Author

Also, I am able to get the app to start successfully using expo run. I have tried replicating the "Expo waiting on" address in the openApp.js file but I still get the same error.

> nx run my-app:start-detox

Packager is ready at http://localhost:19002
Starting project at /workspaces/my-solution/apps/my-app
Starting Metro Bundler
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
█ ▄▄▄▄▄ █▄ ██ ▀▄██ ▀▀█▀ █▀█ ▄▄▄▄▄ █
█ █   █ ██▄ █▄ ██▀▀▄▄▄ █▀▀█ █   █ █
█ █▄▄▄█ ██▀█▀   ▄ ▀▄▄▀▄ ▀██ █▄▄▄█ █
█▄▄▄▄▄▄▄█ ▀▄█ ▀▄▀▄█ █▄█▄█▄█▄▄▄▄▄▄▄█
█  █▄▄▀▄██▄▀▀▀█  ▀ ▄▀ ▀▀▀▄█▄█▀▀██▄█
█▄  ▄██▄▀▀▄█ ▀▄ ▄▄ █▀▀▄▄▄▄ ▀▄▄█   █
█▄▀██ █▄█▀  ▀▀▀▀ ▄▀▀█ ██ █ ▄████ ██
█▀▄▄▀  ▄▄▀▄▀█▀▄█ ▄█ ▄█▄███▀▄ ▀▄ ▄▀█
█▄▄ █ █▄▀▄█ ▄▀ █▄█▀█▀▀▀ ▄▄▄ ▀ ▄█▀ █
█▄██ ▄▄▄▄▀▀ ▄▀ ▀ ▄▄▀▄▄██▄▄█ ▀▄▀ ▀ █
█▀ ▄  ▀▄█▄▄▄█▄▀  ▀▄█▀███▀▄▀█ ▀█▀ ▄█
█ ██ █▀▄▀▀  ▄▀█▄▄▄ ▀█▀▄  ███ ▀█  ▄█
█▄▄▄▄▄█▄▄ ▀  ▀█▀ ▄██▄▄▀▄█ ▄▄▄ █▀▀▄█
█ ▄▄▄▄▄ ██▀ ███▄▄▀█ ▄ ▄█▄ █▄█ ▀ █▀█
█ █   █ █  █▄ ▄▀▄█▀   █ ▄▄ ▄▄▄▀▀▄██
█ █▄▄▄█ █▀▀ ▄▄▀▄ █▄█ ▄█ ██▀▀▀▄▄ ▀ █
█▄▄▄▄▄▄▄█▄▄████▄▄█▄▄████▄▄▄████████

› Metro waiting on exp+my-app-dev://expo-development-client/?url=http%3A%2F%2Flocalhost%3A19002
› Scan the QR code above to open the project in a development build. Learn more: https://expo.fyi/start

› Web is waiting on http://localhost:19002

› Using development build
› Press s │ switch to Expo Go

› Press a │ open Android
› Press w │ open web

› Press j │ open debugger
› Press r │ reload app
› Press m │ toggle menu
› Press o │ open project code in your editor

› Press ? │ show all commands

Logs for your project will appear below. Press Ctrl+C to exit.

    ➡ [tamagui] built config and components (1104ms):

        Config     ./.tamagui/tamagui.config.cjs
        Components ./.tamagui/tamagui-components.config.cjs
        
› Opening on Android...
› Opening exp+my-app-dev://expo-development-client/?url=http%3A%2F%2Flocalhost%3A19002 on MP26
› Press ? │ show all commands
Android Bundled 16341ms index.js (4786 modules)

@Stewartarmbrecht
Copy link
Author

More detail: I am able to successfully run the detox tests in the release build: npx detox test -c android.att.release

@Stewartarmbrecht
Copy link
Author

I've been looking at the expo updates code to figure out what might be causing the execution to end here:

UpdatesDevLauncherController.kt#L79

It's called from UpdatesPackage.kt#L103

@Stewartarmbrecht
Copy link
Author

Running into this same error running detox tests on Expo 31

@wouterdebruijn Any luck on resolving your instance?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Development Builds needs review Issue is ready to be reviewed by a maintainer
Projects
None yet
Development

No branches or pull requests

4 participants