Dica importante se você precisa do
macOS para testar a sua aplicação, ou se você precisa criar uma build
react native para o
iOS mas não possui um Macbook. Ou ainda se você é curioso e nunca usou o sistema operacional da
Apple.
Antes de tudo, precisamos instalar o
Docker, o
qemu, e o
kvm na máquina.
Para o
Ubuntu e derivados:
Quanto ao qemu e o kvm:
Arch
Linux:
sudo pacman -S qemu libvirt dnsmasq virt-manager bridge-utils flex bison ebtables edk2-ovmf
Ubuntu/Debian:
sudo apt install qemu qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils virt-manager
CentOS/RHEL/Fedora:
sudo yum install libvirt qemu-kvm -y
Habilite os serviços necessários pelo systemd:
sudo systemctl enable libvirtd.service
sudo systemctl enable virtlogd.service
Adicione o seu usuário no grupo docker, libvirt-qemu, e qemu-kvm:
sudo usermod -a -G docker,kvm,libvirt-qemu $USER
Reinicie o sistema.
Com o docker instalado e funcionando, podemos criar um contêiner com o macOS com o seguinte comando:
docker run --name macos -e RAM=4 -p 50922:10022 --privileged -e "DISPLAY=${DISPLAY:-:0.0}" -v /tmp/.X11-unix:/tmp/.X11-unix sickcodes/docker-osx:latest
No parâmetro "-e RAM=4" é especificado a quantidade de RAM para a máquina virtual.
Após o download da imagem e a criação do contêiner através do comando acima, vai abrir uma janela com a tela de boot do macOS.
1. Selecione o macOS Base System.
2. Escolha o Disk Utility.
3. Selecione o maior disco qemu (aproximadamente 200GB) e escolha erase.
4. Feche o Disk Utility e selecione a opção "Reinstall macOS".
Aguarde um longo período até que o SO seja instalado.
No vídeo abaixo demonstro uma aplicação rodando com expo (react native) para iOS usando essa configuração:
Algumas observações:
- A porta 50922 é utilizada para liberar o acesso SSH para o macOS. Ou seja, se preferir utilizar apenas o ecossistema Unix do macOS através do terminal do Linux, essa opção pode ser útil, visto que usar o macOS com teclado ABNT2 é complicado e sempre tem problema.
Para acessar com SSH, é necessário habilitar o acesso remoto nas configurações de compartilhamento no macOS antes. Depois, basta usar o comando abaixo:
ssh nomecompleto@localhost -p 50922
Onde "nomecompleto" é o seu username definido na instalação do macOS.
- Se for utilizar o Xcode e o Simulator (emulador de iPhone), recomendo ter pelo menos 12GB de RAM. O macOS não permite rodar o Simulator com menos de 5GB de RAM.
Para mais detalhes, como alterar a quantidades de core, o tamanho do disco, entre outros, consulte o repositório do projeto: