How to Publish a Swift/SwiftUI App on Google Play
Swift and SwiftUI are Apple-exclusive technologies, so publishing directly on Google Play isn't straightforward. However, there are emerging options: the Skip framework transpiles SwiftUI to Kotlin/Jetpack Compose, and Swift's cross-compilation support is improving. This guide covers realistic approaches to bringing a Swift-based app to Android, along with when it makes sense to rewrite instead.
Prerequisites
- An existing Swift/SwiftUI iOS app
- A Google Play Developer account ($25 one-time fee)
- Familiarity with Kotlin/Jetpack Compose (for Skip approach)
- Android Studio installed for testing
- Realistic expectations about the effort involved
Step-by-Step Build Process
Evaluate your cross-platform options
Option 1: Use Skip (skip.tools) to transpile SwiftUI to Kotlin/Compose. Option 2: Extract business logic into pure Swift packages and use Swift-to-Kotlin interop. Option 3: Rewrite the UI in Kotlin while sharing a C/C++ core via JNI. Each approach has significant tradeoffs.
Using Skip framework
Skip transpiles SwiftUI views into equivalent Jetpack Compose code. Install Skip via Homebrew (`brew install skiptools/skip/skip`), add Skip dependencies to your Package.swift, and run `skip export` to generate an Android project. Not all SwiftUI APIs are supported.
Build the Android project
Once you have a transpiled or rewritten Android project, open it in Android Studio. Configure the build.gradle files, set the applicationId, and run `./gradlew assembleRelease` to create the release APK/AAB.
Test extensively on Android
Transpiled code often has subtle behavioral differences. Test every screen, interaction, and edge case on multiple Android versions and device sizes. Pay special attention to navigation patterns — iOS and Android conventions differ significantly.
Code Signing & Certificates
Generate Android signing key
Create a keystore using `keytool -genkeypair -v -storetype PKCS12 -keystore upload-key.keystore -alias upload -keyalg RSA -keysize 2048 -validity 10000`. Configure signing in build.gradle. This is completely separate from your Apple certificates.
Enroll in Play App Signing
When uploading your first build, enroll in Google's Play App Signing. This lets Google manage the app signing key while you use a separate upload key.
Store Submission Steps
Create the app in Play Console
Set up a new app in Google Play Console. Choose appropriate categories. Since this is a cross-platform adaptation, ensure the store listing reflects the Android experience, not the iOS one.
Adapt your store listing for Android
Don't just copy iOS screenshots — capture fresh ones from Android devices. Android users expect Material Design patterns. Adapt your description to reference Android-specific features.
Upload and configure release
Upload the signed AAB to the production track (or internal testing first). Complete the data safety form, content rating, and compliance declarations.
Submit for review
Roll out to production after completing all checklist items. Consider a staged rollout given the cross-platform nature of the app.
Common Rejection Reasons & Fixes
App feels like an iOS port
Android users expect Material Design navigation patterns (back button, bottom navigation, etc.). Replace iOS-specific UI patterns like swipe-to-go-back with Android equivalents. Transpiled SwiftUI may retain iOS navigation patterns.
Performance issues on Android
Transpiled or bridged code often runs slower than native Kotlin. Profile the app using Android Studio's profiler. Optimize hot paths and consider rewriting performance-critical sections in Kotlin.
Missing adaptive icon
Android requires adaptive icons (foreground + background layers). Create proper adaptive icon resources in res/mipmap-anydpi-v26/ — don't just use a scaled iOS app icon.
Hardcoded iOS-specific text
Search your codebase for references to 'App Store', 'iPhone', 'iPad', or iOS-specific terminology. Replace with platform-appropriate terms for the Android version.
Pro Tips
- Skip framework is the most promising option but is still maturing — evaluate carefully before committing
- If your app is complex, consider a native Kotlin rewrite — it may be faster than fighting cross-compilation issues
- Share business logic via a Kotlin Multiplatform approach if starting fresh
- Keep platform-specific UI code separate from shared business logic for easier maintenance
- Consider whether Google Play publication is worth the effort — some apps are best as iOS-only
Skip the hassle. Let us handle it.
Publishing a Swift/SwiftUI app on the Google Play (Android) involves dozens of steps, certificates, and potential rejection pitfalls. Our team handles the entire process for you — from build configuration to store approval.