Không thể chạy trình giả lập trong Android Studio


96

Tôi vừa mới cài đặt xong Android studio và đang cố gắng chạy thử nghiệm. Khi tôi cố gắng chạy ứng dụng của mình, tôi nhận được thông báo lỗi sau

emulator: ERROR: This AVD's configuration is missing a kernel file!!
emulator: ERROR: ANDROID_SDK_ROOT is undefined

Có ai biết cách khắc phục điều này không ????


1
Xem câu trả lời này stackoverflow.com/questions/9712605/…
Psypher

@Ted pottel, có câu trả lời nào dưới đây trả lời câu hỏi của bạn không? Nếu vậy, vui lòng nhấp vào dấu kiểm bên cạnh nó.
Harris

Câu trả lời:


27

Có thể là bạn thực sự không có hình ảnh hệ thống. Kiểm tra kỹ xem có $ANDROID_HOME/system-images/android-<YOUR DESIRED API>/armeabi-v7atồn tại và không trống. Nếu chúng thực sự bị thiếu - hãy cài đặt / cài đặt lại bằng trình quản lý SDK.


2
Tôi có hai vấn đề: 1: Tôi không thể tìm thấy $ANDROID_HOME/system-images/android-<YOUR DESIRED API>/armeabi-v7a, 2: Làm thế nào để cài đặt lại một thiết bị ảo sử dụng quản lý SDK
Musa Haidari

Đọc câu trả lời của bạn tuy nhiên, tôi có thể làm một workaround, và đó là để tạo ra một thiết bị ảo mới và vấn đề đã không xảy ra cho cái mới
Musa Haidari

4
Trong SDK Manager, đảm bảo bạn đánh dấu vào "Hiển thị chi tiết trọn gói" để bạn có thể xem các hình ảnh hệ thống được cài đặt, và nếu không, cài đặt chúng
Martyn Davis

21

Đi tới Công cụ | Android | Trình quản lý AVD

Nhấp vào mũi tên bên dưới cột Hành động ở ngoài cùng bên phải (nơi có thông báo lỗi)

Chọn Chỉnh sửa

Để lựa chọn mặc định (Đối với tôi, MNC x86 Android M)

Nhấn tiếp

Nhấp vào Kết thúc

Nó lưu AVD của bạn và lỗi bây giờ đã biến mất khỏi cột cuối cùng. Và trình giả lập hiện hoạt động tốt.


15

Chỉ cần sửa điều này. Hy vọng điều này sẽ giúp những người khác. (Sự cố như trong Android studio v2) Sự cố này dành cho trình giả lập cánh tay. Trong ví dụ này, tôi đang sử dụng armeabi-v7a API 16

Cách khắc phục là ba bước:

Bước 1: Mở trình quản lý sdk và đảm bảo rằng bạn đã cài đặt Hình ảnh hệ thống ARM EABI v7a

Bước 2. Đây là trường hợp rõ ràng của việc thêm vị trí của sdk vào các biến hệ thống.

Nhấp chuột phải vào biểu tượng "PC này" trên màn hình, sau đó

Properties -> Advanced system settings -> Environment Variables... Sau đó thêm đường dẫn đến sdk như mới vào phần biến hệ thống bằng cách sử dụng tên biến ANDROID_SDK_ROOT.

Bước 3. Khởi động lại Android Studio để đăng ký các thay đổi. Sau khi khắc phục sự cố ANDROID_SDK_ROOTkhông xác định, trình giả lập vẫn không thể tìm thấy tệp hạt nhân mặc dù nó có thể thấy rằng trình quản lý sdk đã cài đặt nó vào

path-to-sdk\sdk\system-images\android-16\default\armeabi-v7a\kernel-qemu

Lý do là sự kết hợp giữa vị trí mà trình quản lý sdk cài đặt tệp hạt nhân và vị trí mà trình giả lập đang tìm kiếm nó.

Nếu bạn mở config.ini (Android Studio -> AVD Mananger -> "Show On Disk") cho trình mô phỏng của mình, bạn sẽ thấy dòng sau:

image.sysdir.1=add-ons\addon-google_apis-google-16\images\armeabi-v7a\

(tức là \ path-to-sdk \ add-ons \ addon -....)

Thay vì thay đổi giá trị này trong tệp config.ini tôi đã sao chép

path-to-sdk\sdk\system-images\android-16\default\armeabi-v7a\kernel-qemu

(tệp hạt nhân từ thư mục đã cài đặt trình quản lý sdk)

đến

\path-to-sdk\add-ons\addon-google_apis-google-16\images\armeabi-v7a\

Và đó là tệp hạt nhân bị thiếu. Bạn có thể chạy trình giả lập. (Bạn sẽ cần phải đóng Android Studio và mở lại) Chờ trình giả lập một thời gian vì nó chậm hơn 10 lần so với x86. (Tôi mất khoảng 5 phút để bắt đầu)


Uh, 'config.ini cho trình mô phỏng của bạn' ở đâu?
Jay

Android Studio -> Trình quản lý AVD -> "Hiển thị trên đĩa". Chỉnh sửa câu trả lời.
Asi Mugrabi

Đây là câu trả lời mà thực sự đã làm các trick cho tôi, trong trường hợp của tôi, đây là dòng đã chỉnh sửa của tôi:image.sysdir.1=system-images\android-16\default\armeabi-v7a
yvesmancera

Điều này đã làm nên mẹo cho tôi đối với trình giả lập Nexus 4. Phải cập nhật image.sysdir.1lên `system-images \ android-15 \ google_apis \ armeabi-v7a`
twig

10

Tôi đã sửa nó bằng cách chạy "C: \ Program Files \ Android \ android-sdk \ AVD Manager.exe" và sửa chữa thiết bị bị hỏng của mình.


5

Câu trả lời ngắn gọn : cố gắng tạo ra cùng một hình ảnh bằng cách sử dụng trường cũ <AndroidSDK>\AVD Manager.exe.

Làm việc trong Android Studio, chạy tất cả các công cụ tích hợp, tôi trở nên tự nhiên khi không sử dụng các trình quản lý cũ (AVD / SDK).

Trong trường hợp của tôi, tôi đã gặp sự cố này khi sử dụng Trình quản lý AVD mới (tích hợp) để tạo thiết bị có hình ảnh hệ thống cũ (API 11 trở xuống, như tôi đã thử nghiệm).

Khi tôi cố gắng sử dụng công cụ Trình quản lý AVD của trường cũ (nằm trong <AndroidSDK>\AVD Manager.exe) để tạo các hình ảnh thiết bị cũ này, tôi đã thành công.


2
Cảm ơn đề xuất - có vẻ như công cụ độc lập này biết cách thiết lập mọi thứ cho các nền tảng cũ hơn. Trên OS X / MacOS: ~/Library/Android/sdk/tools/android avd.
neuralmer

4

Này, bạn vừa gặp phải vấn đề tương tự như bạn đã làm, liên kết thứ 3 trong google đưa tôi đến đoạn mã này gây ra lỗi,

if (kernelFile == NULL) {
        kernelFile = avdInfo_getKernelPath(avd);
        if (kernelFile == NULL) {
            derror( "This AVD's configuration is missing a kernel file!!" );
            const char* sdkRootDir = getenv("ANDROID_SDK_ROOT");
            if (sdkRootDir) {
                derror( "ANDROID_SDK_ROOT is defined (%s) but cannot find kernel file in "
                        "%s" PATH_SEP "system-images" PATH_SEP
                        " sub directories", sdkRootDir, sdkRootDir);
            } else {
                derror( "ANDROID_SDK_ROOT is undefined");
            }
            exit(2);

mà người đó đã viết:

"/ * Nếu tên hình ảnh hạt nhân kết thúc bằng" -armv7 ", thì tự động thay đổi loại cpu *. Đây là cách tiếp cận quản lý cấu hình * của người nghèo, nhưng sẽ cho phép chúng tôi vượt qua việc xây dựng hình ảnh hệ thống ARMv7 * bằng dex preopt pass "

Vì vậy, tôi đã quay lại và tải xuống phiên bản nguyên tử intel x86 cho cấp API mong muốn của tôi và có thể khởi động trình giả lập mà không gặp lỗi. Mong nó cũng giúp được cho bạn.....


2

Thông thường, lỗi sẽ xảy ra do trình giả lập AVD không phù hợp với loại ứng dụng bạn đang phát triển. Ví dụ: nếu bạn đang phát triển một ứng dụng cho thiết bị đeo được nhưng bạn đang cố gắng sử dụng trình giả lập điện thoại để chạy nó.


2

Tôi đã có những lỗi giống nhau. Giải pháp cho tôi là thay đổi đường dẫn ANDROID_HOME . Trước tiên, tôi đã xem xét công cụ-> android-> trình quản lý sdk từ Android Studio. Trong cửa sổ đó, chúng ta có thể thấy đường dẫn nơi Android Studio tìm kiếm SDK: image

Sau đó, tôi đã mở một trình bao Windows CMD, thực thi:

echo %ANDROID_HOME%

nhưng đường dẫn khác với đường dẫn trong ANDROID STUDIO CONFIGURATION của bước đầu tiên.

Giải pháp là thay đổi môi trường người dùng, ANDROID_HOME, thành một trong những bước đầu tiên: image

Cuối cùng tôi đã đóng trình bao cmd và mở một trình bao cmd khác để thực thi:

echo %ANDROID_HOME%

đường dẫn đã được cập nhật và tôi có thể chạy trình mô phỏng của mình một cách hoàn hảo.


1

Trong trường hợp của tôi (Windows 10), lý do là tôi đã dám giải nén sdk android vào thư mục không phải mặc định. Khi tôi chuyển nó sang mặc định c: / Users / [tên người dùng] / AppData / Local / Android / Sdk và thay đổi đường dẫn trong Android Studio và Biến hệ thống, nó bắt đầu hoạt động.


1
  • Mở studio Android.
  • Đi tới cài đặt> Cài đặt hệ thống> Android SDK
  • Nhận "Vị trí SDK Android".
  • Đặt biến môi trường ANDROID_SDK_ROOT thành giá trị này.

Nó hoạt động với tôi và tôi đang sử dụng Windows 10 và Android studio 2.3.3


1
  1. Đi tới "Chỉnh sửa các biến Môi trường Hệ thống".
  2. Nhấp vào Nút mới và nhập "ANDROID_SDK_ROOT" trong tên biến và nhập đường dẫn đầy đủ sdk android trong giá trị biến. Nhấp vào ok và đóng.
  3. Làm mới AVD.
  4. Điều này sẽ giải quyết lỗi.

-1

Một cách tiếp cận phổ biến để làm theo để giải quyết vấn đề này.

1. KIỂM TRA trình quản lý SDK của bạn bằng cách chạy từ thư mục android studio và stand alons sdk bằng cách thực thi ./android.shgiúp bạn tìm các gói bị hỏng

  1. Hãy thử cài đặt hình ảnh trình giả lập Hệ thống có hỗ trợ API của Google hơn là Intel. Giống như, tôi đã giải quyết vấn đề của mình bằng cách chạy vào một hình ảnh hệ thống khác.

  2. Chuyên môn về công nghệ hóa dựa trên KVM do Google đề xuất cho Linux

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.