Fearless Wallet is a mobile wallet designed for the decentralized future on the Kusama network, with support on iOS and Android platforms. The best user experience, fast performance, and secure storage for your accounts. Development of Fearless Wallet is supported by Kusama Treasury grant.
Fearless Wallet roadmap is available for everyone: roadmap link
Track features development: board link
- Architecture overview: see
docs/ARCHITECTURE.mdfor module layout, layers, and flows. - Module map: see
docs/MODULES.mdfor a quick feature-by-feature guide. - Current state: see
docs/CURRENT_STATE.mdfor supported ecosystems, integrations, and TODO hotspots. - Status snapshot: see
docs/status.mdfor health, risks, and what’s incomplete. - Roadmap: see
docs/roadmap.mdfor prioritized, actionable tasks. - Release process: see
docs/releases/PROCESS.mdfor beta → stable steps and checklists.
To build Fearless Wallet Android project, you need to provide several keys either in environment variables or in local.properties file:
MOONPAY_TEST_SECRET=stub
MOONPAY_PRODUCTION_SECRET=stub
Note, that with stub keys buy via moonpay will not work correctly. However, other parts of the application will not be affected.
X1 is a plugin which is embedded into webView. It requires url and id for launching.
X1_ENDPOINT_URL_RELEASE
X1_WIDGET_ID_RELEASE
X1_ENDPOINT_URL_DEBUG
X1_WIDGET_ID_DEBUG
Set of params required to deliver Ethereum connection
// Ethereum blast api nodes keys
FL_BLAST_API_ETHEREUM_KEY
FL_BLAST_API_BSC_KEY
FL_BLAST_API_SEPOLIA_KEY
FL_BLAST_API_GOERLI_KEY
FL_BLAST_API_POLYGON_KEY
// Ethereum history providers api keys
FL_ANDROID_ETHERSCAN_API_KEY
FL_ANDROID_BSCSCAN_API_KEY
FL_ANDROID_POLYGONSCAN_API_KEY
Run static analysis, unit tests, lint, and set up Android SDK packages:
bash scripts/validate-local.sh
Manual equivalents if you prefer:
./gradlew detektAll
./gradlew runTest
./gradlew :app:lint
Prerequisites: JDK 21 (Temurin/Adoptium) and Android SDK with API 35 + build-tools 35.0.0. The script will try to locate ANDROID_SDK_ROOT and install missing packages if sdkmanager is available.
The build now prefers a local checkout of fearless-utils-Android. By default it looks for ../fearless-utils-Android, or you can override it with FEARLESS_UTILS_PATH:
export FEARLESS_UTILS_PATH=/absolute/path/to/fearless-utils-Android
./gradlew :app:assembleDebug
Gradle includes the local project via a composite build and substitutes jp.co.soramitsu.fearless-utils:fearless-utils automatically.
If no local checkout is found and you need to build from source, set USE_REMOTE_UTILS=true (env var or -PUSE_REMOTE_UTILS=true) and Gradle will fetch https://github.com/soramitsu/fearless-utils-Android instead.
Prereqs for building the utils from source: NDK r28 (android-ndk-r28 / 28.0.x) and a Rust toolchain on PATH (rustup, cargo).
We vendor libsodium sources under third_party/libsodium and ship aligned binaries under app/src/main/jniLibs.
If you need to refresh them (e.g., after pulling upstream changes), run:
ANDROID_NDK_HOME=/Users/<you>/Library/Android/sdk/ndk/28.0.12674087 \
./scripts/build-libsodium.sh
The script rebuilds libsodium.so for arm64-v8a, armeabi-v7a, x86, and x86_64 with the Google Play-required -Wl,-z,common-page-size=4096 -Wl,-z,max-page-size=16384 flags and copies them into app/src/main/jniLibs.
- Contributor Guide: see AGENTS.md for project layout, commands, and conventions.
- Process & community details: see CONTRIBUTING.md.
Fearless Wallet Android is available under the Apache 2.0 license. See the LICENSE file for more info.
