Skip to main content

App Distribution โ€” Android & iOS

Overviewโ€‹

Milestone 6 also delivers the distribution channels of the wallet app: a reviewer or tester must be able to install the app and exercise the flows of the local demo without building it from source.

Two repositories, two kinds of artifacts
The same build on every channel โ€” and it needs the local stack

The APK you get from the GitHub release, from Firebase App Distribution or the .ipa you get from TestFlight (or from the direct download) are the very same builds: they are configured for the local dev stack (wss://127.0.0.1:2090, ws://127.0.0.1:9944, IPFS 127.0.0.1:5001), not for a hosted testnet.

So the local stack must be running before you can use any of them (see the local demo), and on Android the three ports must be exposed to the device/emulator (adb reverse tcp:2090 tcp:2090, โ€ฆ). An iOS Simulator reaches 127.0.0.1 natively.

PlatformChannelTargetStatus
AndroidGitHub release (m6-v1)Emulator (x86_64) & devices (arm64)the tag exists, the assets attached
AndroidFirebase App DistributionDevice only (Firebase does not deliver to simulators)the group exists, the builds are available
iOSDirect .ipa downloadSimulator (TestFlight does not deliver to simulators)the tag exists, the assets are added at the release
iOSTestFlight (App Store Connect)Device onlyWIP account approved but setup pending

Android โ€” Firebase App Distributionโ€‹

The Android app is distributed through Firebase App Distribution, the official channel for handing a build to a group of testers without going through the Play Store.

Get access to the testing groupโ€‹

The tester group is a Firebase tester group: ask Interstellar to add you, or request access through the tester-group link:

appdistribution.firebase.dev/i/71f8c7de02bcbcdc

Once you are in the group, the app is installed straight from the browser (the Firebase tester page) or from the Firebase tester app on the device โ€” no adb, no sideloading.

The official documentation is the reference for the whole flow: distribute-gradle.

The other Android channel

The same build is also published directly as an APK there m6-v1 release โ€” see the local demo.

This is mostly useful if you want to test using an Emulator and want to avoid the whole Google signin there.

iOS โ€” a direct .app (simulator) and TestFlight (real devices)โ€‹

iOS does not use Firebase: the app is built with xcodebuild archive, exported and uploaded to App Store Connect, where the build shows up in TestFlight.

Why two channels?

TestFlight only delivers to real devices โ€” Apple does not distribute simulator builds through it. So the M6 release offers both:

  • a direct .app download for the iOS Simulator (the build compiles the Rust libraries for the simulator slice, so the app runs locally โ€” exactly like the Android APK in the emulator);
  • TestFlight for the real devices (signed and distributed by Apple).

For the testersโ€‹

What you wantChannelWhat you do
Run the app in the Simulatordirect .app downloaddownload the zipped .app from the m6-v1 release eg "iosApp-Simulator.app.zip", unzip it, then in Xcode Device > Install Simulated Packageโ€ฆ (or xcrun simctl install booted <app>.app)
Run the app on a real deviceTestFlightPENDING/WIP install the TestFlight app, accept the invitation, then install the build

Official documentation: upload builds ยท distributing for beta testing.

See alsoโ€‹