Rename Package
Change display name, application ID, bundle ID, and link scheme with bowler setup.
Use the setup wizard
From the generated project root:
bowler setupThe wizard updates the mobile identity, localized app/onboarding copy, API origin, and the deep link URL scheme in one pass. Re-run it to revise those values. Use a CLI distribution that includes KMP setup support.
Check the resulting identity
Paths are relative to generated mobile-app/.
| Value | Template location |
|---|---|
| Android application ID | androidApp/build.gradle.kts: applicationId |
| iOS bundle ID | iosApp/Configuration/Config.xcconfig: PRODUCT_BUNDLE_IDENTIFIER |
| iOS display name (home screen) | iosApp/Configuration/Config.xcconfig: INFOPLIST_KEY_CFBundleDisplayName, added by bowler setup |
| Android custom scheme | androidApp/src/main/AndroidManifest.xml |
| iOS custom scheme | iosApp/iosApp/Info.plist: CFBundleURLTypes |
| Shared scheme/prefix | sharedLogic/src/commonMain/kotlin/com/soewidiputra/kmponlate/AppNavigation.kt: DemoLinks.scheme, DemoLinks.prefix |
The Kotlin source package remains com.soewidiputra.kmponlate; changing the installed application identity does not require moving every Kotlin file. The source iOS bundle ID includes $(TEAM_ID), so inspect the resolved build value when registering services.
Reconfigure services
Register the final package and bundle identifiers with Firebase and replace androidApp/google-services.json and iosApp/iosApp/GoogleService-Info.plist. Setup does not rewrite those credentials. Update Google OAuth clients/signing fingerprints, Apple capabilities/provisioning, and your store app records to match.
For Account projects, keep backend email links aligned with the new scheme and set API_BASE_URL to the host root, without /api/v1. iOS local overrides in iosApp/Configuration/Config.local.xcconfig must use https:/$()/host because // begins an xcconfig comment.
Build and run both apps, inspect their displayed name, and test the Account deep-link contract, social credentials, and push setup.
