6.2 KiB
6.2 KiB
Releasing Nanga Kathai to Google Play and the App Store
| Android | iOS | |
|---|---|---|
| App ID | com.metatroncubesolutions.nanga_kathai |
com.metatroncubesolutions.nangaKathai |
| Built by | Codemagic (android-release) or locally |
Codemagic (ios-release) |
| First stop | Play Console, Internal testing | TestFlight |
The version comes from pubspec.yaml (version: 1.0.0+1). Raise the first part (1.0.1, 1.1.0…) for
each store release. Build numbers are set automatically by Codemagic.
1. Accounts (one-time)
- Apple Developer Program (US$99 a year), enrolled as an organisation. This needs a D-U-N-S number for Metatroncube Software Solutions.
- Google Play Console (US$25 once), as an organisation account. A personal account must run a closed test with at least 12 testers for 14 days before it can publish, so use an organisation account.
- Codemagic, signed in with GitHub, with the
metatroncubeswdev/nkbmusic_apprepo added.
2. Codemagic setup (one-time)
- Variables. Open App settings > Environment variables and create the group
nk_appwith:SUPABASE_URL=https://app.nkbmusic.comSUPABASE_PUBLISHABLE_KEY= the value from your localenv.jsonMEDIA_BASE_URLis optional; it defaults to the Supabaseaudiobucket
- App Store Connect API key.
- In App Store Connect, open Users and Access > Integrations > App Store Connect API and generate a key with the App Manager role.
- In Codemagic, open Team settings > Team integrations > Developer Portal and add the key with the name
clickstocart-app(already added; it works for every app in the Apple team).
- iOS signing (automatic). The build creates the Apple Distribution certificate and the App
Store profile itself through the API key, so no profiles are made by hand.
- Create a variable group
nk_ios_signingwithCERTIFICATE_PRIVATE_KEY_BASE64(secure). - Its value is the one line in
C:\Users\manes\nk-keys\ios_distribution_private_key.base64.txt. - The API key needs the Admin role, or App Manager with access to Certificates, Identifiers & Profiles.
- Apple allows only a few distribution certificates per team. If the limit is reached, revoke an unused one on developer.apple.com.
- Create a variable group
- Android signing. On the same page, under Android keystores, upload
C:\Users\manes\nk-keys\nk-upload.jkswith the reference namenk_upload_keystore, aliasupload. The password is inC:\Users\manes\nk-keys\key.properties.backup. - Google Play publishing (optional).
- Create a Google Cloud service account, invite it in Play Console > Users and permissions with release rights, and download its JSON key.
- Store the key as
GCLOUD_SERVICE_ACCOUNT_CREDENTIALS(secure) in a variable groupnk_google_play.
3. iOS: first release
- On developer.apple.com, open Identifiers and register the App ID
com.metatroncubesolutions.nangaKathai. In-App Purchase is on by default. Background audio needs nothing extra. - In App Store Connect, create the app with the name Nanga Kathai, that bundle ID, and primary language English (India or UK).
- In Codemagic, start the iOS release (TestFlight) workflow, or push a tag:
git tag v1.0.0 && git push github v1.0.0. The build is uploaded to TestFlight automatically after about 20–30 minutes plus Apple processing. - Test it from the TestFlight app on an iPhone.
- Fill in the listing (section 5) and submit for review.
4. Android: first release
- In Play Console, create the app: Nanga Kathai, App, Free.
- Build the first bundle locally and upload it manually. Google requires the very first upload to be done by hand.
The file isflutter build appbundle --release --dart-define-from-file=env.jsonbuild/app/outputs/bundle/release/app-release.aab. Upload it under Testing > Internal testing > Create release. Accept Play App Signing: Google keeps the app signing key, and you sign uploads withnk-upload.jks. - Later builds come from the Codemagic Android release workflow, which uploads a draft to Internal testing.
- Promote it from Internal testing, to Closed testing (optional), to Production.
5. Store listing checklist
Links (publish the files from site/ on nkbmusic.com first)
- Privacy Policy:
https://nkbmusic.com/privacy - Terms:
https://nkbmusic.com/terms - Account deletion (required by Play):
https://nkbmusic.com/delete-account - Support:
support@nkbmusic.com
Graphics (in assets/brand/: app_icon_1024.png and play_store_icon_512.png)
- Play: a 512×512 icon, a 1024×500 feature graphic, and 2–8 phone screenshots.
- App Store: iPhone 6.1/6.3-inch screenshots (1206×2622, in the "iPhone with Dynamic Island" tab). The app is iPhone-only, so no iPad screenshots are needed.
Questionnaires
- Data collected (Play Data safety and Apple App Privacy):
- email, name, optional phone and photo;
- app interactions (plays) and crash/diagnostics data if crash reporting is added;
- not used for tracking or ads, data encrypted in transit, users can request deletion.
- Content rating: music app, no violence and no user chat. Expect Everyone / 4+.
- Ads: none. In-app purchases: yes (the Support products in
docs/support-payments.md).
App Review notes (important)
- Create a reviewer account (for example
review@nkbmusic.com) with a password, and enter it as the sign-in details. Apple and Google can't receive the email code. - Music rights are the most likely reason for a rejection (Apple guideline 5.2.3 and Google's IP policy). Explain it in the notes: "Nanga Kathai preserves Badaga community music from a family collection. Every song has an in-app 'Is this your song?' claim or removal option, and we act on requests promptly. New songs will come only from verified creators who confirm their rights." Keep written permission from any singers you can reach, in case review asks.
6. Keys: back these up now
C:\Users\manes\nk-keys\ holds the Android upload key and its password. Copy that folder to
two safe places, such as a password manager and an offline drive. If it is lost, Google can reset
the upload key, but that takes a support request and several days. Never commit it to git.