Glr eu tava com problemas em rodar o Android Studio no meu dell g15 5530 no ubuntu, tava tando incompatibilidade com Nvidia + Intel ai tava tudo travado, apos eu arruamar eu pedi para o Claude preparar um texto explicando o problema ai eu to enviando para voces para caso tiverem o mesmo BO Android Studio — Emulador no Dell G15 5530 (Ubuntu + Intel/NVIDIA)
Problema
O emulador Android (AVD) travava ou crashava ao iniciar no Ubuntu com sistema gráfico híbrido Intel + NVIDIA RTX 3050. O erro principal era:
Failed to create context (EGL_NO_CONTEXT result)
Emulator terminated with exit code 139 (segfault)
Diagnóstico feito
1. GPU ativa no sistema
glxinfo | grep "OpenGL renderer"
# Resultado: Mesa Intel(R) Graphics (RPL-S) ✓
nvidia-smi
# Resultado: Driver 580.126.09 instalado, RTX 3050 ativa mas não renderizando
Conclusão: Intel renderizando o desktop, NVIDIA ligada sem fazer trabalho gráfico (pior dos dois mundos).
2. Modo PRIME
prime-select query
# Resultado: on-demand ✓
3. Sessão gráfica
echo $XDG_SESSION_TYPE
# Resultado: x11 ✓ (mais compatível com NVIDIA)
4. KVM (virtualização para o emulador)
kvm-ok
# Resultado: KVM acceleration can be used ✓
groups $USER | grep kvm
# Resultado: (vazio) ← PROBLEMA! Usuário sem permissão de acesso ao KVM
Correções aplicadas
Correção 1 — Adicionar usuário ao grupo KVM
sudo usermod -aG kvm $USER
# Fazer logout e login para aplicar
Verificar:
groups | grep kvm
# Deve aparecer "kvm" na lista
Correção 2 — Limpar snapshot corrompido do AVD
O emulador tentava carregar um snapshot inválido e crashava:
rm -rf ~/.android/avd/Pixel_7.avd/snapshots/
Correção 3 — Rodar o emulador com GPU software (swiftshader)
O modo -gpu host causava segfault por conflito entre Intel/NVIDIA no sistema híbrido. A primeira solução estável foi usar swiftshader_indirect:
VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/intel_icd.x86_64.json \
ANDROID_EMU_VK_ICD=/usr/share/vulkan/icd.d/intel_icd.x86_64.json \
~/Android/Sdk/emulator/emulator -avd Pixel_7 -gpu swiftshader_indirect -no-snapshot
Funciona, mas é lento pois usa renderização por software puro.
Correção 4 — Melhorar performance com LLVMpipe (lvp)
O emulador possui internamente o ICD lvp (LLVMpipe), que é um backend Vulkan por software mais rápido que o swiftshader. O truque é apontar VK_ICD_FILENAMES para o ICD interno do próprio emulador em vez do sistema:
VK_ICD_FILENAMES=~/Android/Sdk/emulator/lib64/vulkan/lvp_icd.json \
~/Android/Sdk/emulator/emulator -avd Pixel_7 -gpu host -no-snapshot
Isso resolve o VK_ERROR_INCOMPATIBLE_DRIVER porque o emulador passa a usar um ICD compatível com sua própria libvulkan.so interna, e o -gpu host consegue inicializar corretamente.
Por que não usar o Vulkan da NVIDIA ou Intel diretamente?
O emulador carrega sua próprialibvulkan.sodelib64/vulkan/, ignorando o Vulkan do sistema mesmo comLD_PRELOADouVK_ICD_FILENAMESapontando para fora. O único jeito de influenciar qual ICD ele usa é apontar para um ICD compatível com a lib interna dele — que é exatamente olvp_icd.jsondentro da mesma pasta.
Comando final funcional (recomendado)
VK_ICD_FILENAMES=~/Android/Sdk/emulator/lib64/vulkan/lvp_icd.json \
~/Android/Sdk/emulator/emulator -avd <NOME_DO_AVD> -gpu host -no-snapshot
Substitua <NOME_DO_AVD> pelo nome do seu AVD (ex: Pixel_7).
Alternativa mais lenta (caso o comando acima falhe):
VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/intel_icd.x86_64.json \
ANDROID_EMU_VK_ICD=/usr/share/vulkan/icd.d/intel_icd.x86_64.json \
~/Android/Sdk/emulator/emulator -avd <NOME_DO_AVD> -gpu swiftshader_indirect -no-snapshot
Script de atalho (opcional)
Para não precisar digitar o comando toda vez, crie um script:
nano ~/emulator.sh
Conteúdo:
#!/bin/bash
AVD=${1:-Pixel_7}
VK_ICD_FILENAMES=~/Android/Sdk/emulator/lib64/vulkan/lvp_icd.json \
~/Android/Sdk/emulator/emulator -avd "$AVD" -gpu host -no-snapshot
Tornar executável:
chmod +x ~/emulator.sh
Usar:
~/emulator.sh # usa Pixel_7 por padrão
~/emulator.sh Pixel_8 # usa outro AVD
Resumo das causas
| Causa | Impacto | Solução |
|---|---|---|
Usuário fora do grupo kvm |
Emulador lento (sem aceleração de hardware) | sudo usermod -aG kvm $USER |
| Snapshot corrompido | Crash imediato ao iniciar | rm -rf ~/.android/avd/*.avd/snapshots/ |
Conflito Intel/NVIDIA com -gpu host |
Segfault (exit code 139) | Usar -gpu swiftshader_indirect como fallback |
| Emulador ignora Vulkan do sistema | VK_ERROR_INCOMPATIBLE_DRIVER, crash |
Usar lvp_icd.json interno do emulador |
| swiftshader lento | Emulador usável mas devagar | Trocar para lvp_icd.json com -gpu host |
Ambiente
- Notebook: Dell G15 5530
- GPU integrada: Intel Graphics (RPL-S)
- GPU dedicada: NVIDIA GeForce RTX 3050 6GB Laptop
- Driver NVIDIA: 580.126.09
- Sistema: Ubuntu (X11)
- PRIME mode: on-demand
- Android Studio: versão com emulador 36.4.10.0
- AVD: Pixel 7 — Android 34 — Google Play — x86_64