Build your Unity game for iOS from Windows
Unity on Windows can target iOS, but it stops halfway. It writes an Xcode project, and only Xcode on a Mac can turn that into an app. This guide shows how to move the project to a Mac and archive it. It also covers Unity's cloud builds, which skip the Mac entirely.
What Unity does on Windows, and what needs the Mac
Unity's iOS setup page says Xcode is only available for macOS. So if your machine does not run macOS, you can't build the app locally. Unity builds iOS in two steps. Unity writes an Xcode project, then Xcode builds the app from it.
On Windows you get the first step only. The Run in Xcode option is visible only when Unity runs on macOS. The second step does real work. Unity's docs say Xcode runs IL2CPP there, which compiles the C++ from your scripts into libGameAssembly.a.
Step 1: export the Xcode project on Windows
- Add the iOS Build Support module to your editor in Unity Hub.
- Open File, then Build Profiles, and make iOS the active platform.
- Click Build and pick an empty folder, for example Builds/iOS.
The folder holds Unity-iPhone.xcodeproj. Unity's docs describe two targets inside. Unity-iPhone is a thin launcher, and UnityFramework holds the runtime and your code. Leave the Data and Libraries folders alone, because Unity refreshes them on every build.
Step 2: copy it to the Mac
Windows has shipped tar since Windows 10 build 17063. The scp client comes with OpenSSH for Windows, an optional feature since build 1809. If scp is missing, add OpenSSH Client under Optional features. Pack the folder, copy it over Tailscale, and unpack it on the Mac:
cd Builds tar -czf ios-build.tgz iOS scp ios-build.tgz you@your-mac:~/ ssh you@your-mac "mkdir -p ~/MyGame && tar -xzf ~/ios-build.tgz -C ~/MyGame"
From Linux or WSL, rsync sends only what changed since the last copy. That helps after small changes to a large game.
rsync -az --delete Builds/iOS/ you@your-mac:~/MyGame/iOS/
Git works too, but a full export is large and changes on every build. Most teams copy the export and keep git for the Unity project.
Step 3: archive on the Mac
You can open the .xcodeproj in Xcode over the Mac's screen. Pick the Unity-iPhone scheme and Any iOS Device, then choose Product, then Archive. Or stay in the terminal over SSH. First list the targets and schemes:
cd ~/MyGame/iOS xcodebuild -list -project Unity-iPhone.xcodeproj
Then archive with the launcher scheme. CODE_SIGNING_ALLOWED=NO makes a test archive with no certificate, which proves the project compiles.
xcodebuild -project Unity-iPhone.xcodeproj -scheme Unity-iPhone \ -configuration Release -destination 'generic/platform=iOS' \ -archivePath build/Game.xcarchive archive \ CODE_SIGNING_ALLOWED=NO
To ship, drop that flag and sign with your team. Then export with -exportArchive and an ExportOptions.plist using the app-store-connect method. Our publishing guide has the full signing and upload commands.
Some games use Google's External Dependency Manager for iOS SDKs. It writes a Podfile and runs CocoaPods after the build. If your export has a Podfile, run pod install on the Mac. Then build the .xcworkspace instead of the .xcodeproj. CocoaPods is not preinstalled, so add it with brew install cocoapods.
What we tested, and what we did not
Unity cannot run in CI without a license, so we did not export a real Unity game. Instead, we tested the Mac half on a stand-in project with the same shape: a launcher app target and a framework target. On October 19, 2026, GitHub's macos-26 runner archived it with Xcode 26.6. Then a Windows runner packed it with Windows tar. A second Mac unpacked that copy and archived it again.
Xcode 26.6
Build version 17F113
Schemes:
Game-iPhone
GameFramework
** BUILD SUCCEEDED **
** ARCHIVE SUCCEEDED **
scp.exe C:\Windows\System32\OpenSSH\scp.exe
OpenSSH_for_Windows_9.5p2, LibreSSL 3.8.2
** ARCHIVE SUCCEEDED **A real game takes far longer, because the Mac compiles all the IL2CPP code. If a build stops with Permission denied on a .sh file, the copy lost its execute bit. Run chmod +x on that file and build again.
The cloud option: Unity Build Automation
Unity's docs suggest Build Automation for anyone without a Mac. It builds your game on Unity's servers. Since March 1, 2026, Unity includes 100 Mac build minutes a month. After that, a standard Mac machine costs $0.07 a build minute, per Unity's DevOps charges article.
Who should not rent a Mac for this
- A few builds a month. Unity Build Automation's free 100 Mac minutes may cover you, with no Mac at all.
- Builds on every commit. A CI service or a self-hosted macOS runner fits better than copying folders by hand.
- Daily iOS work. If you are on a Mac every day, buying one may cost less over a year.
When a rented Mac fits
Some problems need Xcode open. Signing errors, plugin link errors and crashes in the Simulator are easier to fix by hand. A MacRun day pass is a dedicated M6 Mac mini for $15, and a week is $59. Xcode 27.1 is the default and Xcode 26.6 is installed too. You connect from Windows with Tailscale and any VNC viewer.
The Mac is wiped when the pass ends. Download your .ipa and push your changes before then. For a real iPhone, send the build through TestFlight, since a remote Mac cannot see a phone on your PC. Our guide to building iOS apps on Windows compares Unity with other engines.
Frequently asked questions
Can Unity build an iOS app on Windows?
+
Only halfway. Unity on Windows writes the Xcode project. Unity's docs say Xcode is only available for macOS, so the app itself is built on a Mac or in Unity Build Automation.
How do I build a Unity Xcode project from the command line?
+
On the Mac, run xcodebuild -list to see the schemes. Then run xcodebuild archive with the Unity-iPhone scheme and a generic iOS destination. Export the archive with -exportArchive to get an .ipa.
Which Xcode version does Unity need?
+
Unity 6.6's docs recommend Xcode 16 or later and support iOS 15 and above. A MacRun Mac has Xcode 27.1 as the default and Xcode 26.6 installed too.
How much does Unity Build Automation cost for iOS?
+
Unity's DevOps charges article, effective March 1, 2026, includes 100 Mac build minutes a month. After that, a standard Mac machine costs $0.07 a build minute.
How do I copy a Unity iOS build from Windows to a Mac?
+
Pack the export folder with tar, which Windows has shipped since Windows 10 build 17063. Copy it with scp, then unpack it on the Mac. From Linux or WSL, rsync sends only what changed.
Can I test my Unity iOS build on an iPhone from a remote Mac?
+
Not over USB, because a remote Mac cannot see a phone plugged into your PC. Upload the build to TestFlight and install it on the phone from there.