Có thể có một số vấn đề khác nhau khi bạn di chuyển AVD hoặc SDK của mình sang thư mục khác hoặc thay thế SDK cũ bằng SDK mới hoặc bằng cách nào đó khiến SDK bị hỏng.
Dưới đây tôi sẽ mô tả tất cả các vấn đề có thể tôi biết, và sẽ cung cấp cho bạn một số cách để giải quyết chúng.
Tất nhiên tôi giả sử rằng bạn có bất kỳ AVD nào được tạo và nó nằm trong C:\Users\<user_name>\.android\avd
(Windows) hoặc ~/.android/avd
(Linux / MacOS).
Nếu bạn đã chuyển .android
đến một nơi khác thì hãy đặt ANDROID_SDK_HOME
biến môi trường thành đường dẫn của thư mục mẹ chứa của bạn .android
và đảm bảo Trình quản lý AVD tìm thấy thành công Thiết bị ảo của bạn.
Cũng kiểm tra đường dẫn trong <user_home>/.android/avd/<avd_name>.ini
Cấu trúc SDK không đầy đủ / bị hỏng
PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT
PANIC: Broken AVD system path. Check your ANDROID_SDK_ROOT value
2 lỗi này xảy ra nếu trình giả lập không thể tìm thấy SDK hoặc SDK bị hỏng.
Vì vậy, trước hết tôi khuyên bạn nên loại bỏ ANDROID_SDK_ROOT
biến này. Nó chỉ cần thiết khi trình giả lập được đặt bên ngoài thư mục SDK. Nhưng nói chung, trình giả lập của bạn vẫn nằm trong thư mục SDK. Và trong trường hợp này, nó phải tự động phát hiện vị trí SDK . Nếu không, SDK của bạn có thể có filetree sai. Hãy làm như sau:
Kiểm tra xem thư mục SDK có ít nhất những 4 thư mục: emulator
, platforms
, platform-tools
, system-images
. Rất quan trọng! Những thư mục này phải có mặt. Nếu một số trong số chúng không tồn tại, thì chỉ cần tạo các thư mục trống.
Đi đến <user_home>/.android/avd/<avd_name>
và mở config.ini
. Tìm image.sysdir.1
tài sản. Nó trỏ vào thư mục, bên trong thư mục SDK, chứa hình ảnh hệ thống thực tế. Đảm bảo rằng thư mục này tồn tại và chứa các tệp như build.prop
, system.img
v.v. Nếu không, thì bạn phải mở Trình quản lý SDK và tải xuống hình ảnh hệ thống mà AVD của bạn yêu cầu (xem bên dưới).
Nếu mọi thứ được thiết lập đúng, khi những lỗi này ANDROID_SDK_ROOT
phải biến mất. Nếu họ không phải, thì bây giờ bạn có thể cố gắng thiết lập ANDROID_SDK_ROOT
biến.
Các gói bắt buộc và HAXM không được cài đặt
Vấn đề tiếp theo bạn có thể gặp phải là trình giả lập bắt đầu khởi chạy, nhưng bị treo hoặc thoát ngay lập tức. Điều đó có thể có nghĩa là bạn không cài đặt tất cả các gói cần thiết.
Một lỗi khác có thể là:
Không thể tự động phát hiện nhị phân ADB. Một số chức năng giả lập sẽ không hoạt động cho đến khi một đường dẫn tùy chỉnh tới ADB được thêm vào trong trang cài đặt mở rộng.
Vì vậy, để khởi chạy thành công bất kỳ AVD nào, bạn phải chắc chắn rằng ít nhất các gói này đã được cài đặt:
emulator (Android Emulator)
platform-tools (Android SDK Platform-Tools)
tools (Android SDK Tools)
Và như tôi đã đề cập trước đó, bạn phải cài đặt hình ảnh hệ thống mà AVD của bạn đang sử dụng, ví dụ system-images;android-25;google_apis;x86
Lưu ý rằng các phiên bản gần đây nhất trên SDK không có độc lập SDK Manager.exe
. Thay vì sử dụng, bạn phải sử dụng Android Studio hoặc tools\bin\sdkmanager.bat
(Linux / MacOS có thể có sh
tệp).
Để liệt kê tất cả các gói có sẵn sử dụng sdkmanager --list
hoặcsdkmanager --list --verbose
Để cài đặt gói sử dụng sdkmanager <package1> <package2> ...
Ngoài ra tôi khuyên bạn nên cài đặt HAXM trên hệ thống của mình theo cách thủ công.
Các tập tin Qcow2 đề cập đến hình ảnh cơ sở không chính xác / không tồn tại
Vấn đề cuối cùng tôi sẽ đề cập đến xảy ra khi bạn đang cố gắng di chuyển AVD hoặc SDK từ máy tính hoặc thư mục này sang máy tính khác. Trong trường hợp này bạn có thể nhận được lỗi như vậy:
qemu-system-i386.exe: -drive if = none, chồng chéo-check = none, cache = không an toàn, index = 0, id = system, file = C:\Users\<old_user_name>\.android\avd\<avd_name>
.
avd \ system.img.qcow2, chỉ đọc: Không thể mở tệp sao lưu: Không thể mở ' <old_sdk_dir>\system-images\android-22\google_apis\x86\system.img
': Đối số không hợp lệ
Có 2 cách để khắc phục:
Nếu bạn không quan tâm đến dữ liệu mà AVD chứa, chỉ cần xóa tất cả các qcow2
tệp khỏi thư mục AVD (ví dụ: từ <user_home>/.android/avd/<avd_name>
). Trong trường hợp này, bạn sẽ có được một phiên bản Android sạch, như sau khi thiết lập lại cứng.
Nếu dữ liệu trên trình giả lập là quan trọng đối với bạn, thì hãy mở từng qcow2
tệp một bằng bất kỳ trình soạn thảo HEX nào (tôi thích HxD ), tìm đường dẫn của img
tệp cơ sở và thay đổi nó thành đúng tệp trong Overwrite
chế độ (để giữ nguyên Kích thước tập tin). Sau đó chọn đường dẫn và lấy chiều dài của nó trong hex (ví dụ 2F
). 2F
đại diện cho dấu gạch chéo ASCII /
. Đặt nó vào vị trí 13
:
PS: Không chắc chắn, nhưng có thể có một số sử dụng như qemu-img cho phép đặt hình ảnh cơ sở khác nhau. Vâng, với tôi nó dễ dàng hơn để chỉnh sửa nhị phân.
Bây giờ có lẽ bạn sẽ có thể khởi chạy thành công Thiết bị ảo Android của mình. Tôi cũng mong là như vậy :)