xcross 1.4.2
xcross: ^1.4.2 copied to clipboard
Build, run, and hot-reload Flutter iOS apps natively from Linux and Windows with official Swift and LLVM toolchains and no xtool runtime.
1.4.2 #
- Point GrandSlam anisette
X-MMe-Client-Infoatakd/1.0instead of an Xcode identity. - Prebuild planned Swift interop targets and re-plan the Swift build with those search paths, so
cloud_firestorefindsFirebaseFirestoreon a cold Windows build. - Bound SwiftPM resolve, git clones, and binary-artifact downloads, fail instead of hanging on invisible git credential prompts, and surface SwiftPM's stdout diagnostic when resolve fails.
1.4.1 #
- Vendor transitive SwiftPM dependencies faithfully: keep
.package(path:)unnamed for manifests older than swift-tools-version 5.2, and initialize git submodules in vendored checkouts (fixesflutter_image_compress). - Preserve chained-fixup metadata when repairing Objective-C selrefs, fixing a launch crash in
dyld4::PrebuiltObjCon apps linked with lld 19 or newer. - Install lld from apt.llvm.org (
llvm.sh) in the apt setup script instead of the distrolldpackage, register an unversionedld.lldthrough update-alternatives, and verify the linker in the dnf and pacman ones. - Report the resolved linker version in
xcross doctor.
1.4.0 #
- Add
xcross configwith an interactive terminal config editor and a dynamic, script-driven setup flow. - Support local installer builds and avoid running setup during installation.
- Prefer build tool shims in
xcrunresolution and use native executable compiler aliases for Windows native assets. - Repair Objective-C fast stubs sharing a selref when one stub can relocate, fixing incremental SwiftPM relinks on Linux.
- Vendor URL dependencies declared by vendored SwiftPM packages using cached git checkouts, including transitive package manifests.
- Improve cross-platform SwiftPM dependency resolution, binary artifact recovery, symlink materialization, and long-path staging.
- Reuse content-validated SwiftPM plugin builds and stabilize interop flags across build retries.
1.3.6 #
- Repair Kotlin native-asset builds on Linux, including Objective-C small-stub arguments and Mach-O fast-stub rewriting.
- Strengthen release update verification, rollback, and recovery of missing native libraries.
1.3.5 #
- Normalize native asset framework install names and Mach-O dylib references for correct runtime loading.
- Cache SwiftPM build identities and artifact-junction capabilities to reduce repeated build work.
- Strengthen toolchain and SDK cache invalidation using filesystem change metadata.
- Update the examples repository reference.
1.3.4 #
- Add
xcross cleanto clear project-local native asset and SwiftPM build caches while preserving shared caches and unrelated build output. - Expand
xcross doctorwith Windows iOS tool checks and remediation guidance. - Prevent source-update cleanup from deleting active temporary directories owned by concurrent xcross operations.
- Update the examples repository reference.
1.3.3 #
- Add
xcross doctorwith cross-platform checks and remediation guidance for required and optional tooling.
1.3.2 #
- Stabilize Flutter iOS builds on Windows with native-asset tool shims,
xcruncompatibility, shorter SwiftPM workspaces, reusable staged builds, and resilient transitive binary-artifact recovery. - Simplify SwiftPM artifact handling and improve release installation, tool-output parsing, linker argument forwarding, and cross-platform integration coverage.
- Move examples to the dedicated examples repository and update package dependencies.
1.3.1 #
- Fix Flutter iOS native-asset builds on Windows by using the resolved LLVM Clang as the
cchost compiler and falling back from unavailablellvm-otooltollvm-objdumpwith compatible Mach-O inspection arguments.
1.3.0 #
- Expand Flutter iOS compatibility with SwiftPM Firebase support, packaged native assets, dependency fonts, resilient Swift interop targets, correct UIScene window attachment, and support for read-only Flutter SDKs.
- Improve Flutter launch and hot-reload reliability with transport-specific VM Service binding, immediate session controls while hot reload prepares, clearer diagnostics, and safer device log streaming.
- Make wireless device sessions more reliable by bounding Developer Disk Image mounts, shortening timeout recovery, and restarting stale Wi-Fi tunnel daemons.
- Improve update cleanup so stale source-build clones are always removed.
1.2.2 #
- Phase release and update identity work so source-ref installs report injected normalized refs, tagged release archives report the release tag, and unreleased builds stay clearly marked until the next official update.
- Build Linux and Windows release artifacts through the shared compile-time identity wrapper, remove the hardcoded dev version fallback from stamped release automation, and keep unreleased installs returning to the latest official release.
1.2.1 #
- Replace the old tag-only update selector with
--ref, so release tags still install verified release assets while branch and commit refs build from source before the same atomic install step.
1.2.0 #
- Add first-class wireless device support with
xcross tunnel --wifiandxcross flutter run --wifi. xcross can bootstrap RemotePairing over a trusted USB connection, reconnect saved wireless pairings, or advertise the host for cable-free pairing on iOS 27+, then start a TCP RSD tunnel and mount the Developer Disk Image automatically. (#29) - Discover wireless devices through
pymobiledevice3 tunneld, route installs, app lookup, DDI mounting, and launches through the correct RSD transport, and surface actionable pairing, mDNS, Python, privilege, and tunnel diagnostics. (#29) - Launch the exact account-qualified bundle id produced during signing and installation instead of guessing from installed apps. This avoids attaching to stale xcross builds or production/TestFlight builds with the same base bundle id, which could cause kernel-version errors or denied debugging. (#28)
- Complete App Groups support for share and action extensions. Xcode 16 synced folders and localized resources are handled correctly, Swift module names match extension principal classes, host and extensions use the same group and callback URL scheme, and Apple ID signing creates and attaches groups automatically. (#27)
- Treat the issued provisioning profile as the source of truth for App Group
entitlements. App Store Connect API keys can use a group attached manually by
passing
XCROSS_APP_GROUP, while unsupported group creation no longer blocks an otherwise valid install. (#27) - Retry Linux package installation after refreshing a stale APT index. (#29)
1.1.2 #
- Build, embed, sign and install iOS app extensions (share and action
extensions). Extension targets are read from the Xcode project, compiled
against the Darwin SDK, embedded at
<App>.app/PlugIns/<Name>.appex, and each is given its own App ID and provisioning profile. This is what lets plugins such asreceive_sharing_intentappear in the iOS share sheet. Seedocs/app-extensions.md. (#23) - Resolve the bundle id from the application target rather than the first
PRODUCT_BUNDLE_IDENTIFIERinproject.pbxproj. A project with a share extension usually lists the extension's first, so xcross signed, installed and launched the extension instead of the app, showing a blank screen. (#23) - Expand
$(MARKETING_VERSION)and$(CURRENT_PROJECT_VERSION)from the application target's build settings. The defaultios/Runner/Info.plistreferences both, so apps were shipping a literal$(MARKETING_VERSION)as their version string. Embedded extensions inherit the app's versions, which iOS requires them to match. - Register App Groups declared by an app or its extensions, qualified per
account (
group.XCR-<TEAM>.…) because App Group ids are globally unique. Enabling the capability on the App IDs is still a manual step on developer.apple.com; xcross reuses an existing group, so the next run picks it up.
1.1.1 #
- Detect a Swift toolchain that no longer matches the installed Darwin SDK.
xcross sdk installpatches the SDK with the selected toolchain's clang headers, so switching Swift afterwards made every plugin build fail with "this SDK is not supported by the compiler" and no mention of the SDK. The toolchain is now recorded at install time and checked before building, with a message naming the cause and the command that fixes it. - Require Swift on
PATHbeforexcross setupandxcross sdk install, which previously failed only after a sudo prompt and a full package transaction, or after extracting tens of gigabytes. - Verify the Xcode archive before
xcross sdk installremoves the previous SDK, so a wrong path or a partial download no longer leaves the host with no SDK at all. - Fail the Windows release job on failing tests, and fix the 7 Windows-only test bugs that gap had been hiding.
1.1.0 #
- Add Compose Multiplatform support:
xcross compose setup,xcross compose build, andxcross compose runbuild, sign, install, and launch Kotlin Multiplatform iOS frameworks and.appbundles from Linux and Windows, with a--watchrebuild loop and fingerprinted builds that skipkonancwhen nothing changed. - Provision and patch the Kotlin/Native toolchain for cross-host iOS builds: spoof Apple host checks, stage an Apple toolchain and the real compiler-rt archives, keep dependency resolution off the network, and disable Apple-only debug transparent stepping.
- Pass explicit
-archand-platform_versionthrough the Swift runner link, and degrade a missing Windowsdsymutilto a no-op. - Build
sharedDarwinSourceFlutter plugins from theirdarwin/directory, and warn instead of silently dropping a plugin whose iOS manifest is missing. - Generate and run the Dart plugin registrant, so federated plugins that
register through
dartPluginClassno longer fail at first use.
1.0.5 #
- Enhance Windows SwiftPM support and normalize staged plugin manifests.
- Synthesize fallback Clang/Swift modules for SwiftPM checkouts, including nested modules, module shims, and Swift interop headers for Objective-C and Swift consumers.
- Infer fallback module topology and linkage from sources, and preserve source fallback module names across rebuilds.
- Implement
#Previewthrough a compiler plugin instead of patching plugin sources. - Make Flutter plugin staging incremental, staging only iOS-reachable
package entries, pruning entries the filter no longer stages, and skipping
development-only trees and
pigeons/. - Keep binary files out of the sync transform, and preserve checkout symlink identity and materialized checkout placeholders.
- Forward symlinked headers and avoid a Clang module lock deadlock on Windows.
- Skip cross-host Swift interface verification.
1.0.4 #
- Resolve Flutter package configs from workspace roots.
- Pin the iOS SDK and sysroot for Flutter plugin linking, and expose Flutter headers to Objective-C plugins.
- Propagate the project's iOS deployment target through SwiftPM builds and generated app metadata.
- Normalize SwiftPM linker flags and stage normalized manifests for plugin builds.
- Skip generated imports for FFI-only Flutter plugins.
1.0.3 #
- Teach
xcross setupto install host requirements on macOS via Homebrew and to verify the Windows toolchain more clearly. - Find Homebrew LLVM/
lldinstalls on Apple Silicon and Intel Macs when resolving Darwin SDK link tools. - Recommend using a separate Apple account for auth in the README.
1.0.2 #
- Recover automatically when
tunneldrefuses to create an RSD tunnel:xcross flutter runnow mounts the Developer Disk Image and starts a lockdown tunnel itself instead of stalling 60s and silently degrading to the userspace transport. - Say why hot reload is unavailable, and answer
r/Rwith that reason instead of ignoring the keypress.
1.0.1 #
- Add
xcross auth clearto sign out: deletes the saved App Store Connect key, the Apple ID session and its machine attestation state, and every certificate, private key, and provisioning profile xcross minted. - Reject unexpected positional arguments to
xcross authinstead of silently starting an Apple ID login. - Accept certificates and profiles Apple minted up to an hour ahead of a lagging host clock, and name both clocks in the error when it is worse.
1.0.0 #
- Build, sign, install, launch, and hot-reload Flutter iOS apps natively on Linux and Windows.
- Support Swift Package Manager Flutter plugins on both hosts.
- Apple ID/password login on Linux and Windows via Android ADI / Anisette, or App Store Connect API keys on either host.
- Remove the xtool runtime completely; xcross now owns Darwin SDK setup and uses the native device pipeline.