Build with GitHub Actions

The community project jiayx/d2r-mobile-build can compile iOS and macOS packages on GitHub Actions. This is an advanced alternative to local packaging: it needs version-matched prepared inputs derived from your own game files. Keep those inputs and resulting game-containing packages private. We have reviewed the workflow documentation, not run a game build ourselves.

When this route makes sense

Use the cloud workflow if you understand GitHub Actions and already have a compatible prepared-input package made from your own files. It avoids needing a local Mac for the ordinary build, but it does not remove the preparation, copyright or signing requirements.

For a Windows-only, local route, start with Windows packaging. A clean upstream shell and a community prepared-input archive are different things; do not substitute one for the other.

What prepared input contains

The current iOS format includes prepared.json, source-payload.zip, shader-chain.lock, resource-manifest.json, romfs-inputs.zip, Legacy metadata and generated headers. Its metadata identifies the source commit, game version, checksums and generation dependencies.

The payload includes a rewritten game program and compiled shaders. It is game-derived content, not a freely redistributable source archive. This site does not supply it or mirror community game-asset download links.

If shader-generation or program-rewriting rules change upstream, an older prepared package may need regeneration. A successful download alone does not prove compatibility.

Prepare inputs privately

The upstream preparation document describes a separate workflow for generating the required inputs.

For that documented preparation route:

  1. Create a private repository from the community project's template. Review its workflow code and current requirements before enabling Actions.
  2. Configure GAME_ARCHIVE and LEGACY_METADATA as repository secrets. The document specifies JSON containing an HTTPS download URL and SHA-256 for each input. Do not commit console keys or proprietary binaries to a public repository.
  3. Use the supplied Prepare iOS input workflow definition and follow its access requirements. Mac inputs have a separate preparation document.
  4. Inspect the resulting private release, source commit and checksum manifest before using it as build input.

Do not assume that a private GitHub Release URL will work in every download field. Follow the workflow's documented authentication path; do not expose a private token in public configuration.

Run an ordinary build

Once compatible inputs are available:

  1. In the private repository, open Actions → Build IPA or Build macOS.
  2. Choose Run workflow. The actual input field is prepared_input; supply the HTTPS package configuration and its checksum information as documented upstream.
  3. Check source_repository and source_ref. Leave the latter empty only if you intend to build the Release selected by the workflow; use an explicit compatible tag or commit when appropriate.
  4. Review GitHub's current Actions allowance and spending settings before starting. Private macOS runner usage can exhaust included minutes; this guide does not promise a free build.
  5. Run the workflow and read its logs. Do not treat a missing input or failed compatibility check as permission to bypass verification.

Download and choose the output

The documented workflow publishes files under your repository's Releases, with independent build numbers. iOS files distinguish the standard .ipa for iOS 26+ from -ios18.ipa for iOS 18–25. Mac ZIP names distinguish -macos26.zip and -macos15.zip.

Download the matching checksum and build report too. These packages contain precompiled Metal shaders, so the Windows shell route's on-device shader-preparation screen does not apply to them.

Sign an iOS package locally using the tool you chose; the workflow does not remove Apple's provisioning limits. Follow iOS installation for file import and save backups before updating. Do not publish the finished package or prepared inputs.

Frequently Asked Questions

Is prepared input just the 26 MB of ExeFS files?

No. The documented format also contains a rewritten program, precompiled Metal libraries, selected original resource inputs, manifests and generated headers. The README describes community iOS and Mac inputs of approximately 290 MB and 299 MB, respectively; your own output can differ.

Does a private repository automatically make file redistribution lawful?

No. Private visibility prevents accidental public exposure but is not a copyright license. Use only inputs you are entitled to process and do not distribute game-derived build outputs.

Will the default build always use the newest source tag?

No. The documented default selects the upstream Release. A source tag, the latest Release and a community build number can differ. Check the actual selected source and its compatible input manifest.