ไม่สามารถเรียกใช้โปรแกรมจำลองใน Android Studio


97

ฉันเพิ่งติดตั้ง Android studio เสร็จแล้วและลองทดสอบใช้งาน เมื่อฉันพยายามเรียกใช้แอพของฉันฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้

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

มีใครรู้วิธีแก้ไขบ้าง ????


1
ลองดูคำตอบนี้stackoverflow.com/questions/9712605/…
Psypher

@Ted Pottel มีคำตอบด้านล่างตอบคำถามของคุณหรือไม่? ในกรณีนี้โปรดคลิกเครื่องหมายถูกที่อยู่ข้างๆ
Harris

คำตอบ:


28

เป็นไปได้ว่าคุณไม่มีอิมเมจระบบจริงๆ ตรวจสอบอีกครั้งว่า$ANDROID_HOME/system-images/android-<YOUR DESIRED API>/armeabi-v7aมีอยู่และไม่ว่างเปล่า หากขาดหายไปจริงๆให้ติดตั้ง / ติดตั้งใหม่ด้วยตัวจัดการ SDK


2
ฉันมีปัญหาสองประการ: 1: ฉันไม่พบ$ANDROID_HOME/system-images/android-<YOUR DESIRED API>/armeabi-v7a2: วิธีติดตั้งอุปกรณ์เสมือนใหม่โดยใช้ตัวจัดการ SDK
Musa Haidari

อย่างไรก็ตามเมื่ออ่านคำตอบของคุณฉันสามารถหาวิธีแก้ปัญหาได้และนั่นคือการสร้างอุปกรณ์เสมือนใหม่และปัญหาไม่ได้เกิดขึ้นสำหรับอุปกรณ์ใหม่
Musa Haidari

4
ภายใน SDK Manager ตรวจสอบให้แน่ใจว่าคุณได้ตรวจสอบ "แสดงรายละเอียดแพ็กเกจ" เพื่อให้คุณสามารถดูได้ว่ามีการติดตั้งอิมเมจระบบใดและหากไม่มีให้ติดตั้ง
Martyn Davis

21

ไปที่ Tools | Android | ผู้จัดการ AVD

คลิกลูกศรใต้คอลัมน์การดำเนินการทางด้านขวาสุด (ซึ่งเป็นข้อความแสดงข้อผิดพลาด)

เลือกแก้ไข

ปล่อยให้การเลือกเริ่มต้น (สำหรับฉัน MNC x86 Android M)

คลิกถัดไป

คลิกเสร็จสิ้น

บันทึก AVD ของคุณและตอนนี้ข้อผิดพลาดหายไปจากคอลัมน์สุดท้ายแล้ว และโปรแกรมจำลองทำงานได้ดีในขณะนี้


15

แก้ไขเพียงแค่นี้ หวังว่านี่จะช่วยคนอื่น ๆ (ปัญหาใน Android studio v2) ปัญหานี้มีไว้สำหรับตัวเลียนแบบแขน ในตัวอย่างนี้ฉันใช้ armeabi-v7a API 16

การแก้ไขมีสามขั้นตอน:

ขั้นตอนที่ 1: เปิดตัวจัดการ sdk และตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง ARM EABI v7a System Image

ขั้นตอนที่ 2. นี่เป็นกรณีที่ชัดเจนของการเพิ่มตำแหน่งของ sdk ให้กับตัวแปรระบบ

คลิกขวาที่ไอคอน "พีซีเครื่องนี้" บนเดสก์ท็อปจากนั้น

Properties -> Advanced system settings -> Environment Variables... จากนั้นเพิ่มเส้นทางไปยัง sdk ใหม่ในส่วนตัวแปรระบบโดยใช้ชื่อตัวแปร ANDROID_SDK_ROOTใหม่ไปยังส่วนตัวแปรระบบโดยใช้ชื่อตัวแปร

ขั้นตอนที่ 3. รีสตาร์ท Android Studio สำหรับการเปลี่ยนแปลงในการลงทะเบียน หลังจากแก้ไขANDROID_SDK_ROOTปัญหาที่ไม่ได้กำหนดไว้โปรแกรมจำลองยังไม่พบไฟล์เคอร์เนลแม้ว่าจะเห็นว่าตัวจัดการ sdk ติดตั้งไว้ที่

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

เหตุผลคือการผสมผสานระหว่างตำแหน่งที่ตัวจัดการ sdk ติดตั้งไฟล์เคอร์เนลและตำแหน่งที่อีมูเลเตอร์กำลังมองหา

หากคุณเปิด config.ini (Android Studio -> AVD Mananger -> "Show On Disk") สำหรับโปรแกรมจำลองของคุณคุณจะเห็นบรรทัดต่อไปนี้:

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

(เช่น \ path-to-sdk \ add-ons \ addon -.... )

แทนที่จะเปลี่ยนค่านี้ในไฟล์ config.ini ฉันคัดลอก

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

(ไฟล์เคอร์เนลจากตัวจัดการโฟลเดอร์ sdk ที่ติดตั้ง)

ถึง

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

และนั่นคือไฟล์เคอร์เนลที่หายไป คุณสามารถเรียกใช้โปรแกรมจำลอง (คุณจะต้องปิด Android Studio แล้วเปิดใหม่อีกครั้ง) ให้เวลากับตัวจำลองเนื่องจากช้ากว่า 10 เท่าเมื่อเทียบกับ x86 (เหมืองใช้เวลาประมาณ 5 นาทีในการเริ่มต้น)


เอ่อ 'config.ini สำหรับอีมูเลเตอร์ของคุณอยู่ที่ไหน?
Jay

Android Studio -> AVD Mananger -> "แสดงบนดิสก์" กำลังแก้ไขคำตอบ
Asi Mugrabi

นี่คือคำตอบที่ใช้เคล็ดลับสำหรับฉันในกรณีของฉันนี่คือบรรทัดที่แก้ไขของฉัน:image.sysdir.1=system-images\android-16\default\armeabi-v7a
yvesmancera

นี่เป็นเคล็ดลับสำหรับฉันสำหรับ Nexus 4 emulator ต้องอัปเดตimage.sysdir.1เป็น "system-images \ android-15 \ google_apis \ armeabi-v7a`
twig

10

ฉันได้รับการแก้ไขโดยเรียกใช้ "C: \ Program Files \ Android \ android-sdk \ AVD Manager.exe" และซ่อมแซมอุปกรณ์ที่เสีย


5

คำตอบสั้น ๆ : พยายามสร้างภาพเดียวกันโดยใช้โรงเรียนเก่า<AndroidSDK>\AVD Manager.exeพยายามที่จะสร้างภาพเดียวกันโดยใช้โรงเรียนเก่า

การทำงานใน Android Studio ใช้เครื่องมือในตัวทั้งหมดมันเป็นเรื่องธรรมดาสำหรับฉันที่จะไม่ใช้ผู้จัดการเก่า (AVD / SDK)

ในกรณีของฉันฉันมีปัญหานี้เมื่อใช้ AVD Manager ใหม่ (รวม) เพื่อสร้างอุปกรณ์ที่มีอิมเมจระบบเก่า (API 11 และต่ำกว่าตามที่ฉันได้ทดสอบ)

เมื่อฉันพยายามใช้เครื่องมือ AVD Manager ของโรงเรียนเก่า (อยู่ใน<AndroidSDK>\AVD Manager.exe) เพื่อสร้างภาพอุปกรณ์เก่าเหล่านี้ฉันก็ประสบความสำเร็จ


2
ขอบคุณสำหรับคำแนะนำ - ดูเหมือนว่าเครื่องมือแบบสแตนด์อโลนจะรู้วิธีตั้งค่าสำหรับแพลตฟอร์มรุ่นเก่า บน OS X / ~/Library/Android/sdk/tools/android avdMacOS:
neuralmer

4

เฮ้เพิ่งพบปัญหาเดียวกันกับที่คุณทำลิงก์ที่ 3 ใน google นำฉันไปสู่โค้ดบิตนี้ที่แสดงข้อผิดพลาด

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);

ซึ่งบุคคลนั้นเขียน:

"/ * หากชื่ออิมเมจเคอร์เนลลงท้ายด้วย" -armv7 "ให้เปลี่ยนประเภท cpu * โดยอัตโนมัตินี่เป็นวิธีการจัดการคอนฟิกูเรชัน * ของผู้ชายที่ไม่ค่อยดี แต่ควรทำให้เราได้อิมเมจระบบ ARMv7 * ที่ผ่านมาด้วย dex preopt pass "

ดังนั้นฉันจึงกลับเข้าไปและดาวน์โหลดเวอร์ชัน x86 intel atom สำหรับระดับ API ที่ต้องการและสามารถรับโปรแกรมจำลองได้โดยไม่มีข้อผิดพลาด หวังว่าจะช่วยได้เช่นกัน .....


2

โดยปกติข้อผิดพลาดจะเกิดขึ้นเนื่องจากโปรแกรมจำลอง AVD ที่ไม่เหมาะสมสำหรับประเภทของแอปที่คุณกำลังพัฒนา ตัวอย่างเช่นหากคุณกำลังพัฒนาแอปสำหรับอุปกรณ์สวมใส่ แต่คุณกำลังพยายามใช้โปรแกรมจำลองโทรศัพท์เพื่อเรียกใช้งาน


2

ฉันมีข้อผิดพลาดเดียวกัน วิธีแก้ปัญหาสำหรับฉันคือเปลี่ยนเส้นทางANDROID_HOME ก่อนอื่นฉันดูเครื่องมือ -> android-> sdk managerจาก Android Studio ในหน้าต่างนั้นเราจะเห็นเส้นทางที่ Android Studio ค้นหา SDK: image

จากนั้นฉันเปิดเชลล์ CMD ของ Windows ดำเนินการ:

echo %ANDROID_HOME%

แต่เส้นทางแตกต่างจากเส้นทางใน ANDROID STUDIO CONFIGURATION ของขั้นตอนแรก

วิธีแก้ปัญหาคือการเปลี่ยนสภาพแวดล้อมของผู้ใช้ ANDROID_HOME เป็นขั้นตอนแรก: รูปภาพ

ในที่สุดฉันก็ปิดเชลล์ cmd และเปิดเชลล์ cmd อื่นเพื่อดำเนินการ:

echo %ANDROID_HOME%

เส้นทางได้รับการอัปเดตและฉันสามารถเรียกใช้โปรแกรมจำลองได้อย่างสมบูรณ์แบบ


1

ในกรณีของฉัน (Windows 10) เหตุผลคือฉันกล้าที่จะคลายซิป android sdk ลงในโฟลเดอร์ที่ไม่ใช่โฟลเดอร์เริ่มต้น เมื่อฉันย้ายไปเป็นค่าเริ่มต้น c: / Users / [ชื่อผู้ใช้] / AppData / Local / Android / Sdk และเปลี่ยนเส้นทางใน Android Studio และตัวแปรของระบบมันก็เริ่มทำงาน


1
  • เปิด Android studio
  • ไปที่การตั้งค่า> การตั้งค่าระบบ> Android SDK
  • รับ "ตำแหน่ง Android SDK"
  • ตั้งค่าตัวแปรสภาพแวดล้อม ANDROID_SDK_ROOT เป็นค่านี้

มันใช้ได้สำหรับฉันและฉันใช้ Windows 10 และ Android studio 2.3.3


1
  1. ไปที่ "แก้ไขตัวแปรสภาพแวดล้อมของระบบ"
  2. คลิกที่ปุ่มใหม่และป้อน "ANDROID_SDK_ROOT" ในชื่อตัวแปรและป้อนเส้นทางเต็มของ android sdk ในค่าตัวแปร คลิกตกลงและปิด
  3. รีเฟรช AVD
  4. วิธีนี้จะแก้ไขข้อผิดพลาด

-1

แนวทางทั่วไปที่ต้องปฏิบัติตามเพื่อแก้ปัญหานี้

1. ตรวจสอบตัวจัดการ SDK ของคุณโดยเรียกใช้จากสตูดิโอ Android ของคุณและยืนโฟลเดอร์ sdk โดยการดำเนินการ./android.shจะช่วยให้คุณค้นหาแพ็คเกจที่เสีย

  1. ลองติดตั้งอิมเมจโปรแกรมจำลองระบบด้วย Google API ที่รองรับมากกว่า Intel เช่นเดียวกับฉันแก้ไขปัญหาของฉันโดยการเข้าสู่อิมเมจระบบอื่น

  2. การทดลองเกี่ยวกับ Virtulaization ตาม KVM ที่แนะนำโดย Google สำหรับ Linux

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