Không thể khởi chạy trình giả lập trên Linux (Ubuntu 15.10)


103

Tôi cố gắng khởi chạy trình giả lập nhưng nó xuất ra thành nhật ký:

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

Làm thế nào để sửa chữa nó? Tôi đọc các chủ đề có lỗi tương tự nhưng nó không giúp tôi.


tìm thấy ở đây một giải pháp thuận tiện mà không có các ngoại hàm được đưa ra trong câu trả lời này: [ github.com/rimian/cordova-ember-android]
phản ánh

Câu trả lời:


79

Hãy xem

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

cụ thể là các mục # 3 và # 19. Đây là một cách giải quyết chứ không phải là một giải pháp thực sự, nhưng nó đã khiến tôi phải tiếp tục. Bạn sẽ phải điều chỉnh lệnh cho:

  • vị trí của libstdc++.so.6tệp trên hệ thống của bạn - tôi đã từng locate libstdc++.so.6tìm thấy tệp này
  • đường dẫn đến thực thi trình giả lập
  • tên của trình giả lập của bạn

vì vậy lệnh của tôi là

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

Thao tác này sau đó sẽ khởi chạy trình giả lập và bạn có thể chọn nó trong hộp thoại 'Trình chọn thiết bị' khi chạy ứng dụng của mình.


Cảm ơn bạn! Nhưng trong trường hợp của tôi, hệ điều hành không thấy gói fglrx mặc dù tôi đã cài đặt nó và nó hoạt động. Nhưng sau khi cập nhật hệ thống, tôi đã gặp lỗi này. Tôi đã cài đặt lại gói này và nó hoạt động trở lại :) Xin lỗi vì tiếng Anh.
Шах

Bản sửa lỗi được nêu trong bài đăng # 23 từ liên kết đã cho phép trình giả lập của tôi khởi chạy trên Ubuntu 16.04, nhưng màn hình trình giả lập chỉ hiển thị màu đen.
dazza5000

5
Tôi giải quyết vấn đề bằng cách xấu xí: cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6 $ANDROID_HOME/tools/lib/libstdc++/libstdc++.so.6
Yu Jiaao

Trong trường hợp đó là hữu ích, bạn có thể tìm thấy tên của giả lập với:LD_PRELOAD='/usr/lib/x86_64-linux-gnu/libstdc++.so.6' ~/Android/Sdk/tools/emulator -list-avds
DaveyDaveDave

170

Sử dụng libstdc ++. So.6 có sẵn trong hệ thống của bạn thay vì một gói đi kèm với sdk android giải quyết vấn đề này.

  • Trình giả lập có một công tắc -use-system-libsđể làm điều này.

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

  • Ngoài ra, bạn có thể đặt ANDROID_EMULATOR_USE_SYSTEM_LIBSbiến môi trường thành 1cho người dùng / hệ thống của mình. Điều này có lợi là đảm bảo rằng trình giả lập sẽ hoạt động ngay cả khi bạn khởi chạy nó từ bên trong Android Studio.

Thêm chi tiết: https://code.google.com/p/android/issues/detail?id=197254#c15


Và sau đó, trong Android Studio của bạn sẽ xuất hiện một thiết bị được kết nối (trong trường hợp này là Nexus_5_API_23) khi bạn cố gắng chạy ứng dụng của mình.
Alejo Bernardin

3
Đây là câu trả lời tốt nhất imo vì trình giả lập có thể được khởi chạy đúng cách thông qua tập lệnh shell mà không cần phải di chuyển hoặc liên kết các thư viện sdk hiện có.
Potaito

19
trên Ubuntu 16.10 export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1phải được thêm vào$HOME/.profile
Greg Dan

tùy chọn không xác định: -use-system-libs :(
Jaroslav Záruba

1
@GregDan: hoặc tới/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

nó làm việc cho tôi


1
Có vẻ như tôi đã phải cài đặt libstdc ++ và chỉ sau đó tôi mới có thể chạy trình mô phỏng, Cảm ơn sự giúp đỡ của bạn!
Pini Cheyni

6
libstdc ++ của tôi. so.6 được đặt tại /usr/lib/x86_64-linux-gnu/libstdc++.so.6
Joshua

2
@Joshua - Đúng. Đối với Ubuntu 17.10+, bạn cần những điều sau đây cho bước cuối cùng $ ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6
Timothy C. Quinn

Đã làm cho tôi. Tôi rất muốn biết điều gì đã phá vỡ nó.
Toby Wilson

Giải pháp này phù hợp với tôi. Trình giả lập đã bị hỏng sau khi cập nhật từ Ubuntu 16.04 lên 18.04. Cảm ơn!
ruX

52

Tôi gặp lỗi tương tự trong Ubuntu 16.04 64-bit. Đối với tôi, câu trả lời # 23 hoạt động tuyệt vời https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Status%20Posystem%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++

Điều này đã làm việc cho tôi. Tuy nhiên, bạn có thể phải tìm trong các thư mục khác nhau cho sdk android của mình. Mine được tìm thấy tại/home/daniel/Android/Sdk/tools/lib64/libstdc++
Daniel Levin

Có, đường dẫn phần trước "/ tools" có thể khác nhau tùy thuộc vào Tên người dùng và thư mục cài đặt Sdk.
luizMello

3
xác nhận đang hoạt động, trong ubuntu xenial, đường dẫn là /usr/lib/x86_64-linux-gnu/libstdc++.so.6
Developalexis

cảm ơn bạn .... đây cũng là giải pháp trong ubuntu 16.10, đường dẫn tương tự như trong nhận xét ở trên ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 ~ / Android / Sdk / tools / lib64 / libstdc ++
Juan

29

Sử dụng "Phần mềm" trong tùy chọn Đồ họa Hiệu suất Giả lập, trong cài đặt AVD. Giải pháp rất đơn giản.


Nó đơn giản nhưng nó rất chậm :)
Шах

Làm việc trên ubuntu 16 64bit, chỉ cần chọn thả xuống :) 10x
Vasil Valchev

Đó là giải pháp DUY NHẤT phù hợp với tôi (Ubuntu 16.04LTS)
Feu

20

tôi làm điều này và nó đang hoạt động

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

Tôi gặp lỗi này do trình điều khiển video của mình, tôi đã cài đặt lại nó sau đó và tất cả đều bắt đầu hoạt động. Tôi đã quên về lỗi này rồi, thật kỳ lạ khi ai đó vẫn gặp vấn đề trong việc tìm kiếm rất nhiều giải pháp bao gồm cả chủ đề này.
Шах

tôi vừa gặp lỗi này 10 phút trước :)
tetar

10

xác định vị trí tốt hơn libstdc ++ mặc định hệ thống của bạn. so.6 bằng cách sử dụng lệnh định vị libstdc ++. so.6

Và sau đó sao lưu phiên bản sdk android của tệp trong ~ / Android / Sdk / tools / lib64 / libstdc ++ /

Và tạo một liên kết mềm cho libstdc ++. So.6 có cùng tên trong đường dẫn trên thay thế liên kết hiện có trỏ đến tệp mặc định trong hệ thống

Bằng cách này, chúng tôi không cần khởi động lại trình giả lập mỗi lần từ dòng lệnh.


9

Cố gắng thay đổi tùy chọn đồ họa trong cài đặt Trình mô phỏng: nhập mô tả hình ảnh ở đây


0

Tôi cũng gặp rất nhiều vấn đề để khởi chạy AVD trên máy tính của mình. Gặp khó khăn với việc sử dụng các lib hệ thống, tạo các liên kết tượng trưng cho các thư viện cục bộ, v.v.

Điều thực sự khiến nó hoạt động với tôi là cài đặt trình điều khiển nvidia với

sudo apt install nvidia-340

Bản phân phối của tôi (lưu ý rằng tôi không sử dụng 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

Đảm bảo bạn kiểm tra gói nvidia phù hợp với mình, vì Ubuntu cung cấp các phiên bản khác nhau. Ví dụ:

$ 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

Tôi đã thử nghiệm danh sách theo chiến lược từ dưới lên, từ 361 cho đến khi tôi tìm thấy một danh sách hiệu quả (340, trong trường hợp của tôi).

Hy vọng rằng sẽ giúp.


0

Trong trường hợp của tôi (Ubuntu 16.10 64-bit, Android Studio 2.3) libs được đặt ở một nơi khác. Vì vậy, các lệnh là:

/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

Và bây giờ trình giả lập được khởi chạy từ trình quản lý AVD một cách bình thường.


0

Tôi đã gặp vấn đề tương tự khi sử dụng i965_dri.soswrast_dri.sotôi không thể thay đổi đồ họa phần mềm trong GUI.

Vì vậy, tôi đã đi đến thư mục của trình giả lập (Show on Disk liên kết trong AVDM) và tìm thấyconfig.ini

Ở đây tôi chỉ thay đổi dòng sau để ngăn nó sử dụng 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 ++. như vậy .6

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.