Files
ARMSX2/docs/ios-build.md
T

1.9 KiB

ARMSX2 iOS Build Setup

The iOS Xcode project is generated by CMake. It is not committed to the repository because Xcode project output contains machine-local build paths and can become stale quickly.

Swift UI sources live in:

app/src/main/swift

The iOS CMake entry point lives in:

app/src/main/cpp/CMakeLists.txt

Requirements

  • macOS with Xcode installed
  • Xcode command line tools selected with xcode-select
  • CMake 3.16 or newer
  • A recursive clone with submodules initialized

Clone

git clone --recursive -b armsx2-ios https://github.com/ARMSX2/ARMSX2.git
cd ARMSX2
git submodule update --init --recursive

Generate the Xcode Project

./scripts/generate-ios-xcode.sh

This creates:

build-ios-xcode/ARMSX2iOS.xcodeproj

Open it with:

open build-ios-xcode/ARMSX2iOS.xcodeproj

Use the ARMSX2iOS scheme.

Build an Unsigned IPA

For sideloading or external resigning:

./scripts/build-ios-ipa.sh

The IPA is written to:

build-ios-xcode/ARMSX2-iOS-unsigned.ipa

Automatic Signing

If you have an Apple developer team and want Xcode automatic signing, regenerate with your team and bundle identifier:

TEAM_ID=YOUR_APPLE_TEAM_ID BUNDLE_ID=com.your.bundle.id ./scripts/generate-ios-xcode.sh

Then open the generated project in Xcode and build the ARMSX2iOS scheme for an iOS device.

Notes

  • build-ios-xcode/ is generated output and should not be committed.
  • The build target is iOS device arm64 by default.
  • Minimum iOS version is 18.0.
  • JIT availability depends on how the app is signed and launched. Unsigned IPAs may need to be resigned or launched with a compatible sideloading/debug setup.
  • Do not rename low-level iOS JIT/runtime symbols unless you are intentionally changing that code path. Some internal names are compatibility plumbing and are not user-facing branding.