mirror of
https://github.com/status-im/status-app.git
synced 2026-08-27 15:11:20 +00:00
ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE and RECEIVE_BOOT_COMPLETED have no
consumer: no LocationManager or WifiManager call anywhere in the Java sources,
no QtPositioning/QtBluetooth in the package, and no BOOT_COMPLETED receiver is
declared. All three arrived together as boilerplate in 11e22b3d8e.
The first two were not inert: Play derives android.hardware.location and
android.hardware.wifi as required features from them, so devices without wifi
or location hardware were filtered out of the catalog. Removing the permissions
removes the filters at the source.
Metered-network detection is unaffected: StatusGoService classifies transport
and expensiveness through ConnectivityManager and NetworkCapabilities, and Qt's
QNetworkInformation Android backend behind NetworkChecker uses the same two
APIs. ACCESS_NETWORK_STATE covers both; Qt6Network's android-dependencies.xml
declares no other permission.
Resulting requirements: Android 9+, arm64-v8a, normal or larger screen,
internet, and a pointer device (faketouch, which a mouse satisfies).
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