para - Fallo de segmentación del emulador de Android
genymotion (5)
En mi sistema Ubuntu 12.04, resolví este problema asegurándome de que "Usar Host GPU" no estaba activado en la configuración de AVD.
Ejecutarlo desde la línea de comando dio como resultado un error de segmentación:
$ emulator -avd nexus_s
Segmentation fault (core dumped)
Sin embargo, ejecutar el brazo emulador directamente de la siguiente manera, funciona bien.
$ emulator-arm -avd nexus_s
Sospecho que está intentando ejecutar la versión mips o x86 del emulador. ¿Hay una manera de configurar el emulador que ejecutable iniciar?
Todo esto comenzó después de actualizar a Android sdk 17.
Al agregar el indicador -verbose se obtiene la siguiente salida (que no creo que agregue ninguna información):
$ emulator -verbose -avd nexus_s
emulator: found SDK root at /opt/sdk
emulator: Android virtual device file at: /home/grebulon/.android/avd/nexus_s.ini
emulator: virtual device content at /home/grebulon/.android/avd/nexus_s.avd
emulator: virtual device config file: /home/grebulon/.android/avd/nexus_s.avd/config.ini
emulator: using core hw config path: /home/grebulon/.android/avd/nexus_s.avd/hardware-qemu.ini
emulator: Found AVD target API level: 17
emulator: ''magic'' skin format detected: 480x800
emulator: autoconfig: -skin 480x800
emulator: autoconfig: -skindir (null)
emulator: keyset loaded from: /home/grebulon/.android/default.keyset
emulator: found magic skin width=480 height=800 bpp=16
emulator: autoconfig: -kernel /opt/sdk/system-images/android-17/armeabi-v7a//kernel-qemu
emulator: autoconfig: -ramdisk /opt/sdk/add-ons/addon-google_apis-google-17/images/armeabi-v7a//ramdisk.img
emulator: Using initial system image: /opt/sdk/add-ons/addon-google_apis-google-17/images/armeabi-v7a//system.img
emulator: autoconfig: -data /home/grebulon/.android/avd/nexus_s.avd/userdata-qemu.img
emulator: autoconfig: -initdata /home/grebulon/.android/avd/nexus_s.avd/userdata.img
emulator: autoconfig: -cache /home/grebulon/.android/avd/nexus_s.avd/cache.img
emulator: Physical RAM size: 343MB
Content of hardware configuration file:
hw.cpu.arch = arm
hw.cpu.model = cortex-a8
hw.ramSize = 343
hw.screen = touch
hw.mainKeys = yes
hw.trackBall = no
hw.keyboard = no
hw.keyboard.lid = no
hw.keyboard.charmap = qwerty2
hw.dPad = no
hw.gsmModem = yes
hw.gps = yes
hw.battery = no
hw.accelerometer = yes
hw.audioInput = yes
hw.audioOutput = yes
hw.sdCard = yes
disk.cachePartition = yes
disk.cachePartition.path = /home/grebulon/.android/avd/nexus_s.avd/cache.img
disk.cachePartition.size = 66m
hw.lcd.width = 480
hw.lcd.height = 800
hw.lcd.depth = 16
hw.lcd.density = 240
hw.lcd.backlight = yes
hw.gpu.enabled = yes
hw.camera.back = none
hw.camera.front = none
vm.heapSize = 32
hw.sensors.proximity = yes
hw.sensors.magnetic_field = yes
hw.sensors.orientation = yes
hw.sensors.temperature = yes
kernel.path = /opt/sdk/system-images/android-17/armeabi-v7a//kernel-qemu
kernel.parameters = android.checkjni=1
disk.ramdisk.path = /opt/sdk/add-ons/addon-google_apis-google-17/images/armeabi-v7a//ramdisk.img
disk.systemPartition.initPath = /opt/sdk/add-ons/addon-google_apis-google-17/images/armeabi-v7a//system.img
disk.systemPartition.size = 200m
disk.dataPartition.path = /home/grebulon/.android/avd/nexus_s.avd/userdata-qemu.img
disk.dataPartition.size = 209m
avd.name = nexus_s
.
QEMU options list:
emulator: argv[00] = "/opt/sdk/tools/emulator64-arm"
emulator: argv[01] = "-android-hw"
emulator: argv[02] = "/home/grebulon/.android/avd/nexus_s.avd/hardware-qemu.ini"
Concatenated QEMU options:
/opt/sdk/tools/emulator64-arm -android-hw /home/grebulon/.android/avd/nexus_s.avd /hardware-qemu.ini
emulator: registered ''boot-properties'' qemud service
emulator: nand_add_dev: system,size=0xc800000,initfile=/opt/sdk/add-ons/addon-google_apis-google-17/images/armeabi-v7a//system.img
emulator: mapping ''system'' NAND image to /tmp/android-grebulon/emulator-RSuUtb
emulator: rounding devsize up to a full eraseunit, now c810000
emulator: nand_add_dev: userdata,size=0xd100000,file=/home/grebulon/.android/avd/nexus_s.avd/userdata-qemu.img
emulator: rounding devsize up to a full eraseunit, now d116000
emulator: registered ''boot-properties'' qemud service
emulator: Adding boot property: ''dalvik.vm.heapsize'' = ''32m''
emulator: Adding boot property: ''qemu.sf.lcd_density'' = ''240''
emulator: Adding boot property: ''qemu.hw.mainkeys'' = ''1''
emulator: Adding boot property: ''qemu.sf.fake_camera'' = ''none''
emulator: nand_add_dev: cache,size=0x4200000,file=/home/grebulon/.android/avd/nexus_s.avd/cache.img
emulator: Initializing hardware OpenGLES emulation support
Segmentation fault (core dumped)
Finalmente encontré una solución después de seguir la sugerencia de CommonsWare. Cambiar el nombre de libOpenglRender.so hizo que el problema desapareciera.
mv tools/lib/libOpenglRender.so tools/lib/libOpenglRender.so.xxx
Si no encuentra la respuesta aquí, debe suscribirse a:
- Problema 34233: el inicio del emulador produce un error de segmentación después de actualizar a r20
- Problema 55325: el emulador se bloquea con segfault
- Problema 20952: Emulador segfault en el inicio (no relacionado con el audio)
Allí recibirá actualizaciones sobre este problema y encontrará algunas soluciones (como cambiar el nombre de los archivos lib *. *).
Tipo de comando
$ emulator-arm @nexus_s
Espero que esto ayude :-)
Tuve el mismo problema en Debian Wheezy. El tipo de respuesta de Grebulon funcionó para mí, sin embargo, el emulador fue muy lento, así que me propuse arreglarlo de la manera correcta (tm).
En este caso, la Segmentation fault
probablemente indica problemas con OpenGL. (tenga en cuenta que la última línea de registro es "emulador: inicialización del soporte de emulación de OpenGLES del hardware")
En mi caso, la búsqueda de ''GL'' a través de /var/log/Xorg.0.log
mostró algún controlador NVidia GLX (de la tarjeta de video antigua que fue al cielo digital). Dado el hecho de que tengo AMD Radeon, desinstalé todos los paquetes con ''nvidia'' (lista: apt-get search nvidia | grep ^i
) e instalé:
# apt-get install libgl1-fglrx-glx
Después de reiniciar, el emulador se quejó de la ausencia de libOpenglRender.so
y libGL.so
, que resolví de la siguiente manera:
# echo "/opt/adt/sdk/tools/lib" > /etc/ld.so.conf.d/android_stuff.conf
# ldconfig
# cd /opt/adt/sdk/tools/lib
# ln -s /usr/lib/x86_64-linux-gnu/libGL.so.1 libGL.so
Tenga en cuenta que mi situación es probablemente única (los problemas comenzaron cuando pasé de NVidia a AMD), pero la raíz del problema es probablemente similar (OpenGL). Espero que esto ayude a alguien.
ACTUALIZACIÓN: aún no funciona, parece que mis controladores no admiten colores de 16 bits en OpenGL ... investigará más a fondo.