-
Notifications
You must be signed in to change notification settings - Fork 1.9k
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
docs: add Rosetta Simulator Instructions #4599
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -128,3 +128,27 @@ packagingOptions { | |||||
exclude 'META-INF/LICENSE' | ||||||
} | ||||||
``` | ||||||
|
||||||
### Running Detox in a Rosetta environment | ||||||
|
||||||
When working with dependencies that require running your iOS app in a Rosetta simulator, you may encounter issues with the `detox build` command. These issues often relate to SwiftEmitModule or SwiftCompile errors. To resolve this, follow these steps: | ||||||
|
||||||
1. Modify your build command in the Detox configuration: | ||||||
|
||||||
```json | ||||||
"build": "xcodebuild -workspace ios/MyApp.xcworkspace -scheme MyApp -configuration Debug -sdk iphonesimulator -arch x86_64 -derivedDataPath ios/build" | ||||||
``` | ||||||
|
||||||
2. Run the following command in your terminal to ensure Xcode is properly selected: | ||||||
|
||||||
```bash | ||||||
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
No need for the full path |
||||||
``` | ||||||
Comment on lines
+142
to
+146
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. IMO we can assume they already have it configured. You only need to configure There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Let's remove this step since it's not unique for Rosetta env |
||||||
|
||||||
3. Launch the iOS simulator in Rosetta mode: | ||||||
|
||||||
```bash | ||||||
arch -x86_64 /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/Contents/MacOS/Simulator | ||||||
``` | ||||||
|
||||||
After following these steps, the `detox build` command should run without errors in your Rosetta environment. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Example is not enough, please emphasize that it's done by specifying
arch=x86_64
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it will also work if you'll set that from the project's build settings
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@asafkorem Setting it via the build settings might lead to conflicts with the necessary configuration for the app. In my project, for instance, I need specific build settings due to different dependencies. My goal is to adjust the architecture specifically for running the Detox tests, without altering the overall app build. That's why I chose to modify only the Detox build command. I want to emphasize that this is about changing Detox’s behavior, not my app’s – a crucial distinction!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@differenzPriv True, I get your point. If your app can run in the Rosetta environment on Apple Silicon without Detox, then Detox is the only concern here, and your approach makes perfect sense. However, if that's not the case, it would be reasonable to add this architecture under the Debug configuration in Xcode. It might be worth mentioning this distinction in the doc IMO.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In Xcode, you can enable "Show All Simulators". Here, we select the Rosetta simulator for the normal build. In the "Excluded Architectures" tab, we select the "arm64" architecture, not "x86_64". So, in my case, I only need to change the architecture for the "detox-build-command" and not the general one.
I like your suggestion to mention this distinction for better understanding and for choosing the right solution for a specific use case. 👍🏻
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Make sense @differenzPriv.
@kagrawal98 can you add this note?