Começando com Flutter: Instalação no MacOs
Instalar o Flutter no macOS é o primeiro passo para criar aplicações multiplataforma com Flutter e Dart, porque o Mac é o único sistema que compila apps para Android e iOS na mesma máquina. Este artigo faz parte de uma série sobre os passos iniciais com Flutter e mostra a instalação e a configuração completa dos ambientes Android e iOS.
Ao longo do texto, você vai preparar o Xcode, o Android Studio e o Visual Studio Code. Em seguida, vai colocar o SDK no PATH, criar emuladores e rodar o primeiro app em um dispositivo real.
O que você precisa para o Flutter no macOS
Para utilizar o Flutter no macOS, você precisa de uma versão de 64 bits do sistema e de cerca de 700 MB de espaço livre em disco. Esse número, porém, considera apenas o SDK.
Ele não inclui as máquinas virtuais do Android, os simuladores do iOS nem os outros SDKs necessários. Por isso, vale planejar o espaço do Flutter no macOS antes de começar.
Espaço em disco na prática
Como referência, em uma máquina nova e limpa, todo o conteúdo instalado ocupava 83 GB de disco. Esse total inclui ferramentas obrigatórias e também programas do dia a dia de quem produz conteúdo.
A lista abaixo mostra o que estava instalado nessa máquina. Os itens em negrito são os obrigatórios para o desenvolvimento:
- Adobe Photoshop
- Apple iMovie
- Apple GarageBand
- TechSmith Camtasia
- OBS Studio
- Microsoft Office (Excel, PowerPoint, Word, Teams, OneNote, Outlook e OneDrive)
- Entretenimento (Spotify, WhatsApp e Telegram)
- Visual Studio Code
- Chrome
- Hyper (com Zsh)
- Xcode
- Android Studio
Além desses programas, o ambiente tinha uma máquina virtual Android com o perfil do Google Pixel 2 XL. Também havia um iOS Simulator configurado como iPhone XR.
Esse número serve apenas como base para um ambiente completo. Na prática, ele varia bastante de acordo com a quantidade de simuladores que você pretende manter.
Um simulador de iPad, por exemplo, passa de 5 GB. Então, se o espaço estiver curto, remova os simuladores que você não usa mais.
Outra dica é usar um disco externo, já que é difícil ampliar o armazenamento dos MacBooks, iMacs e Mac minis mais recentes. Um SSD externo como o Samsung T5, ligado via USB-C ou Thunderbolt, entrega velocidade suficiente para rodar até outro sistema operacional sem perda perceptível de desempenho.
Ferramentas necessárias
A recomendação aqui é instalar o Xcode, o Android Studio e o Visual Studio Code. Pode parecer estranho, já que o VS Code é mais simples e leve para o dia a dia.
No entanto, o Android Studio e o Xcode já configuram muita coisa sozinhos ou oferecem assistentes para isso. Dá para fazer tudo manualmente, mas o processo fica bem mais trabalhoso.
Além disso, o Flutter depende de alguns utilitários de linha de comando:
- bash
- curl
- git 2.x
- mkdir
- rm
- unzip
- which
No Flutter no macOS, o único item que pode não vir instalado é o Git. Nesse caso, baixe o instalador no site oficial do Git ou siga o guia de instalação e configuração do Git e do GitHub.
Xcode para o Flutter no macOS
O Xcode é a peça que permite ao Flutter no macOS compilar e assinar apps para iOS. Você instala o Xcode direto pela App Store, sem nenhum segredo.
Depois da instalação, abra o Xcode e aceite as licenças. Como alternativa, execute os comandos abaixo no terminal:
# Aponta as ferramentas de linha de comando para o Xcode instalado
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
# Abre o termo de licença para leitura e aceite
sudo xcodebuild -license
O primeiro comando define qual instalação do Xcode o terminal deve usar. Já o segundo exibe o termo de licença, que você precisa aceitar para compilar qualquer projeto.
A documentação atual do Flutter também sugere rodar xcodebuild -runFirstLaunch logo depois. Esse comando instala os componentes adicionais que o Xcode pede na primeira execução.
Instalação do Android Studio
Acesse a página oficial do Android Studio e faça o download do instalador. Em seguida, abra o pacote baixado e arraste o aplicativo para a pasta Applications.
Na primeira execução, o assistente de configuração pergunta se você deseja importar configurações anteriores. Depois, ele guia você pela escolha do tipo de instalação.
Percorrendo esse caminho, você chega à tela final do assistente:
Clique em Finish e pronto, o Android Studio está instalado e preparado para o Flutter no macOS.
Como instalar o Flutter no macOS
Acesse a página de instalação do Flutter e baixe o SDK para macOS. Depois, extraia o conteúdo para uma pasta da sua escolha.
A sugestão é criar uma pasta chamada development dentro da sua pasta de usuário. Assim, o SDK fica em um lugar fácil de encontrar e fora das pastas do sistema.
O resultado final fica assim:
Se preferir o terminal, a extração pode ser feita com o unzip. Por exemplo:
# Cria a pasta de desenvolvimento e extrai o SDK baixado
mkdir -p ~/development
unzip ~/Downloads/flutter_macos_stable.zip -d ~/development/
O nome do arquivo .zip muda conforme a versão baixada. Portanto, ajuste o caminho de acordo com o arquivo que está na sua pasta Downloads.
Adicionando o Flutter ao PATH no macOS
No passo anterior, você apenas copiou o executável do Flutter para uma pasta. Agora, é preciso torná-lo disponível na linha de comando para criar e rodar aplicações.
A variável PATH lista as pastas onde o terminal procura comandos. Por isso, para o Flutter no macOS funcionar em qualquer terminal, basta acrescentar a pasta bin do SDK a ela.
Terminal com Bash
Se você usa o Bash, crie um arquivo .bash_profile na sua pasta de usuário, caso ele ainda não exista. Uma forma simples é abrir o Visual Studio Code, ir em File > New File e salvar o arquivo na home.
O conteúdo do arquivo deve ser:
# Acrescenta a pasta bin do Flutter ao PATH
export PATH="$PATH:$HOME/development/flutter/bin"
Repare no uso de aspas duplas e da variável $HOME. Com aspas simples, o shell não expande $PATH, e a linha quebraria todos os comandos do terminal.
Terminal com Zsh
Se você usa o Zsh, a única mudança é o arquivo: ele passa a ser o .zshenv em vez do .bash_profile. Desde o macOS Catalina, aliás, o Zsh é o shell padrão do sistema.
Uma boa prática é criar os dois arquivos. Dessa forma, se você trocar de shell no futuro, não precisa configurar tudo de novo.
O conteúdo dos dois arquivos é exatamente o mesmo. A documentação mais recente do Flutter, por sua vez, usa o ~/.zprofile, que também funciona bem.
Validando o Flutter no macOS com o flutter doctor
Faça logout ou reinicie a máquina para que o shell leia o novo PATH. Depois, abra o terminal e digite:
# Verifica a instalação e lista o que ainda falta configurar
flutter doctor
Se tudo correr bem, o Flutter no macOS inicia um checkup completo do ambiente. Não se preocupe com as mensagens em vermelho, porque vamos corrigi-las nas próximas seções.
Configurando o VS Code para o Flutter no macOS
Abra o VS Code, clique no ícone de extensões na barra lateral e digite flutter na busca. Em seguida, instale a extensão oficial, que já traz o suporte ao Dart.
Se ainda não tem o editor instalado, o artigo sobre instalação e customização do Visual Studio Code mostra o processo completo.
Configurando o Android Studio
Abra o Android Studio, clique em Configure > Plugins e instale os plugins do Flutter e do Dart. Assim, o Android Studio também passa a reconhecer os projetos do Flutter no macOS.
Depois, abra o terminal e aceite as licenças do Android SDK com o comando abaixo:
# Aceita as licenças pendentes do Android SDK
flutter doctor --android-licenses
Então, rode o flutter doctor novamente para ver o que ainda falta. Nesse momento, deve faltar apenas um dispositivo conectado.
Emulador Android para o Flutter no macOS
A forma mais rápida de trabalhar é usar uma máquina virtual, chamada carinhosamente de emulador. Você pode ter vários emuladores, cada um com sua versão do Android e do SDK.
Para começar, abra o Android Studio e clique em Configure > AVD Manager. Guarde bem esse caminho, porque é por ele que você abre seus emuladores.
Na primeira tela, clique em Create Virtual Device para exibir a seleção de hardware. Neste exemplo, o dispositivo escolhido foi o Pixel 2.
Na tela seguinte, selecione a imagem do sistema com o SDK desejado:
Depois, aceite os termos e revise as configurações finais:
Tudo pronto, basta iniciar o emulador:
Aproveite e execute o flutter doctor para confirmar que o dispositivo aparece na lista. Além disso, sempre que quiser listar os dispositivos conectados, use o comando abaixo:
# Lista emuladores, simuladores e aparelhos conectados
flutter devices
Configurando o iOS Simulator
Abra o Xcode e navegue até Xcode > Preferences > Components. Nessa tela, você encontra a lista de simuladores disponíveis:
Faça o download do simulador que desejar clicando no botão ao lado dele. Para abrir o simulador instalado, com o Xcode aberto, navegue até Xcode > Open Developer Tool > Simulator.
Também é possível abrir o simulador direto pelo terminal com open -a Simulator. Esse atalho é útil quando você usa o Flutter no macOS apenas pelo VS Code.
Testando o primeiro app Flutter no macOS
Abra um dos emuladores criados anteriormente e deixe-o rodando na tela inicial do sistema. Depois, abra o Visual Studio Code e pressione CMD+SHIFT+P.
Na caixa de comandos, digite flutter e selecione Flutter: New Project. Por fim, escolha o local onde a aplicação deve ser criada.
Se preferir a linha de comando, o resultado é o mesmo com o flutter create:
# Cria um novo projeto Flutter e executa no dispositivo disponível
flutter create my_first_app
cd my_first_app
flutter run
No terminal do VS Code, digite flutter run para executar a aplicação. Como resultado, o app de exemplo com o contador aparece no emulador:
Se houver mais de um dispositivo conectado, o flutter run exige uma opção extra com o ID do dispositivo. Nesse caso, liste os aparelhos e informe o ID desejado:
# Descobre o ID de cada dispositivo
flutter devices
# Executa o app em um dispositivo específico
flutter run -d <device-id>
Para entender o que vem depois da instalação, o artigo Flutter: por onde começar apresenta os próximos passos de estudo.
Rodando em dispositivos Android
Embora os emuladores ajudem bastante, é importante testar as aplicações em aparelhos reais. Com o Flutter no macOS configurado, basta conectar o celular ao Mac.
Ao conectar, o Android exibe a mensagem perguntando se você confia no computador. Confirme a máquina como fonte confiável para liberar a depuração.
O aparelho também precisa estar com o modo desenvolvedor e a depuração USB ativados. Esse processo varia entre fabricantes, então consulte o procedimento do seu modelo.
Com o aparelho conectado, execute novamente o flutter devices. Então, ele deve aparecer na lista.
Rodando o Flutter no macOS em dispositivos iOS
Rodar o Flutter no macOS em um iPhone exige um pouco mais de trabalho. Afinal, a Apple controla de perto a instalação de apps fora da App Store.
Instalando o Homebrew
O Homebrew é um gerenciador de pacotes para o macOS que ajuda bastante neste setup. Ele também serve para instalar outras ferramentas, como o Node.js.
Acesse o site oficial do Homebrew e siga a instrução de instalação. Normalmente, basta colar uma única linha de comando no terminal.
Ferramentas de comunicação com o iOS
Em seguida, reinicie o terminal e execute os comandos abaixo:
# Atualiza a lista de pacotes do Homebrew
brew update
# Ferramentas de comunicação USB com aparelhos iOS
brew install --HEAD usbmuxd
brew link usbmuxd
brew install --HEAD libimobiledevice
brew install ideviceinstaller
# Instalação de apps no aparelho e gerenciador de dependências nativas
brew install ios-deploy cocoapods
pod setup
O usbmuxd e o libimobiledevice cuidam da comunicação USB com o aparelho. Já o ios-deploy instala o app no iPhone, enquanto o CocoaPods gerencia as dependências nativas dos plugins.
Nas versões mais recentes, o Flutter passou a baixar parte dessas ferramentas por conta própria. Por isso, a documentação atual pede apenas o CocoaPods, e o pod setup deixou de ser obrigatório a partir do CocoaPods 1.8.
Conectando o iPhone
Com o setup pronto, conecte o aparelho iOS ao Mac. A mensagem Trust This Computer aparece na tela do iPhone, e você deve tocar em Trust para liberar o acesso.
A partir desse momento, o aparelho aparece na lista quando você executa o flutter devices. Em versões mais novas do iOS, também é preciso ativar o Developer Mode em Ajustes > Privacidade e Segurança.
Assinando o app no Xcode
Ainda falta assinar o app para executá-lo no aparelho. Para isso, você precisa de uma conta de desenvolvedor da Apple, e o Xcode mostra as instruções caso você ainda não tenha uma.
Abra o Xcode e, em seguida, abra o arquivo ios/Runner.xcworkspace do app criado anteriormente.
Clique em Runner na barra lateral e, depois, em Add Account para autenticar com sua conta Apple.
Com a conta autenticada, selecione o time de desenvolvimento, caso tenha mais de um. Assim, o Xcode assina a aplicação automaticamente.
Para finalizar, defina um identificador único para a aplicação, o chamado bundle identifier.
Pronto, agora basta executar o flutter run e ver a aplicação rodando no aparelho iOS.
Conclusão
Com esses passos, o Flutter no macOS fica pronto para compilar apps Android e iOS a partir da mesma base de código. Você instalou o Xcode, o Android Studio e o SDK, configurou o PATH e validou tudo com o flutter doctor.
Além disso, você criou um emulador Android, baixou um simulador iOS e rodou o primeiro app. Por fim, conectou aparelhos reais e assinou a aplicação no Xcode.
Sempre que algo parecer errado, volte ao flutter doctor. Ele continua sendo o melhor diagnóstico do ambiente do Flutter no macOS.
FAQ
Preciso de um Mac para desenvolver com Flutter para iOS?
Sim, porque a compilação e a assinatura de apps iOS dependem do Xcode, que roda apenas no macOS. Em outros sistemas, você desenvolve para Android normalmente.
Quanto espaço em disco o Flutter no macOS ocupa?
O SDK sozinho ocupa algumas centenas de megabytes. Somando Xcode, Android Studio e simuladores, porém, o ambiente completo passa facilmente de dezenas de gigabytes.
Por que o comando flutter não é encontrado no terminal?
Normalmente, a pasta bin do SDK não está no PATH ou o shell não releu o arquivo de perfil. Confira o caminho no .zshenv ou no .bash_profile e abra um novo terminal.
Preciso pagar a conta de desenvolvedor da Apple para testar no iPhone?
Para testar no seu próprio aparelho, uma Apple ID gratuita já permite assinar o app. A conta paga só é necessária para publicar na App Store.
Posso usar apenas o VS Code, sem abrir o Android Studio?
Sim, o desenvolvimento diário funciona bem só no VS Code. Mesmo assim, o Android Studio continua útil para baixar o SDK e gerenciar os emuladores.