Mobile Support
Mobile support in Wails v3 is currently EXPERIMENTAL. The API and build process may change significantly before the final release. Use at your own risk in production environments.
Wails v3 introduces experimental support for building native mobile applications for iOS and Android platforms. This allows you to use the same Go codebase and web frontend across desktop and mobile platforms.
Overview
Mobile support enables you to build native iOS and Android applications using:
- Go for business logic and services
- Web technologies (HTML/CSS/JavaScript) for the UI
- Native WebView components for rendering
Architecture
| Platform | WebView | Bridge Technology | Build Output |
|---|---|---|---|
| iOS | WKWebView | CGO (C headers) | .app / .ipa |
| Android | Android WebView | JNI | .apk |
Prerequisites
iOS Development
iOS development requires macOS with Xcode installed.
- macOS 12.0 or later
- Xcode 14.0 or later
- Go 1.21+ with CGO support
- iOS SDK (included with Xcode)
Android Development
Android development is supported on macOS, Linux, and Windows.
Required Components:
- Go 1.21+ with CGO support
- Android SDK with:
- Platform Tools (adb)
- Build Tools
- Android Emulator (optional, for testing)
- Android NDK r26d or later
- Java JDK 11+
Environment Setup
Android Environment Variables
Add these to your shell profile (~/.bashrc, ~/.zshrc, etc.):
# macOS
export ANDROID_HOME="$HOME/Library/Android/sdk"
# Linux
export ANDROID_HOME="$HOME/Android/Sdk"
# NDK (adjust version as needed)
export ANDROID_NDK_HOME="$ANDROID_HOME/ndk/29.0.14206865"
# Add tools to PATH
export PATH=$PATH:$ANDROID_HOME/platform-tools
export PATH=$PATH:$ANDROID_HOME/emulator
Installing Android SDK
You can install the Android SDK through:
- Android Studio (easiest method - includes all tools)
- Command line tools from developer.android.com
After installing, use SDK Manager to install:
- Android SDK Platform (API 34 or later)
- Android SDK Build-Tools
- Android NDK (if not already included)
Building for Mobile
iOS Build
# Build for iOS
task ios:build
# Build and run on simulator
task ios:run
# Build for device (requires code signing)
task ios:build:device
The build process will:
- Compile Go code as a static library (
.afile) - Generate Xcode project
- Build the app using
xcodebuild - Create an
.appbundle (or.ipafor distribution)
Android Build
# Build for Android (default: arm64 for device)
task android:build
# Build for emulator (x86_64)
task android:build ARCH=x86_64
# Build for all architectures
task android:compile:go:all-archs
# Package APK
task android:package
# Run on emulator/device
task android:run
# View logs
task android:logs
The build process will:
- Compile Go code as a shared library (
.sofile) - Build Java/Kotlin code using Gradle
- Package everything into an APK