it-swarm.com.de

Android-Emulator-Segmentierungsfehler

Das Ausführen von der Befehlszeile aus führte zu einem Segmentierungsfehler:

$ emulator -avd nexus_s
Segmentation fault (core dumped)

Wenn Sie den Emulatorarm direkt wie folgt ausführen, funktioniert dies einwandfrei.

$ emulator-arm -avd nexus_s

Ich vermute, es wird versucht, die Mips- oder x86-Version des Emulators auszuführen. Gibt es eine Möglichkeit, den Emulator zu konfigurieren, welche Programmdatei gestartet werden soll?

Alles begann mit einem Update auf Android SDK 17.

Das Hinzufügen des -verbose-Flags ergibt die folgende Ausgabe (die meiner Meinung nach keine Informationen hinzufügt):

$ 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)
20
grebulon

Nachdem ich dem CommonsWare-Tipp gefolgt war, fand ich schließlich eine Lösung. Umbenennen von libOpenglRender.so hat das Problem beseitigt.

mv tools/lib/libOpenglRender.so tools/lib/libOpenglRender.so.xxx
24
grebulon

Auf meinem Ubuntu 12.04-System habe ich dieses Problem gelöst, indem sichergestellt wurde, dass "Host-GPU verwenden" in der AVD-Konfiguration nicht aktiviert ist. 

2
lilbyrdie

Geben Sie den Befehl ein

$ emulator-arm @nexus_s

Hoffe das hilft :-)

1
Arif Ahsan

Wenn Sie hier keine Antwort finden, sollten Sie folgendes abonnieren:

  1. Problem 34233: Emulator-Start führt nach Upgrade auf r20 zu Segmentierungsfehler
  2. Ausgabe 55325: Emulator stürzt mit Segfault ab
  3. Ausgabe 20952: Emulator segfault beim Start (nicht in Bezug auf Audio)

Dort erhalten Sie Updates zu diesem Problem und finden einige Problemumgehungen (wie das Umbenennen von lib *. * -Dateien).

0
warmth

das Löschen von Daten und das Kaltstartgerät durch Android Studio lösten dieses Problem in Ubuntu 16.04

0
Mukundhan

Ich hatte das gleiche Problem bei Debian Wheezy. Die Antwort des Grebulons hat irgendwie für mich funktioniert, aber der Emulator war langsam, also machte ich mich daran, es The Right Way (tm) zu reparieren.

In diesem Fall weist Segmentation fault wahrscheinlich auf Probleme mit OpenGL hin. (Beachten Sie, dass die letzte Zeile des Protokolls "Emulator: Hardware-OpenGLES-Emulationsunterstützung initialisieren" ist).

In meinem Fall zeigte die Suche nach 'GL' durch /var/log/Xorg.0.log einige NVidia GLX-Treiber (von der alten Grafikkarte, die in den digitalen Himmel ging). Angesichts der Tatsache, dass ich AMD Radeon habe, habe ich jedes Paket mit 'nvidia' deinstalliert (liste: apt-get search nvidia | grep ^i) und Folgendes installiert:

# apt-get install libgl1-fglrx-glx

Nach dem Neustart klagte der Emulator über fehlende libOpenglRender.so und libGL.so, die ich wie folgt gelöst habe:

# 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

Beachten Sie, dass meine Situation wahrscheinlich einzigartig ist (Probleme begannen, als ich von NVidia zu AMD wechselte), aber die Wurzel des Problems ist wahrscheinlich ähnlich (OpenGL). Ich hoffe es hilft jemandem.

UPDATE: funktioniert immer noch nicht, es sieht so aus, als ob meine Treiber 16-Bit-Farben in OpenGL nicht unterstützen ... wird dies weiter untersuchen.

0
johndodo