Visão geral para dispositivos móveis
Crie aplicativos para iOS e Android usando a mesma base de código Go do seu aplicativo para desktop
O Wails v3 é executado no iOS e no Android usando o mesmo main.go e o mesmo frontend que você já desenvolve para desktop. Não há um projeto separado para dispositivos móveis, uma ponte para compartilhamento de código nem a necessidade de reescrever o código: o binário Go é compilado para a plataforma móvel de destino, e uma WebView nativa renderiza o frontend existente.
Host WKWebView + UIKit. Os recursos são servidos por meio de um esquema wails:// personalizado — sem portas abertas. Requer macOS com a instalação completa do Xcode.
Android WebView + WebViewAssetLoader. O código Go é compilado como libwails.so por meio do NDK. Funciona no macOS, Linux e Windows.
Veja em execução: exemplo Kitchen Sink
A melhor maneira de entender o que é possível fazer é conferir o Kitchen Sink — um único aplicativo Wails que, a partir de uma só base de código, é executado de forma idêntica no iOS, Android e desktop:
| Aba | Plataformas | O que demonstra |
|---|---|---|
| Bindings | todas | Chamadas de serviços JS → Go que retornam valores, structs e erros |
| Eventos | todas | Relógio Go → JS, ping/pong JS → Go → JS e eventos do sistema operacional (bateria, rede e tema) |
| Caixas de diálogo | todas | Caixas de diálogo de mensagem nativas em cada plataforma |
| Sistema | todas | Área de transferência, métricas da tela e informações do dispositivo |
| Dispositivos móveis | iOS + Android | Menu de compartilhamento, manutenção da tela ativa, lanterna, brilho, biometria, notificações locais e armazenamento seguro |
| Hardware | iOS + Android | Resposta tátil, geolocalização, acelerômetro, proximidade e conversão de texto em fala |
| Nativo | iOS + Android | iOS: resposta tátil + controles para ativar ou desativar opções da WKWebView · Android: vibração + toast |
Para executá-lo por conta própria:
git clone https://github.com/wailsapp/wails.git
cd wails/v3/examples/mobile
wails3 task ios:run # iOS Simulator (macOS + Xcode required)
wails3 task android:run # Android Emulator
wails3 task run # Desktop
Como funciona
O mesmo modelo de aplicativo se aplica a todas as plataformas:
- Backend Go — seus serviços, handlers de eventos e lógica do aplicativo são compilados sem alterações para
GOOS=ioseGOOS=android. - Frontend — exatamente o mesmo HTML/JS/CSS. O pacote
@wailsio/runtimefunciona de forma idêntica; bindings de serviços, eventos, caixas de diálogo e a área de transferência são todos encaminhados pelo mesmo transporte dentro do processo. - Host da WebView — no iOS, uma
WKWebViewdentro de umUIViewController; no Android, umaWebViewdentro de umaActivity. O Wails configura automaticamente a ponte de mensagens. - Fornecimento de recursos dentro do processo — os recursos são servidos diretamente da memória do Go, e não por um servidor localhost. Sem portas abertas, sem loopback e sem latência adicional.
O comportamento específico de cada plataforma fica em arquivos protegidos por //go:build ios ou //go:build android, mantendo limpo o código compartilhado.
Visão geral dos pré-requisitos
| Requisito | iOS | Android |
|---|---|---|
| Sistema operacional | Somente macOS | macOS, Linux, Windows |
| Conjunto de ferramentas | Instalação completa do Xcode (não apenas as ferramentas de linha de comando) | Android SDK + NDK 26.3.x + JDK |
| Go | 1.25+ | 1.25+ |
| npm | ✅ | ✅ |
| Verifique com | wails3 doctor |
wails3 doctor |
O que é compatível
As duas plataformas compartilham o mesmo conjunto principal de recursos:
| Recurso | iOS | Android |
|---|---|---|
| Vinculações de serviços (JS → Go) | ✅ | ✅ |
| Eventos (em ambas as direções) | ✅ | ✅ |
| Caixas de diálogo de mensagem | ✅ UIAlertController | ✅ AlertDialog |
| Caixas de diálogo para abrir arquivos | ✅ UIDocumentPicker | ✅ Storage Access Framework |
| Caixas de diálogo para salvar arquivos | ❌ grave na sandbox em vez disso | ❌ grave na sandbox em vez disso |
| Área de transferência | ✅ UIPasteboard | ✅ ClipboardManager |
| Métricas de tela/área segura | ✅ | ✅ |
| Eventos do ciclo de vida | ✅ events.IOS.* |
✅ events.Android.* |
| Resposta tátil | ✅ IOS.Haptics.* |
✅ Android.Haptics.Vibrate |
| Informações do dispositivo | ✅ IOS.Device.Info() |
✅ Android.Device.Info() |
| Abas nativas (iOS) | ✅ UITabBar | — |
| Mensagens toast (Android) | — | ✅ Android.Toast.Show |
| Várias janelas | ❌ apenas a primeira janela | ❌ apenas a primeira janela |
| Geometria da janela/menus/bandeja do sistema | operações nulas intencionais | operações nulas intencionais |
Regras de tags de compilação
Duas regras importantes para escrever código condicional por plataforma:
iosimplicadarwin— um arquivo com a tag//go:build darwintambém será compilado para iOS. Para direcionar apenas ao macOS, use//go:build darwin && !ios.androidimplicalinux— um arquivo com a tag//go:build linuxtambém será compilado para Android. Para direcionar apenas ao Linux para desktop, use//go:build linux && !android.
Em tempo de execução, runtime.GOOS retorna "ios" e "android", respectivamente.
Detecção da plataforma em tempo de execução
As tags de compilação destinam-se a código que só pode ser compilado em determinada plataforma. Para ramificações comuns em código compartilhado, use application.System — ele está disponível em todas as compilações (sem necessidade de tags de compilação), portanto o mesmo arquivo funciona em qualquer plataforma:
import "github.com/wailsapp/wails/v3/pkg/application"
if application.System.IsMobile() {
// iOS or Android
} else if application.System.IsDesktop() {
// macOS, Windows or Linux
}
// Or test a single target directly:
if application.System.IsPlatform(application.PlatformIOS) {
// iOS only
}Disponíveis: IsMobile(), IsDesktop(), IsServer() (a tag de compilação server) e IsPlatform(application.PlatformMacOS | PlatformWindows | PlatformLinux | PlatformIOS | PlatformAndroid | PlatformServer).
O frontend tem as funções auxiliares correspondentes em @wailsio/runtime:
import { System } from "@wailsio/runtime";
if (System.IsMobile()) { /* iOS or Android */ }
if (System.IsIOS()) { /* … */ } // also IsAndroid, IsMac, IsWindows, IsLinux, IsDesktopPróximas etapas
Pegue um aplicativo Wails para desktop e execute-o no iOS Simulator ou no Android Emulator em poucos minutos.
Configuração completa da cadeia de ferramentas do iOS, simulador, compilações para dispositivos, assinatura, configuração e referência da API.
Configuração completa do SDK/NDK do Android, emulador, assinatura de APKs, empacotamento para a Play Store e referência da API.