Skip to content

atman-project/beam-ios

Repository files navigation

Beam iOS app

Native Swift app that consumes atman as a C-ABI static library.

Download on the App Store

Layout

ios/
├── Beam/                     # Swift sources + bridging header + Info.plist
├── atman/                       # libatman.a + atman.h (produced by build_atman.sh)
├── build_atman.sh               # builds atman → atman/{libatman.a,atman.h}
├── project.yml                  # xcodegen config
└── README.md

atman lives at ./submodules/atman (git submodule).

One-time setup

  1. Make sure submodules are initialized:
    git submodule update --init --recursive
    
  2. Install Rust iOS targets:
    rustup target add aarch64-apple-ios x86_64-apple-ios aarch64-apple-ios-sim
    
  3. Install cbindgen (header generator) and xcodegen:
    cargo install cbindgen
    brew install xcodegen
    

Generate the Xcode project

DEVELOPMENT_TEAM="YOUR_TEAM_ID" xcodegen

Build atman before opening Xcode

Xcode doesn't run the Rust build itself — invoke build_atman.sh by hand whenever atman's source has changed, then open the project.

./build_atman.sh --arm64                 # device
./build_atman.sh --sim-arm64             # simulator (Apple Silicon)
./build_atman.sh --x86_64                # simulator (Intel)
./build_atman.sh <target> --release      # release profile

The script produces atman/atman.h + atman/libatman.a. Xcode picks them up via the HEADER_SEARCH_PATHS / LIBRARY_SEARCH_PATHS settings.

open Beam.xcodeproj

Build Beam for publication

Bump version number

  • Bump the MARKETING_VERSION in project.yml.
  • Regenerate Xcode project:
    DEVELOPMENT_TEAM="YOUR_TEAM_ID" xcodegen generate
  • Change the CFBundleShortVersionString in Beam/Info.plist.

Build Beam

  • Build atman for ARM64 with release mode:
    ./build_atman.sh --arm64 --release
  • Open Beam.xcodeproj as described above.
  • Then in Xcode,
    • Destination: Any iOS Device (arm64)
    • Menu: ProductArchive
    • When Organizer opens: Distribute AppApp Store ConnectUpload
    • Xcode signs with the automatic profile tied to the team ID you specified for xcodegen.

Releases

Packages

Contributors

Languages