Deployment
web, Android, iOS.
The web build is a static folder that any host can serve: no server, no build step on the host, no runtime backend. Store builds follow the normal Flutter process.
01Web (static hosting)
- Build
Output:flutter build web --release \ --dart-define=SOLSCOPE_RPC_URL=https://<your-browser-usable-rpc> \ --dart-define=SOLSCOPE_ADMIN_CONFIG_URL=https://<your-host>/solscope.jsonbuild/web/. - Upload
build/web/To Netlify, Cloudflare Pages, Vercel, Firebase Hosting, GitHub Pages, S3 or nginx. Nothing runs on the host. - Check it in a browserOpen the site, open developer tools, and confirm the console and network tabs are clean. The status bar shows which RPC is active.
The RPC must answer browser requests (CORS). api.mainnet-beta.solana.com returns HTTP 403 to any request with an Origin header, so it cannot serve a web build. Never put a secret API key into a public web build: it is readable in main.dart.js. Use an origin-restricted endpoint.
02A public demo of your own
flutter build web --release \
--dart-define=SOLSCOPE_DEMO=true \
--dart-define=SOLSCOPE_RPC_URL=https://solana-rpc.publicnode.com \
--base-href /
A demo build has no wallet connectors (nothing can be signed), a read-only Setup tab, and one labelled placeholder fee account. It seeds no portfolio, no PnL, no alerts and no promoted rows; test/demo_mode_test.dart checks each of those. Optional: SOLSCOPE_DEMO_MINT chooses the opening token.
03Android
- Create an upload key
Keep the file and passwords safe and out of git.keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload - Wire release signingThe shipped
android/app/build.gradle.ktssigns release builds with the debug key, with a note to replace it. Createandroid/key.properties(git-ignored) and add a releasesigningConfigthat reads it, following Flutter's Android signing guide. Google Play rejects debug-signed bundles. - Build the bundle
Output:flutter build appbundle --release \ --dart-define=SOLSCOPE_FEE_BPS=<bps> \ --dart-define=SOLSCOPE_FEE_ACCOUNT=<your-token-account>build/app/outputs/bundle/release/app-release.aab. Upload it in Play Console.
Google Play: non-custodial wallets are outside the crypto exchange / custodial wallet licensing policy. Do not add custody.
04iOS
- Open the workspace
ios/Runner.xcworkspacein Xcode → Runner → Signing & Capabilities → select your Team and bundle ID. - Build
flutter build ipa --release - UploadWith Xcode Organizer or Transporter, then TestFlight and App Review.
Apple guideline 3.1.5(i): wallet apps must come from an organisation account.
The web build was built and checked for these docs. Android and iOS store builds were not run in this documentation pass (unverified).
05Documentation for your users
The status-bar Docs button opens <live host>/docs/. Set SOLSCOPE_LIVE_HOST to your own site and publish your own help page there, or the button points at the SOLSCOPE site.