Installation
ready for a release.
From the unzipped folder to a build that carries your identity, your signing key and your own endpoint. Plan about 30 minutes the first time.
01Unzip and install packages
- UnzipUse a path without spaces.
- Install Flutter packages
flutter pub get - Put the folder in GitOne test (
test/product_identity_test.dart) checks the tracked files withgit ls-filesand fails outside a Git repository. Git also makes updates a merge, not a rewrite (how).git init git add . git commit -m "TIDE 0.1.0 (original)" - Check that it builds
flutter analyze # expect: No issues found flutter test # expect: All tests passed (436 in 0.1.0)
02Your app identity
Required The shipped identifier com.tideapp.app is a placeholder. Change it before your first store upload; a store never lets you change it afterwards. The full list of files is on Rebranding.
| What | Where |
|---|---|
| Android application ID | android/app/build.gradle.kts → applicationId and namespace, plus the package folder under android/app/src/main/kotlin/ |
| iOS bundle ID | ios/Runner.xcodeproj/project.pbxproj → PRODUCT_BUNDLE_IDENTIFIER (easiest in Xcode → Runner → Signing & Capabilities) |
| Your domain | Build setting TIDE_HOST (how) |
03Signing
Nothing signing-related ships, and .gitignore keeps it that way: key.properties, *.jks, *.keystore, *.p12, *.p8, *.mobileprovision and every .env are excluded.
Android
The release build type is signed with the debug key so flutter run --release works out of the box (android/app/build.gradle.kts). Google Play refuses a debug-signed upload. Create your own upload key:
keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA \
-keysize 2048 -validity 10000 -alias upload
Then create android/key.properties and point a release signingConfig at it, as described in the Flutter Android deployment guide. Keep the keystore and its passwords safe: you need the same key for every future update.
iOS
Open ios/Runner.xcworkspace in Xcode, select Runner → Signing & Capabilities and pick your own Team. The shipped project has no DEVELOPMENT_TEAM.
04Your RPC endpoint
Recommended TIDE works on public endpoints, but they are rate-limited and shared by every app that uses them. Before launch, add your own:
- Get an endpointFrom any Solana RPC provider, for example Helius. Use your own account: providers do not allow sharing a key.
- Open the operator panelSettings → Operator panel → Endpoints and credentials.
- Paste the full URL into Solana RPC URLFor Helius that is
https://mainnet.helius-rpc.com/?api-key=<your-key>. Press Save and apply. Leave the separate Helius API key field empty: in 0.1.0 no network call reads it.
For many installs at once, put the same values in a hosted config document instead (Configuration → Remote document).
05Legal pages and support address
Required Publish your own terms and privacy policy. Then either build with your domain (TIDE_HOST, which derives https://<host>/terms, /privacy and support@<host>) or type the exact URLs into Operator panel → Identity. Values set in the panel always win. The placeholder addresses under tide.mikodes.com are not yours to use.
06Your fee
The fee ships switched off. Set it when you are ready: Setting up earnings.
07Checklist: ready for a first release?
flutter analyzeandflutter testpass.- Your own application ID and bundle ID are set.
- Android has your upload key; Xcode has your Team.
- Your terms, privacy and support addresses open.
- Operator panel → In force right now shows the values you expect.
- Settings → About shows no fee warning (or you know why it does).