2012-12-21 35 views
19

Running go z linii poleceń spowodowało winy segmentacji:Android emulator winy segmentacji

$ emulator -avd nexus_s 
Segmentation fault (core dumped) 

jednak uruchomiony emulator ramieniem bezpośrednio w następujący sposób, działa bez zarzutu.

$ emulator-arm -avd nexus_s 

Podejrzewam, że próbuje uruchomić emulatora wersji x86 lub mips. Czy istnieje sposób skonfigurowania emulatora, który plik wykonywalny ma zostać uruchomiony?

Wszystko zaczęło po aktualizacji do Android SDK 17.

Dodanie -verbose flagę daje następujący wynik (co nie sądzę dodaje żadnej informacji):

$ 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) 
+1

OS X? Linux? Jakieś dziwne, równoległe wersje systemu Windows, w których również zastosowali wiersz polecenia '$'? – CommonsWare

+0

Linux, Ubuntu 12.04 ma charakter szczególny. – grebulon

+3

spróbuj dodać '' -V' do linii poleceń emulator' i zobaczyć gdzie wysypisk. Podczas próby załadowania sterownika OpenGL w systemie Ubuntu 11.10 miałem problem z 'emulatorem' na Androidzie R21, podczas próby załadowania sterownika OpenGL w systemie Ubuntu 11.10 - jest problem z tym na b.android.com, gdzie rozwiązaniem jest zmiana nazwy sterownika OpenGL, aby system Android mógł nie znajdź tego. – CommonsWare

Odpowiedz

24

końcu znalazłem rozwiązanie po przeczytaniu wskazówki CommonsWare. Zmiana nazwy pliku libOpenglRender.so spowodowała, że ​​problem zniknął.

mv tools/lib/libOpenglRender.so tools/lib/libOpenglRender.so.xxx 
+4

To czyni emulatora pojawi. ale wyświetla następujący komunikat o błędzie: emulator: BŁĄD: Nie można załadować biblioteki emulacji OpenGLES: lib64OpenglRender.so: nie można otworzyć pliku udostępnionego obiektu: Brak takiego pliku lub katalogu emulator : OSTRZEŻENIE: Nie można zainicjować emulacji OpenglES, używając renderera oprogramowania. –

+0

DZIĘKUJEMY BARDZO! Po ponad tygodniu próbowania wszystkiego tu i tam zmienianie nazw plików lib *. * Z /tools/lib/na lib *. *. Xxx sprawiło, że emulator się uruchomił. Miałem rację, cały problem powodujący emulator dotyczył OpenGLES: https://code.google.com/p/android/issues/detail?id=33336 & https://code.google.com/p/android/ issues/detail? id = 28601 – warmth

+0

Dla 64-bitowej zmiany nazwy pliku lib64OpenglRender.so na lib64OpenglRender.so.xxx. –

1

W moim systemie Ubuntu 12.04, I rozwiązać ten problem poprzez zapewnienie "Use Host GPU" nie została włączona w konfiguracji AVD.

1

polecenie Type

$ emulator ramię @nexus_s

Hope this helps :-)

0

miałem ten sam problem na Debian sid. Odpowiedź grebulona była dla mnie odpowiednia, jednak emulator był sloooooow, więc postanowiłem naprawić to w prawidłowy sposób (tm).

W tym przypadku Segmentation fault prawdopodobnie oznacza problemy z OpenGL. (zauważ, że ostatni wiersz dziennika jest „emulator: Inicjowanie OpenGLES sprzętowe wsparcie emulacji”)

W moim przypadku, szukając „GL” przez /var/log/Xorg.0.log wykazała pewną sterownika NVidia GLX (ze starej karty graficznej, który poszedł do nieba cyfrowej). Biorąc pod uwagę fakt, że mam AMD Radeon odinstalowałem każdy pakiet z „nvidia” w nim (lista: apt-get search nvidia | grep ^i) i zainstalowane:

# apt-get install libgl1-fglrx-glx 

Po emulator restart narzekali brakuje libOpenglRender.so i libGL.so, którą rozwiązać tak:

# 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 

Zauważ, że moja sytuacja jest prawdopodobnie wyjątkowa (problemy zaczęły się, gdy przeszedłem od NVidii do AMD), ale źródłem problemu jest prawdopodobnie podobna (OpenGL). Mam nadzieję, że to pomoże komuś.

AKTUALIZACJA: nadal nie działa, wygląda na to, że moje sterowniki nie obsługują 16-bitowych kolorów w OpenGL ... będą dalej badane.