Search the site
FLUTTER WITHOUT A MAC
Apple requires its own tools to compile and sign an iOS, macOS or tvOS application, and those tools run on macOS. That is the whole of the restriction, and it covers running on an iPhone as well as building for one. Everything else needs no Apple hardware: writing the app, the website, Android, the Windows or Linux desktop, Samsung TVs, the backend, the database and the admin.
On Windows or Linux: dartvel dev, and dartvel build web, web-server, android, tizen and vscode. Flutter does not cross-compile desktops, so windows builds on Windows, and linux and sony-elinux build on Linux.
The Mac is needed for dartvel build ios, macos and tvos, and for running a development build on an iPhone or the iOS simulator.
Testing on a phone without a Mac means an Android phone. See below.
Thanks to the projects these targets are built on:
by Samsung
by Sony
by SlowGen
WHAT YOU CAN DO
Write the app, hot reload, dartvel dev
Needs a Mac?: No
Pair an Android phone over the QR code
Needs a Mac?: No
Pair an iPhone or the iOS simulator
Needs a Mac?: Yes, Xcode starts the development build
dartvel build web and web-server
Needs a Mac?: No
dartvel build android, and ship to Google Play
Needs a Mac?: No
dartvel build windows or linux
Needs a Mac?: No Mac, and each on its own operating system
dartvel build tizen, sony-elinux, vscode
Needs a Mac?: No
Backend, database, auth, queues, Studio
Needs a Mac?: No
dartvel build ios, macos, tvos
Needs a Mac?: Yes, Xcode
Signing an IPA, and App Store submission
Needs a Mac?: Yes, Xcode
TEST ON A PHONE
dartvel dev prints a QR code that pairs a development build of your app, and every save hot reloads it. On Android the development build installs like any APK and needs nothing from Apple. On an iPhone it is a debug build that has to be started from Xcode or flutter run, and in CI the iOS pairing is proven on the simulator, which also needs a Mac. Expo users are used to scanning a code with Expo Go on an iPhone and no Mac. Dartvel Preview, its equivalent, runs on Android and desktops and does not run on an iPhone yet.
dartvel build android --profile development
dartvel dev
# scan the QR code from the phoneCopy code to clipboard
THREE ROUTES
A hosted macOS runner. GitHub Actions gives public repositories free macOS minutes, and Dartvel is built and verified that way: the iOS and tvOS rows in the build status table were produced on a runner, with the artifact downloaded and inspected.
A rented Mac. MacStadium, Scaleway and others rent one by the hour or the month, and Xcode runs on it exactly as it would on your desk.
dartvel build ios --cloud. The build runs on our macOS workers, the log streams to your terminal, and the build downloads into build/cloud checked against its SHA-256. Cloud is built and not open yet, it will be paid, and a signed IPA from it is not built yet.
# on a macOS runner, or a Mac you rent
dartvel build ios --format ipa
# or, when Cloud opens
dartvel build ios --cloudCopy code to clipboard
HONESTLY
Flutter builds and runs iOS apps through Xcode, and Xcode runs only on macOS, so Dartvel does not compile iOS on Linux or Windows.
Dartvel Cloud is not open. Until it is, the macOS step is a runner you configure or a Mac you rent.
An App Store submission needs an Apple Developer account (currently 99 USD a year), whoever owns the hardware.
Is Expo ahead here?
Yes. Expo Go runs a project on an iPhone with no Mac, and EAS Build makes iOS builds on its own machines today. Dartvel Preview does not run on an iPhone yet, and its Cloud is not open.
So why is this better than plain Flutter?
Plain Flutter has the same Apple restriction and none of the rest: no pairing QR code, no backend, no admin, no store submission command, no over-the-air patches, and no build command for Samsung TVs, Apple TV or Sony embedded Linux. The Mac question is the same; everything around it is not.
ALSO
FSL-1.1-MIT licensed. Built with Dartvel.
Dartvel is made by
To the bottom