Publishing Your KMP App: A Step-by-Step Guide to App Stores
Navigate the publishing process for both Google Play and Apple App Store with ease.
1Introduction to App Publishing
The third phase of the KMP contest starter kit focuses on publishing your app to Google Play and Apple App Store. This guide covers essential checks, store requirements, and how to publish without a Mac. Publishing involves verifying privacy policies, terms URLs, and ensuring all configurations are correct. The kit provides a script to automate these checks, making the process smoother for developers.
2Store Accounts Setup
You need developer accounts for both stores. Google Play charges a one-time $25 fee, while Apple charges $99 annually. Apple or Google may take days to verify new accounts. Google Play has a testing rule: individual accounts require a 14-day closed test with 12 testers before production access. Company accounts skip this but need a registered business with a D-U-N-S number. Start both accounts early to avoid delays.
3App ID and Configuration
Two critical elements become permanent during publishing: the app ID and configuration. Google Play ties your package name to the app on the first upload, and Apple ties the bundle ID to the store record. Both cannot be changed later. Use the rename script to update your app ID if needed. Fill in AppConfiguration.kt with real privacy policy and terms URLs, a support email, and disable premium features if not used.
4Pre-Build Checks
Before building the release, ensure your app has a square logo (1024px), a notification icon (ic_notification.xml), and updated version numbers. Remove any direct API keys used for testing and replace them with cloud function URLs. Feature flags should have default values, and all quality checks from part 1 should pass. The kit can generate all required icons and splash screens from a single logo.
5Signing Your App
Every released app must be signed to prove updates come from you. For Android, the kit can create a keystore with one command, generating keystore.jks and keystore.properties. Build a release AAB file for Google Play. Back up the keystore and passwords securely. iOS signing is handled by GitHub workflows, eliminating the need for manual certificate creation.
6Google Play Requirements
Google Play requires an app icon (512x512), feature graphic (1024x500), 2-8 phone screenshots, and tablet screenshots if supported. Fill in the title (30 chars), short description (80 chars), full description (4000 chars), and data safety form. Declare collected data, target audience, and ads usage if applicable. The kit’s defaults include analytics, crash reports, and sign-in data.
7Apple App Store Requirements
Apple requires an app icon (1024x1024), screenshots for 6.9-inch and 6.5-inch iPhones (and 13-inch iPad if supported), and metadata like name, subtitle (30 chars), keywords (100 chars), and description. Complete the category, age rating, price, and App Privacy section. Provide review contact details and a demo account if needed. The kit signs users in anonymously by default.
8Generating Screenshots
Both stores require screenshots at exact pixel sizes. The kit renders real screens at these sizes using a script, outputting to distribution/store_screenshots/. For the demo app, this produces four screens at the 6.5-inch iPhone size. Stores accept plain screenshots, but you can enhance them with headlines and phone frames using a design tool.
9Publishing Workflow
The publishing workflow involves building signed releases, uploading to stores, and completing store-specific forms. Use the kit’s scripts to automate checks and generate assets. For iOS, GitHub workflows handle signing. Ensure all store requirements are met before submission to avoid rejections. The process is mostly a checklist, and the kit simplifies it with automation.
10Final Steps and Importance
Publishing is the final step to make your app available to users. The KMP starter kit’s automation reduces complexity, ensuring you meet all store requirements. Properly configured apps avoid rejections and delays. This phase transforms your development effort into a live product, ready for users worldwide. Follow the checklist, and your app will be live in no time.