Ubuntu - Lỗi: Không tạo được thẻ SD


84

Tôi thấy rất nhiều bài viết về việc ghi vào thẻ SD, nhưng tôi tin rằng vấn đề của tôi là khác. Tôi không thể tạo thẻ SD trong quá trình xây dựng AVD.

Ban đầu tôi đã cố gắng sử dụng Android SDK và Trình quản lý AVD để thực hiện việc này, chọn
Tên : my_avd
Mục tiêu : Android 2.2 - API Cấp 8
Thẻ SD : Kích thước: 1024 MiB
Skin : Tích hợp: Mặc định (HVGA)
Phần cứng : Thuộc tính: Màn hình LCD tóm tắt Mật độ, Giá trị: 160

Cửa sổ này hiện lên một cửa sổ với thông báo:
"Kết quả tạo AVD 'my_avd':
Lỗi: Không tạo được thẻ SD."

Tôi đã cố gắng lặp lại quy trình từ dòng lệnh, nhận được lỗi tương tự:

alex@alex-desktop:~$ android create avd -n my_avd -t 1 -c 1024M
Android 2.2 is a basic Android platform.
Do you wish to create a custom hardware profile [no]no
Error: Failed to create the SD card.

Cố gắng làm theo hướng dẫn sử dụng mksdcard cũng không hiệu quả; Tôi nghĩ rằng sự thiếu kinh nghiệm cơ bản của tôi về linux có thể khiến tôi gặp sự cố ở đây. Khi tôi cố gắng sử dụng mksdcard, nó chỉ báo rằng nó không thể tìm thấy tệp hoặc thư mục. Công cụ mksdcard có sẵn để sử dụng theo cách này trong linux không?

alex@alex-desktop:~$ mksdcard 1024M ./sdcard.iso
bash: /home/alex/android-sdk-linux_x86/tools/mksdcard: No such file or directory
alex@alex-desktop:~$ sudo android create avd -n my_avd -t 1 -c 1024M

Tôi đã thêm thư mục công cụ android vào biến PATH của mình, nhưng tôi cảm thấy rõ ràng là còn thiếu thứ gì đó khác. Có lẽ một số loại quyền truy cập?

Cố gắng chạy lệnh android với sudo dường như cũng không giúp được gì:

alex@alex-desktop:~/android-sdk-linux_x86/tools$ sudo ./android create avd -n my_avd -t 1 -c 1024M
Android 2.2 is a basic Android platform.
Do you wish to create a custom hardware profile [no]no
Error: Failed to create the SD card.

Tôi thậm chí đã thử cài đặt Eclipse và plugin ADT và chạy trình quản lý từ đó nhưng không có kết quả. Bất kỳ lời khuyên sẽ được đánh giá cao nhất. Cảnh báo nâng cao rằng tôi là một người dùng Linux mới làm quen, vì vậy ngay cả khi việc kiểm tra có vẻ như là một điều hiển nhiên không có trí tuệ, tôi vẫn có thể bỏ sót nó.


@Alex Pritchard: Bạn có thể không cần thẻ SD giả 1024M. Thay vào đó, hãy thử 32M và xem liệu bạn có may mắn hơn không.
CommonsWare

@CommonsWare Than ôi, thẻ SD 32M vẫn không được tạo. :(
Alex Pritchard

@Alex Pritchard: Điều đó khá lạ. Các hình ảnh được tạo trong cùng một thư mục với phần còn lại của AVD ( ~/.android/avd/whateveryoucalledit/), vì vậy tôi không thể hiểu rõ cách bạn có thể tạo AVD nhưng không phải AVD bằng thẻ SD.
CommonsWare

@CommonsWare Tôi đã đọc nhiều hơn một chút và nghĩ rằng tôi có thể đã tìm thấy thứ gì đó. Tôi nghi ngờ có thể có một số vấn đề vì tôi đang sử dụng cài đặt linux 64-bit và có thể cần cài đặt ia32-libs. Tôi sẽ thử điều này khi tôi trở về nhà và xem nó có hữu ích không.
Alex Pritchard

@Alex Pritchard: Vâng, tôi tin rằng bạn cần những thứ đó. Thật sự ngạc nhiên khi nó chạy mà không có chúng. Tôi đã phải trải qua một số chỉnh sửa để Android chạy trên thiết lập Ubuntu 64-bit của mình, mặc dù điều đó đã đủ lâu khiến tôi quên mất chi tiết.
CommonsWare

Câu trả lời:


101

Vì vậy, tôi đã tìm ra vấn đề. Tôi đang sử dụng bản cài đặt Linux 64 bit, không có gói ia32-libs được cài đặt theo mặc định. Tiện ích mksdcard sẽ không chạy nếu không có gói này. Sau khi cài đặt nó, tôi đã có thể xây dựng AVD mà không gặp vấn đề gì khi sử dụng trình quản lý AVD.


1
Cảm ơn, ubuntu 12.04 x64, nó đã giải quyết được sự cố. Tôi chỉ muốn nhận xét rằng những ia32-libs là 260mb khoảng
yetanothercoder

43
Đúng! Tôi đã tìm thấy con đường mà không có tất cả 240 gói phụ thuộc khủng khiếp đó! Thay vì ia32-libscài đặt libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386. Kudos để anh chàng này, đã cứu (và hy vọng những người khác) máy tính của tôi từ tất cả các rác thải: stackoverflow.com/a/10473415/998772 PS Tôi đang sử dụng Linux Mint 13
pavel_kazlou

4
Trên Fedora,dnf install glibc.i686 libstdc++.i686
Dominic Cleal

cảm ơn bạn. Tôi sử dụng Ubuntu 14.04 LTS amd và nó giải quyết được vấn đề. Tôi đã cài đặt tách gói như @pavel_kazlou gợi ý
Joao Polo

1
@nimrodm Tôi liên tục ngạc nhiên về hoạt động trên bài đăng này (bài đăng SO phổ biến nhất của tôi cho đến nay, hah).
Alex Pritchard

80

Trên Ubuntu 16.04 LTS x64, sử dụng Android Studio 2.1 (cũng được thử nghiệm trên 2.3.3), chạy từ một thiết bị đầu cuối:

sudo apt-get install lib32stdc++6

Tôi đã cài đặt SDK theo cách thủ công (không có Android Studio) và điều này phù hợp với tôi.
CTodea

1
Bên cạnh đó, tôi phải đổi tên ~ / Android / Sdk / emulator / lib64 / libstdc ++ / libstdc ++. So.6 và libstdc ++. So.6.0.18 thành một cái gì đó khác để làm cho trình mô phỏng chạy. Tôi chỉ có thể làm cho nó chạy mà không cần opengl khó khăn. --------------- ./emulator @ Nexus_4_API_23 không tạo được getGLES2ExtensionString có thể kéo được: Không thể tạo GLES 2.x Pbuffer! Không tải được chuỗi phần mở rộng GLES 2.x! Không thể khởi chạy trình giả lập bộ đệm khung được mô phỏng: LỖI: Không thể khởi chạy trình mô phỏng OpenglES, hãy sử dụng '-gpu off' để tắt nó.
Francisco Junior

1
Chơi lô tô. Ubuntu 17.04.
piratemurray 21/1017

22

Mình cũng bị lỗi như bạn và mình cũng mới giải quyết xong, có lẽ nó giúp được gì cho bạn (mặc dù mình không nghĩ lỗi của bạn là do cùng một vấn đề như mình).

Tôi thấy rằng tất cả các công cụ trong ../tools không có quyền thực thi, vì vậy tôi đã sử dụng

chmod -R 777 ../tools

từ dòng lệnh và cuối cùng nó hoạt động


1
Cảm ơn bạn đã đóng góp một câu trả lời. Stack Overflow cung cấp định dạng để nâng cao khả năng đọc câu trả lời của bạn. Bạn có thể sử dụng định dạng mã để xác định lệnh shell và đặt nó khác biệt với văn bản khác của bạn.
this.josh

Công trình, nhưng kết quả này trong .txt, .xmlfile vv có sự cho phép thực thi ... sẽ được tốt đẹp để biết các tập tin cá nhân liên quan
funkybro

10

Như những người khác đã viết, vấn đề là bản phân phối Linux của bạn là bản 64-bit và hiện tại, Thiết bị ảo Android ( AVD ) cần thư viện x86 để hoạt động chính xác.

Ai đó đã đề xuất cài đặt ia32-libs . Tuy nhiên, trong Ubuntu 14.04 LTS, bạn sẽ không tìm thấy thư viện này. Tôi đã giải quyết bằng cách sử dụng các lib thay thế này: lib32z1 , lib32ncurses5 , lib32bz2-1.0lib32stdc ++ .

sudo apt-get update
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++

3
Cái duy nhất tôi cần là lib32stdc ++ 6.
Big McLargeHuge

6

Tôi vừa gặp phải vấn đề tương tự. KHÔNG CÓ công cụ SDK nào sẽ chạy trên Ubuntu 64-bit mà không cần cài đặt ia32-libs (VÍ DỤ: sudo apt-get install ia32-libs).


5

Trong hệ điều hành sơ cấp và ubuntu, các giải pháp là cài đặt các gói sau

sudo apt-get install lib32ncurses5 lib32z1
sudo apt-get install libgcc1:i386

Điều này đã làm việc cho tôi trên Kubuntu 17.04. Nhưng libstdc ++ vẫn phải được gỡ bỏ.
Avamander,

4
alex@alex-desktop:~$ mksdcard 1024M ./sdcard.iso
bash: /home/alex/android-sdk-linux_x86/tools/mksdcard: No such file or directory
alex@alex-desktop:~$ sudo android create avd -n my_avd -t 1 -c 1024M

Tôi đã tìm thấy vấn đề này và tôi tìm cách đầu tiên:

cd /home/alex/android-sdk-linux_x86/tools/

sau đó viết cái này:

sudo chmod 755 mksdcard
mksdcard 1024M ./sdcard.iso
sudo android create avd -n my_avd -t 1 -c 1024M

nó sẽ hoạt động :)


4

Nếu bạn đang sử dụng Kali, Debian Jessie (hoặc Ubuntu 13.10+), hãy thử

sudo apt-get install lib32stdc ++ 6

thay vì ia32-libs được đề cập ở trên.


4
sudo apt-get install lib32stdc++6

Sau đó, bạn có thể gặp các lỗi sau

Cannot launch AVD in emulator.
Output:
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
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:  154 (GLX)
  Minor opcode of failed request:  6 (X_GLXIsDirect)
  Serial number of failed request:  49
  Current serial number in output stream:  48
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
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:  154 (GLX)
  Minor opcode of failed request:  6 (X_GLXIsDirect)
  Serial number of failed request:  49
  Current serial number in output stream:  48
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast
emulator: WARNING: VM heap size set below hardware specified minimum of 228MB
X Error of failed request:  BadValue (integer parameter out of range for operation)
emulator: WARNING: Setting VM heap size to 384MB
  Major opcode of failed request:  154 (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

Sử dụng 3 lệnh này để giải quyết những

mv ~/Android/Sdk/tools/lib64/libstdc++/libstdc++.so.6{,.bak}
mv ~/Android/Sdk/tools/lib64/libstdc++/libstdc++.so.6.0.18{,.bak}
ln -s /usr/lib/libstdc++.so  ~/Android/Sdk/tools/lib64/libstdc++/**

3

Cũng gặp sự cố này và sau khi cài đặt gói i386, tôi có thể tạo thẻ SD cho trình giả lập Android của mình, tôi phải thực hiện hai bước

sudo apt-get update
sudo apt-get install ia32-libs

Sau khi quá trình này hoàn tất, tôi đã có thể tạo trình giả lập có gắn thẻ SD


2

Tôi gặp một vấn đề khác: công cụ nền tảng nằm trong con đường của tôi nhưng công cụ thì không. Vì vậy, mọi thứ đều hoạt động ngoại trừ việc hình ảnh SDCard không được tạo. Không có thông báo nào về điều này khi tôi tạo avd trong eclipse và thiết bị ảo được tạo bằng thẻ sd thực sự nhỏ khiến nó liên tục gặp lỗi không có sẵn phương tiện khi cài đặt ứng dụng.


1

Tôi đã gặp sự cố khác khi sử dụng Ubuntu 32bit. Khi tôi cố gắng chạy mksdcard bằng tay, tôi gặp lỗi không tìm thấy tệp.

Vấn đề là open-jre / jdk. Tôi đã cài đặt oracle java và sự cố đã được khắc phục. Rất tiếc, bạn không thể cài đặt oracle java thông qua apt / synaptic nữa và phải thực hiện thêm một số vòng:

https://github.com/flexiondotorg/oab-java6


1

Trong thử nghiệm debian, khi tôi cố gắng chạy ./tools/mksdcards, tôi nhận được lỗi:

error while loading shared libraries: libstdc++.so.6: 
cannot open shared object file: No such file or directory

Cài đặt lib32stdc ++ 6 giải quyết được sự cố và có thể tạo avd.


0

MyOS là Oracle Unbreakable Linux 6 - để giải quyết vấn đề này, tôi đã phải cài đặt gói libstdc ++ - 4.4.6-3.el6.i686.


0

Sau rất nhiều lần cài đặt và không nhận được bất kỳ kết quả nào, tôi đã tìm thấy điều này và nó đã hoạt động.

Điều này xảy ra vì một số tệp thực thi trong sdk/toolskhông thể được thực thi. Đi tới thư mục Android Studio và Android SDK của bạn và làm cho tất cả thư mục và tệp có thể thực thi được bằng lệnh này:

chmod +x -R *

Tôi hiểu rằng 9 năm sau vấn đề này vẫn xuất hiện. Thời gian tốt. Cảm ơn vì đã chia sẻ kinh nghiệm của bạn.
Alex Pritchard


-1

Tôi đã từng gặp vấn đề tương tự. Sau khi khắc phục sự cố, tôi mới biết rằng đó là do Windows của tôi là 32bit và mksdcard của tôi chỉ tương thích với 64 bit. Sau đó, tôi chỉ cần sao chép mksdcard 32 bit vào thư mục công cụ và xóa cái cũ hơn. Nó đã giải quyết vấn đề của tôi.


-1

Đối với những người gặp phải vấn đề tương tự trên windows. Đối với tôi, đó là vì công cụ mksdcard.exe không thể chạy thành công. Một số công cụ SDK như mksdcard.exe yêu cầu thời gian chạy Microsoft Visual C ++. Vì vậy, hãy chuyển đến thuộc tính Hệ thống của bạn và kiểm tra loại Hệ thống của bạn:

nhập mô tả hình ảnh ở đây

Sau đó, dựa trên loại hệ thống của bạn, (đối với tôi là x64) tải xuống / cập nhật Microsoft Visual C ++ Redistributable mới nhất cho Visual Studio 2019 từ liên kết https://visualstudio.microsoft.com/downloads/

nhập mô tả hình ảnh ở đây

Sau khi cài đặt Microsoft Visual C ++, sự cố của tôi đã được khắc phục. Tôi đã có thể tạo AVD thành công.

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.