Dell G15 5530 Android Studio Lento Ubuntu

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ópria libvulkan.so de lib64/vulkan/, ignorando o Vulkan do sistema mesmo com LD_PRELOAD ou VK_ICD_FILENAMES apontando para fora. O único jeito de influenciar qual ICD ele usa é apontar para um ICD compatível com a lib interna dele — que é exatamente o lvp_icd.json dentro 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