mirror of
https://github.com/status-im/status-app.git
synced 2026-08-27 07:01:14 +00:00
- in linux jobs we serialise `tests-ui`, `tests-nim` and appImage `package` into a single workflow. - in macos job we serialise `iOS`, `MacOS` builds into a single workflow. - we use system `nim` for all jobs and dont have to build nim from nimbus build system each time. - installed `nim 2.2.10` on `windows` and `macos` hosts. - upgraded nim in Docker images and bumped the harbour tags for `linux` and `android`. This will help us avoid checkout and `deps` stage for these jobs and we can free up slots for other jobs. This way we can do more work in parallel. Because of this we save: - `12` minutes of build time in `linux` job. - `10` minutes of build time in `macos` job. - `21` minutes of `nim` compile time in `windows` job.
Status Mobile Build System
This repository contains the build system for Status Mobile, supporting both iOS and Android platforms with Qt6 compatibility. Cross-compilation is currently supported on MacOs and Linux. Windows is not supported. The dev setup runs well on WSL with Windows emulator.
Table of Contents
- Quick Start Guide (Container Builds) - Android
- Developer Setup Guide
- Build System Documentation
- Troubleshooting
- Contributing
Quick Start Guide (Container Builds)
This section is for users who want to get up and running quickly with minimal technical setup.
Prerequisites
- Docker
- ADB (Android Debug Bridge)
- Android Emulator
Quick setup - android
- Install dependencies:
# macOS
brew install docker --cask
# Start docker
open -a Docker
brew install android-platform-tools android-commandlinetools xcbeautify
# Ubuntu
sudo apt-get update
sudo apt install android-sdk-common
sdkmanager --install \
"build-tools;36.0.0" \
"emulator" \
"platform-tools" \
"platforms;android-36" \
"ndk;27.2.12479018" \
"system-images;android-36;google_apis;arm64-v8a"
- Verify installation:
docker --version
adb --version
emulator --version
avdmanager --version
sdkmanager --version
- Building the app
make -f mobile/ContainerBuilds.mk
- Running the app
# Linux and MacOS
make -f mobile/ContainerBuilds.mk run
What Happens Behind the Scenes
- The build process uses the same pre-built Docker image as the CI pipeline (
harbor.status.im/status-im/status-desktop-build:1.0.0-qt6.11.0-android) - All required tools and dependencies (Qt 6.11.0, Android SDK/NDK, Go, Nim) are provided by the container
- The container runs on linux/amd64 platform for consistency, even on ARM macOS machines
- The built APK/AAB is available in the
mobile/bin/android/qt6/directory