iOS and Android wallet for Zunia, built with Flutter. Same keys as the browser extension.
Non-custodial multi-chain Cosmos wallet. Targets:
| Platform | Output |
|---|---|
| Android | APK / App Bundle (com.zuniawallet.zunia_mobile) |
| iOS | IPA (com.zuniawallet.zuniaMobile) |
Chain metadata comes from zunia-chain-registry. Visual tokens follow zunia-brand / zunia-ui. Native crypto comes from zunia-core GitHub Release artifacts.
Dart bindings live at ../zunia-core/packages/dart (path dependency zunia_core). Prebuilt Android .so libs and the iOS ZuniaCore.xcframework are not built in this repo. Download them from a signed zunia-core release:
# Requires GitHub CLI (`gh`) authenticated for private releases; public tags need no token.
export ZUNIA_CORE_TAG=v0.1.0 # pin to the release you want
./scripts/fetch-native.shThe script:
- Downloads
android-libs.tar.gz,ZuniaCore.xcframework.tar.gz, andSHA256SUMS - Verifies SHA-256 for those archives
- Installs into
android/app/src/main/jniLibs/andios/Frameworks/
Those directories are gitignored. CI can set repository variable ZUNIA_CORE_TAG to run the same step; if unset, analyze/test still run without native libs.
Deep links, App / Universal Links, and WalletConnect v2 settings are registered; session code uses a stub/reown_walletkit interface until a project id is set.
| Item | Location |
|---|---|
| Canonical YAML | config/connect.yaml |
| Dart constants | lib/config/connect_config.dart |
| Deep link handler | lib/services/deep_link_handler.dart |
| WC service | lib/services/wallet_connect_service.dart |
| Env template | .env.example |
| Android intents + HTTPS-only | android/.../AndroidManifest.xml, network_security_config.xml |
| iOS URL schemes + ATS + camera | ios/Runner/Info.plist |
| Associated domains | ios/Runner/Runner.entitlements |
cp .env.example .env
# set WALLETCONNECT_PROJECT_ID from https://cloud.walletconnect.com
flutter run --dart-define=WALLETCONNECT_PROJECT_ID=$WALLETCONNECT_PROJECT_IDPolicy: config/mnemonic_security.yaml. Enforcement lives under lib/security/ and lib/crypto/keystore.dart (secure storage wrapping key, biometrics gate, FLAG_SECURE channel, hold-to-reveal, clipboard auto-clear, 4-word verify, root warning stub).
In development (alpha). Not on App Store / Play Store yet.
| Repository | Description |
|---|---|
| zunia-extension | Browser extension (same keys) |
| zunia-core | Wallet kernel + native FFI |
| zunia-dashboard | Web portfolio |
| zunia-chain-registry | Chain metadata |
| zunia-docs | Documentation |
| zunia-website | Marketing site |
| zunia-brand | Brand assets |
| zunia-ui | Shared design tokens / web UI |
| zunia-sdk | Developer SDKs (web / Flutter) |
- Flutter 3.24+ (stable)
- Xcode (iOS) / Android Studio SDK (Android)
- Optional:
ghCLI to fetch native release artifacts
flutter doctor# Optional when a zunia-core release exists:
# ZUNIA_CORE_TAG=v0.1.0 ./scripts/fetch-native.sh
flutter pub get
flutter run # connected device / simulator
flutter run -d ios
flutter run -d androidZUNIA_CORE_TAG=v0.1.0 ./scripts/fetch-native.sh
# Android App Bundle (Play Store)
flutter build appbundle --release
# Android APK
flutter build apk --release
# iOS (requires signing in Xcode; link ios/Frameworks/ZuniaCore.xcframework)
flutter build ipa --releaseArtifacts:
build/app/outputs/bundle/release/app-release.aabbuild/app/outputs/flutter-apk/app-release.apkbuild/ios/ipa/*.ipa
lib/
main.dart
crypto/keystore.dart
security/ # FLAG_SECURE, clipboard, integrity, screen blur
services/ # deep links, WC, push stub
screens/ # onboarding, unlock, portfolio, send/receive, QR, settings
theme/zunia_theme.dart
widgets/
scripts/fetch-native.sh
config/connect.yaml
config/mnemonic_security.yaml
android/ # Android host + jniLibs (fetched)
ios/ # iOS host + Frameworks (fetched)
assets/brand/
| Command | Description |
|---|---|
flutter run |
Debug on device/simulator |
flutter test |
Widget tests |
flutter analyze |
Static analysis |
./scripts/fetch-native.sh |
Download pinned zunia-core natives |
flutter build apk |
Android release APK |
flutter build ipa |
iOS release IPA |
See CONTRIBUTING.md.
See SECURITY.md. Never include seed phrases in issues or PRs.
Apache-2.0. See LICENSE.