L'exécuter à partir de la ligne de commande a entraîné une erreur de segmentation:
$ emulator -avd nexus_s
Segmentation fault (core dumped)
Cependant, exécuter emulator-arm directement comme suit fonctionne correctement.
$ emulator-arm -avd nexus_s
Je soupçonne qu’il essaie d’exécuter la version mips ou x86 de l’émulateur. Y at-il un moyen de configurer l’émulateur avec lequel l’exécutable doit démarrer?
Tout cela a commencé après la mise à jour vers Android sdk 17.
L'ajout de l'indicateur -verbose donne la sortie suivante (qui, à mon avis, n'ajoute aucune information):
$ 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)
J'ai finalement trouvé une solution après avoir suivi le conseil de CommonsWare. Le fait de renommer libOpenglRender a ainsi fait disparaître le problème.
mv tools/lib/libOpenglRender.so tools/lib/libOpenglRender.so.xxx
Sur mon système Ubuntu 12.04, j'ai résolu ce problème en m'assurant que "Utiliser l'hôte GPU" n'était pas activé dans la configuration AVD.
Commande de type
$ emulator-arm @nexus_s
J'espère que cela t'aides :-)
Si vous ne trouvez pas la réponse ici, vous devez vous abonner à:
Là, vous recevrez des mises à jour sur ce problème et trouverez des solutions (comme renommer des fichiers lib *. *).
effacer les données et le périphérique de démarrage à froid via le studio Android a résolu ce problème dans Ubuntu 16.04
J'ai eu le même problème sur Debian Wheezy. La réponse de grebulon a en quelque sorte fonctionné pour moi, mais l’émulateur étant très lent, j’ai donc décidé de le réparer, The Right Way (tm).
Dans ce cas, Segmentation fault
indique probablement des problèmes avec OpenGL. (notez que la dernière ligne du journal est "émulateur: initialisation du support d'émulation OpenGLES matériel")
Dans mon cas, la recherche de "GL" à travers /var/log/Xorg.0.log
a montré un pilote NVidia GLX (issu d'une ancienne carte vidéo passée au paradis numérique). Étant donné que je dispose d’AMD Radeon, j’ai désinstallé tous les paquets contenant «nvidia» (liste: apt-get search nvidia | grep ^i
) et les ai installés:
# apt-get install libgl1-fglrx-glx
Après le redémarrage, l’émulateur s’est plaint de manquer de libOpenglRender.so
et libGL.so
, ce que j’ai résolu comme ceci:
# 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
Notez que ma situation est probablement unique (les problèmes ont commencé lorsque je suis passée de NVidia à AMD), mais la racine du problème est probablement similaire (OpenGL). J'espère que ça aide quelqu'un.
UPDATE: ne fonctionne toujours pas, il semble que mes pilotes ne prennent pas en charge les couleurs 16 bits dans OpenGL.