ไม่สามารถเปิดโปรแกรมจำลองบน Linux (Ubuntu 15.10)


103

ฉันพยายามเปิดโปรแกรมจำลอง แต่ส่งออกไปยังบันทึก:

libGL error: unable to load driver: r600_dri.so 
libGL error: driver pointer missing 
libGL error: failed to load driver: r600 
libGL error: unable to load driver: swrast_dri.so 
libGL error: failed to load driver: swrast 
X Error of failed request:  GLXBadContext   
Major opcode of failed request:  155 (GLX)
Minor opcode of failed request: 6 (X_GLXIsDirect)
Serial number of failed request:  47
Current serial number in output stream:  46 
libGL error: unable to load driver: r600_dri.so 
libGL error: driver pointer missing 
libGL error: failed to load driver: r600 
libGL error: unable to load driver: swrast_dri.so 
libGL error: failed to load driver: swrast 
X Error of failed request:  GLXBadContext
Major opcode of failed request:  155 (GLX)
Minor opcode of failed request:  6 (X_GLXIsDirect)   
Serial number of failed request:  47   
Current serial number in output stream:  46 
libGL error: unable to load driver: r600_dri.so 
libGL error: driver pointer missing 
libGL error: failed to load driver: r600
libGL error: unable to load driver: swrast_dri.so 
libGL error: failed to load driver: swrast 
X Error of failed request:  BadValue (integer parameter out of range for operation)   
Major opcode of failed request:  155 (GLX)   
Minor opcode of failed request:  24 (X_GLXCreateNewContext)   
Value in failed request:  0x0   
Serial number of failed request:  33   
Current serial number in output stream:  34 
QObject::~QObject: Timers cannot be stopped from another thread emulator: WARNING: Increasing RAM size to 1GB

ต้องแก้ไขอย่างไร? ฉันอ่านหัวข้อที่มีข้อผิดพลาดคล้าย ๆ กัน แต่ไม่ได้ช่วยฉัน


พบว่าที่นี่เป็นทางออกที่สะดวกโดยไม่ต้อง extralines ที่กำหนดในคำตอบนี้: [ github.com/rimian/cordova-ember-android]
refle

คำตอบ:


79

ลองดูที่

https://code.google.com/p/android/issues/detail?id=197254

โดยเฉพาะรายการ # 3 และ # 19 นี่เป็นวิธีแก้ปัญหาแทนที่จะเป็นวิธีแก้ปัญหาที่แท้จริง แต่ทำให้ฉันกลับมาอีกครั้ง คุณจะต้องปรับคำสั่งสำหรับ:

  • ตำแหน่งของlibstdc++.so.6ไฟล์ในระบบของคุณ - ฉันเคยlocate libstdc++.so.6พบสิ่งนี้
  • เส้นทางไปยังโปรแกรมจำลองปฏิบัติการ
  • ชื่อโปรแกรมจำลองของคุณ

ดังนั้นคำสั่งของฉันคือ

LD_PRELOAD='/usr/lib/x86_64-linux-gnu/libstdc++.so.6' ~/Android/Sdk/tools/emulator -netdelay none -netspeed full -avd Nexus_5_API_21

จากนั้นจะเปิดตัวจำลองและคุณสามารถเลือกได้ในกล่องโต้ตอบ 'Device Chooser' เมื่อคุณเรียกใช้แอป


ขอบคุณ! แต่ในกรณีของฉัน OS ไม่เห็นแพ็คเกจ fglrx แม้ว่าฉันจะติดตั้งและใช้งานได้ แต่หลังจากการอัปเดตระบบฉันได้รับข้อบกพร่องนี้ ฉันติดตั้งแพ็คเกจนี้ใหม่และใช้งานได้อีกครั้ง :) ขออภัยเป็นภาษาอังกฤษ
Шах

การแก้ไขที่ระบุไว้ในโพสต์ # 23 จากลิงก์อนุญาตให้โปรแกรมจำลองของฉันเปิดใช้งานบน Ubuntu 16.04 แต่หน้าจอโปรแกรมจำลองจะแสดงเป็นสีดำเท่านั้น
dazza5000

5
ฉันแก้ปัญหาด้วยวิธีที่น่าเกลียด: cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6 $ANDROID_HOME/tools/lib/libstdc++/libstdc++.so.6
Yu Jiaao

ในกรณีที่เป็นประโยชน์คุณสามารถค้นหาชื่อของโปรแกรมจำลองด้วย:LD_PRELOAD='/usr/lib/x86_64-linux-gnu/libstdc++.so.6' ~/Android/Sdk/tools/emulator -list-avds
DaveyDaveDave

170

การใช้ libstdc ++ so.6 ที่มีอยู่ในระบบของคุณแทนที่จะเป็นแบบที่มาพร้อมกับ android sdk จะช่วยแก้ปัญหานี้ได้

  • โปรแกรมจำลองมีสวิตช์-use-system-libsเพื่อทำสิ่งนี้

    ~/Android/Sdk/tools/emulator -avd Nexus_5_API_23 -use-system-libs

  • หรือคุณสามารถตั้งค่าANDROID_EMULATOR_USE_SYSTEM_LIBSตัวแปรสภาพแวดล้อม1สำหรับผู้ใช้ / ระบบของคุณ สิ่งนี้มีประโยชน์ในการตรวจสอบให้แน่ใจว่าโปรแกรมจำลองจะทำงานได้แม้ว่าคุณจะเปิดตัวจากใน Android Studio ก็ตาม

รายละเอียดเพิ่มเติม: https://code.google.com/p/android/issues/detail?id=197254#c15


และหลังจากนั้นใน Android Studio ของคุณจะปรากฏอุปกรณ์ที่เชื่อมต่อ (ในกรณีนี้คือ Nexus_5_API_23) เมื่อคุณพยายามเรียกใช้แอปของคุณ
Alejo Bernardin

3
นี่เป็นคำตอบที่ดีที่สุดเนื่องจากโปรแกรมจำลองสามารถเปิดใช้งานได้อย่างถูกต้องผ่านเชลล์สคริปต์โดยไม่ต้องย้ายหรือเชื่อมโยงไลบรารี sdk ที่มีอยู่
Potaito

19
บน Ubuntu 16.10 export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1ต้องเพิ่มไปที่$HOME/.profile
Greg Dan

ตัวเลือกที่ไม่รู้จัก: -use-system-libs :(
Jaroslav Záruba

1
@GregDan: หรือถึง/etc/environment
serv-inc

123
$ cd Android/Sdk/emulator/lib64/libstdc++
$ mv libstdc++.so.6 libstdc++.so.6.bak
$ ln -s /usr/lib64/libstdc++.so.6

มันใช้งานได้สำหรับฉัน


1
ดูเหมือนว่าฉันต้องติดตั้ง libstdc ++ และหลังจากนั้นฉันก็สามารถเรียกใช้โปรแกรมจำลองได้ขอบคุณสำหรับความช่วยเหลือของคุณ!
Pini Cheyni

6
libstdc ++ ของฉัน so.6 ซึ่งอยู่ที่ /usr/lib/x86_64-linux-gnu/libstdc++.so.6
Joshua

2
@ โจชัว - ถูกต้อง. สำหรับ Ubuntu 17.10+ คุณต้องมีสิ่งต่อไปนี้สำหรับขั้นตอนสุดท้าย $ ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6
Timothy C. Quinn

ทำงานให้ฉัน ฉันอยากรู้ว่าอะไรทำให้มันพัง
Toby Wilson

วิธีนี้ใช้ได้ผลสำหรับฉัน Emulator พังหลังจากอัปเดตจาก Ubuntu 16.04 เป็น 18.04 ขอบคุณ!
ruX

52

ฉันมีข้อผิดพลาดที่คล้ายกันใน Ubuntu 16.04 64 บิต สำหรับฉันคำตอบ# 23 ใช้งานได้ดี https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Status%20Priority%20Owner%20Summary%20Stars%20Reporter % 20Opened & groupby = & sort = & id = 197254

$ cd $ANDROID_HOME/android-sdk-linux_x86/tools/lib64/libstdc++
$ mv libstdc++.so.6 libstdc++.so.6.bak
$ ln -s /usr/lib64/libstdc++.so.6 $ANDROID_HOME/android-sdk-linux_x86/tools/lib64/libstdc++

สิ่งนี้ได้ผลสำหรับฉัน คุณอาจต้องดูในไดเรกทอรีอื่นสำหรับ android sdk ของคุณแม้ว่า พบของฉันที่/home/daniel/Android/Sdk/tools/lib64/libstdc++
Daniel Levin

ใช่เส้นทางส่วนก่อน "/ tools" อาจแตกต่างกันไปขึ้นอยู่กับชื่อผู้ใช้และโฟลเดอร์การติดตั้ง Sdk
luizMello

3
ยืนยันการทำงานใน xenial อูบุนตูเส้นทางคือ
/usr/lib/x86_64-linux-gnu/libstdc++.so.6

ขอบคุณ .... นี่เป็นวิธีแก้ปัญหาเช่นกันใน ubuntu 16.10 เส้นทางเดียวกับในความคิดเห็นด้านบน ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 ~ / Android / Sdk / tools / lib64 / libstdc ++
Juan

29

ใช้ "ซอฟต์แวร์" ในตัวเลือก Emulated Performance Graphics ในการตั้งค่า AVD วิธีแก้ปัญหาที่ง่ายมาก


มันง่าย แต่มันช้ามาก :)
Шах

ทำงานบน ubuntu 16 64bit เพียงแค่เลือกแบบเลื่อนลง :) 10x
Vasil Valchev

นั่นเป็นทางออกเดียวที่ใช้ได้ผลสำหรับฉัน (Ubuntu 16.04LTS)
Feu

20

ฉันทำสิ่งนี้และมันได้ผล

cd ~/Android/Sdk/emulator/lib64/libstdc++ 
mv libstdc++.so.6 libstdc++.so.6.bak
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 libstdc++.so.6

ฉันมีข้อบกพร่องนี้เนื่องจากไดรเวอร์วิดีโอของฉันฉันติดตั้งใหม่ในภายหลังและทุกอย่างก็เริ่มทำงาน ฉันลืมเกี่ยวกับข้อบกพร่องนี้ไปแล้วมันแปลกมากที่ยังมีคนมีปัญหาในการค้นหาวิธีแก้ปัญหามากมายรวมถึงหัวข้อนี้
Шах

ฉันเพิ่งมีข้อผิดพลาดนี้เมื่อ 10 นาทีที่แล้ว :)
tetar

10

ค้นหา libstdc ++ เริ่มต้นของระบบของคุณได้ดีขึ้น so.6 โดยใช้คำสั่ง locate libstdc ++ ดังนั้น 6

จากนั้นสำรองไฟล์เวอร์ชัน android sdk ใน ~ / Android / Sdk / tools / lib64 / libstdc ++ /

และสร้างซอฟต์ลิงค์สำหรับ libstdc ++ so.6 ด้วยชื่อเดียวกันในพา ธ ด้านบนแทนที่ที่มีอยู่ที่ชี้ไปยังไฟล์ดีฟอลต์ในระบบ

ด้วยวิธีนี้เราไม่จำเป็นต้องรีสตาร์ทโปรแกรมจำลองทุกครั้งจากบรรทัดคำสั่ง



0

ฉันยังมีปัญหามากมายในการเปิด AVD บนเครื่องของฉัน ต่อสู้กับการใช้ไลบรารีระบบการสร้าง symlinks ไปยังไลบรารีโลคัล ฯลฯ ...

สิ่งที่ทำให้มันใช้งานได้จริงสำหรับฉันคือการติดตั้งไดรเวอร์ nvidia ด้วย

sudo apt install nvidia-340

distro ของฉัน (โปรดทราบว่าฉันไม่ได้ใช้ Ubuntu 15.10):

$ uname -a
Linux ruapehu 4.4.0-38-generic #57-Ubuntu SMP Tue Sep 6 15:42:33 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

$ cat /etc/issue
Ubuntu 16.04.1 LTS \n \l

ตรวจสอบให้แน่ใจว่าคุณได้ตรวจสอบแพ็คเกจ nvidia ที่เหมาะกับคุณเนื่องจาก Ubuntu มีรสชาติที่แตกต่างกัน ตัวอย่างเช่น:

$ sudo apt list "nvidia-[0-9][0-9][0-9]" 
Listing... Done
nvidia-304/xenial 304.131-0ubuntu3 amd64
nvidia-331/xenial 340.96-0ubuntu3 amd64
nvidia-340/xenial,now 340.96-0ubuntu3 amd64 [installed]
nvidia-346/xenial 352.63-0ubuntu3 amd64
nvidia-352/xenial 361.42-0ubuntu2 amd64
nvidia-361/xenial,now 361.42-0ubuntu2 amd64

ฉันทดสอบรายการในกลยุทธ์จากล่างขึ้นบนตั้งแต่ปี 361 จนกระทั่งพบสิ่งที่ใช้ได้ผล (340 ในกรณีของฉัน)

หวังว่าจะช่วยได้


0

ในกรณีของฉัน libs (Ubuntu 16.10 64 บิต, Android Studio 2.3) อยู่ในที่อื่น ดังนั้นคำสั่งคือ:

/home/myusername/Android/Sdk/emulator/lib64/libstdc++

➜  libstdc++ ll
total 9,3M
-rwxr-xr-x 1 myusername myusername 4,6M мар 21 00:09 libstdc++.so.6
-rwxr-xr-x 1 myusername myusername 4,6M мар 21 00:09 libstdc++.so.6.0.18

➜  libstdc++ mv libstdc++.so.6 libstdc++.so.6.bak
➜  libstdc++ mv libstdc++.so.6.0.18 libstdc++.so.6.0.18.bak
➜  libstdc++ ln -s /usr/lib32/libstdc++.so.6 /home/myusername/Android/Sdk/emulator/lib64/libstdc++ 
➜  libstdc++ ln -s /usr/lib32/libstdc++.so.6.0.22 /home/myusername/Android/Sdk/emulator/lib64/libstdc++ 

➜  libstdc++ ll
total 9,3M
lrwxrwxrwx 1 myusername myusername   25 мар 29 13:18 libstdc++.so.6 -> /usr/lib32/libstdc++.so.6
-rwxr-xr-x 1 myusername myusername 4,6M мар 21 00:09 libstdc++.so.6.0.18.bak
lrwxrwxrwx 1 myusername myusername   30 мар 29 13:19 libstdc++.so.6.0.22 -> /usr/lib32/libstdc++.so.6.0.22
-rwxr-xr-x 1 myusername myusername 4,6M мар 21 00:09 libstdc++.so.6.bak

และตอนนี้อีมูเลเตอร์เปิดตัวจากตัวจัดการ AVD ตามปกติ


0

ฉันมีปัญหาคล้ายกันกับการใช้งานi965_dri.soและswrast_dri.soฉันไม่สามารถเปลี่ยนเป็นกราฟิกซอฟต์แวร์ใน GUI ได้

ดังนั้นฉันจึงไปที่โฟลเดอร์ของอีมูเลเตอร์ ( Show on Diskลิงก์ใน AVDM) และพบไฟล์config.ini

ที่นี่ฉันเพิ่งเปลี่ยนบรรทัดต่อไปนี้เพื่อหยุดไม่ให้ใช้ GPU:

hw.gpu.enabled=no


-1

$ cd ~ / Android / Sdk / emulator / lib64 / libstdc ++ $ mv libstdc ++ so.6 libstdc ++ so.6.bak $ ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 libstdc ++ ดังนั้น .6

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.