ปัญหาที่ทราบเกี่ยวกับ Android Studio และปลั๊กอิน Android Gradle

หน้านี้ติดตามปัญหาที่ทราบเกี่ยวกับ Android Studio Koala Feature Drop และปลั๊กอิน Android Gradle 8.6.0 หากพบปัญหาที่ไม่ได้รวมไว้ โปรดรายงานข้อบกพร่องที่นี่

อัปเกรดเพื่อแสดงตัวอย่าง: Android Studio และ Android แต่ละรุ่น ปลั๊กอิน Gradle มีเป้าหมายที่จะปรับปรุงความเสถียรและประสิทธิภาพ รวมถึงเพิ่มฟีเจอร์ใหม่ๆ ดาวน์โหลดและติดตั้งเพื่อสัมผัสประโยชน์ของรุ่นที่กำลังจะเปิดตัวได้เลย ตัวอย่าง Android Studio

ปัญหาที่ทราบเกี่ยวกับ Android Studio

ส่วนนี้จะอธิบายปัญหาที่ทราบแล้วซึ่งมีอยู่ในเวอร์ชันที่เสถียรล่าสุดของ Android Studio

หน้าต่างผู้ช่วย Firebase แสดงข้อความแสดงข้อผิดพลาด

หากหน้าต่าง Firebase Assistant (เครื่องมือ > Firebase ในเมนูหลัก) แสดงข้อความแสดงข้อผิดพลาด ทำให้แคชใช้งานไม่ได้และรีสตาร์ท Android Studio เพื่อแก้ไขข้อผิดพลาด

ไม่สามารถแยกมุมมองโดยใช้ตัวตรวจสอบเลย์เอาต์

ความสามารถในการแยกมุมมองโดยใช้ เครื่องมือตรวจสอบเลย์เอาต์ไม่พร้อมใช้งานชั่วคราว เรากำลังแก้ไขปัญหานี้ในรุ่นที่จะออกในอนาคต

การเขียนโหนดไม่สามารถตรวจสอบได้โดยใช้ตัวตรวจสอบเลย์เอาต์บางรายการ

หากสังเกตเห็นว่าไม่สามารถตรวจสอบโหนด Compose บางโหนดได้เมื่อใช้เครื่องมือตรวจสอบเลย์เอาต์ ปัญหานี้อาจเกิดจากข้อบกพร่องที่ได้รับการแก้ไขแล้วใน Compose เวอร์ชัน 1.5.0-alpha04 หากกำลังประสบปัญหา ขอให้คุณอัปเกรดเป็น Compose เวอร์ชัน 1.5.0-alpha04 หรือ สูงขึ้น

เกิดข้อผิดพลาดขณะแสดงพรีวิวการเขียน

เริ่มต้นด้วย Chipmunk ใน Android Studio หากคุณเห็น java.lang.NoSuchFieldError: view_tree_saved_state_registry_owner หรือ java.lang.ClassNotFoundException: androidx.savedstate.R$id ในแผงปัญหา ตรวจสอบว่าได้รวมทรัพยากร Dependency ของ debugImplementation แล้ว androidx.lifecycle:lifecycle-viewmodel-savedstate ในโมดูลนี้

หากคุณเห็น java.lang.NoSuchFieldError: view_tree_lifecycle_owner ใน ปัญหา โปรดตรวจสอบว่าได้ระบุทรัพยากร Dependency ของ debugImplementation แล้ว androidx.lifecycle:lifecycle-runtime ในโมดูลนี้

หากคุณเห็น java.lang.NoClassDefFoundError: Could not initialize class androidx.customview.poolingcontainer.PoolingContainer หรือ java.lang.NoClassDefFoundError: androidx/customview/poolingcontainer/PoolingContainerListener ในแผงปัญหา โปรดตรวจสอบว่าได้ระบุข้อกําหนด debugImplementation ของ androidx.customview:customview-poolingcontainer ในโมดูลแล้ว

เกิดข้อผิดพลาดเมื่อใช้รหัสผ่านที่แตกต่างกันสำหรับคีย์และคีย์สโตร์

ตั้งแต่เวอร์ชัน 4.2 เป็นต้นไป Android Studio จะใช้งานบน JDK 11 ได้แล้ว การอัปเดตนี้ทำให้ลักษณะการทำงานพื้นฐานที่เกี่ยวข้องกับคีย์การรับรองเปลี่ยนแปลงไป

เมื่อคุณไปที่สร้าง > สร้าง Signed Bundle / APK และลองกำหนดค่า App Signing สำหรับ App Bundle หรือ APK การป้อนรหัสผ่านที่แตกต่างกันสำหรับคีย์และคีย์สโตร์อาจส่งผลให้ ข้อผิดพลาดต่อไปนี้

Key was created with errors:
Warning: Different store and Key passwords not supported for PKCS12 Key stores

เพื่อหลีกเลี่ยงปัญหานี้ โปรดป้อนรหัสผ่านเดียวกันสำหรับทั้งคีย์และ คีย์สโตร์

Android Studio ไม่เริ่มทำงานหลังจากติดตั้งเวอร์ชัน 4.2

Studio จะพยายามนําเข้า .vmoptions ก่อนหน้าและทำให้ไฟล์ดังกล่าวทำงานร่วมกับเครื่องมือเก็บขยะที่ใช้โดย JDK 11 ได้ หากกระบวนการดังกล่าวล้มเหลว IDE อาจไม่เริ่มต้นสำหรับผู้ใช้บางรายที่ ตั้งค่าตัวเลือก VM ที่กำหนดเองในไฟล์ .vmoptions

เพื่อหลีกเลี่ยงปัญหานี้ เราขอแนะนำให้แสดงความคิดเห็นตัวเลือกที่กำหนดเองออก ใน .vmoptions (โดยใช้อักขระ “#”) ไฟล์ .vmoptions จะอยู่ในตำแหน่งต่อไปนี้

หน้าต่าง

C:\Users\YourUserName\AppData\[Local|Roaming]\Google\AndroidStudio4.2\studio64.exe.vmoptions

macOS

~/Library/Application Support/Google/AndroidStudio4.2/studio.vmoptions

Linux

~/.config/Google/AndroidStudio4.2/studio64.vmoptions

หาก Studio ยังคงไม่เริ่มทำงานหลังจากลองใช้วิธีแก้ปัญหานี้แล้ว ให้ดูStudio ไม่เริ่มทำงานหลังจากการอัปเกรดด้านล่าง

แอปที่ใช้เครื่องมือตรวจสอบฐานข้อมูลขัดข้องในโปรแกรมจำลอง Android 11

แอปที่ใช้เครื่องมือตรวจสอบฐานข้อมูลอาจขัดข้องเมื่อทำงานบน Android 11 โปรแกรมจำลอง ซึ่งมีข้อผิดพลาดดังตัวอย่างต่อไปนี้ปรากฏใน Logcat

 Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR)

หากต้องการแก้ไขปัญหานี้ ให้อัปเกรดโปรแกรมจำลอง Android 11 เป็นเวอร์ชัน 9 ขึ้นไปภายในวันที่ การไปยังเครื่องมือ > SDK Manager ในแท็บแพลตฟอร์ม SDK ให้ตรวจสอบ ช่องแสดงรายละเอียดแพ็กเกจ และเลือกการแก้ไข 9 ขึ้นไปของ โปรแกรมจำลอง Android 11

Studio ไม่เริ่มทำงานหลังจากอัปเกรด

หาก Studio ไม่เริ่มต้นหลังจากการอัปเกรด ปัญหาอาจเกิดจาก ระบบนำเข้าการกำหนดค่า Android Studio จาก Android Studio เวอร์ชันก่อนหน้าแล้ว หรือปลั๊กอินที่ทำงานร่วมกันไม่ได้ ในการแก้ปัญหาเฉพาะหน้า ให้ลองลบ (หรือเปลี่ยนชื่อ การสำรองข้อมูล) ไดเรกทอรีด้านล่าง ขึ้นอยู่กับเวอร์ชัน Android Studio และระบบปฏิบัติการ และเริ่ม Android Studio อีกครั้ง การดำเนินการนี้จะรีเซ็ต Android Studio เป็นสถานะเริ่มต้น โดยนำปลั๊กอินของบุคคลที่สามทั้งหมดออก

สำหรับ Android Studio 4.1 ขึ้นไป ให้ทำดังนี้

  • Windows: %APPDATA%\Google\AndroidStudio<version>
    ตัวอย่าง: C:\Users\your_user_name\AppData\Roaming\Google\AndroidStudio4.1

  • macOS: ~/Library/Application Support/Google/AndroidStudio<version>
    ตัวอย่าง: ~/Library/Application Support/Google/AndroidStudio4.1

  • Linux: ~/.config/Google/AndroidStudio<version> และ ~/.local/share/Google/AndroidStudio<version>
    เช่น ~/.config/Google/AndroidStudio4.1 และ ~/.local/share/Google/AndroidStudio4.1

สำหรับ Android Studio 4.0 และเก่ากว่า

  • Windows: %HOMEPATH%\.AndroidStudio<version>\config
    ตัวอย่าง: C:\Users\your_user_name\.AndroidStudio3.6\config

  • macOS: ~/Library/Preferences/AndroidStudio<version>
    ตัวอย่าง: ~/Library/Preferences/AndroidStudio3.6

  • Linux: ~/.AndroidStudio<version>/config
    ตัวอย่าง: ~/.AndroidStudio3.6/config

โปรดทราบว่าไดเรกทอรีการกำหนดค่าสำหรับ Android รุ่น Canary และรุ่นเบต้า Studio มีราคา PreviewX.Y แทนที่จะเป็น X.Y สำหรับ <version> เช่น Android บิลด์ของ Studio 4.1 Canary ใช้ AndroidStudioPreview4.1 แทน ไดเรกทอรี AndroidStudio4.1 ที่ใช้สำหรับตัวเลือกรุ่นและเวอร์ชันเสถียร รุ่น

ปัญหาการคอมไพล์ในโปรเจ็กต์หลายแพลตฟอร์มของ Kotlin

ข้อผิดพลาดในการคอมไพล์ในโค้ด Kotlin MPP เนื่องจากไม่มีสัญลักษณ์ การอัปเกรดปลั๊กอิน Kotlin เป็นเวอร์ชัน 1.4 จะแก้ปัญหานี้ได้

ความขัดแย้งในการแมปคีย์บน Linux

แป้นพิมพ์ลัดบางรายการใน Linux ขัดแย้งกับแป้นพิมพ์เริ่มต้นของ Linux และแป้นพิมพ์ลัดของเครื่องมือจัดการหน้าต่างยอดนิยม เช่น KDE และ GNOME แป้นพิมพ์ลัดที่ทับซ้อนกันเหล่านี้อาจไม่ทำงานตามที่คาดไว้ใน Android Studio

ดูข้อมูลเพิ่มเติมเกี่ยวกับปัญหานี้ (รวมถึงวิธีแก้ปัญหาเฉพาะหน้าที่เป็นไปได้) ได้ ในเครื่องมือติดตามข้อบกพร่องของ IntelliJ

ข้อความ UI ขนาดเล็กบน ChromeOS

ใน ChromeOS ข้อความอาจปรากฏเล็กกว่ารุ่นก่อนหน้ามาก ไปทำงาน สำหรับปัญหานี้ ให้ทำดังนี้

  1. เปิดหน้าต่างการตั้งค่าโดยคลิกไฟล์ > การตั้งค่า
  2. ไปที่ Appearance & พฤติกรรม > ลักษณะที่ปรากฏ
  3. เลือกใช้แบบอักษรที่กำหนดเอง
  4. เพิ่มขนาดแบบอักษร
  5. ในหน้าต่างการตั้งค่า ให้ไปที่เครื่องมือแก้ไข > แบบอักษร
  6. เพิ่มขนาดแบบอักษร
  7. คลิกตกลง

การแก้ไขโค้ด

ส่วนนี้จะอธิบายปัญหาที่ทราบซึ่งเกี่ยวข้องกับเครื่องมือแก้ไขโค้ด

การป้อนข้อมูลด้วยแป้นพิมพ์ที่ค้าง - "iBus" ปัญหาใน Linux

มีคนรู้จัก การโต้ตอบระหว่าง Daemon ของ iBus บน Linux และ Android Studio ในบางส่วน สถานการณ์ต่างๆ ที่ IDE จะหยุดตอบสนองต่อการป้อนข้อมูลด้วยแป้นพิมพ์หรือเริ่มการป้อนข้อมูล อักขระแบบสุ่ม ข้อบกพร่องนี้เกิดจากการซิงค์ข้อมูลไม่ครบ ระหว่าง iBus และ XLib + AWT และมีการรายงานอัปสตรีมไปยัง เจ็ทเบรนส์ และ iBus มี วิธีแก้ปัญหาปัจจุบัน 3 ประการสำหรับปัญหานี้

  • วิธีแก้ปัญหาที่ 1: บังคับให้ iBus เข้าสู่โหมดซิงโครนัส ก่อนเริ่มใช้ Android Studio ให้เรียกใช้คำสั่งต่อไปนี้ในบรรทัดคำสั่ง
    $ IBUS_ENABLE_SYNC_MODE=1 ibus-daemon -xrd
  • วิธีแก้ปัญหาที่ 2: ปิดใช้อินพุต iBus ใน Android Studio เมื่อต้องการปิดใช้อินพุต iBus สำหรับ Android Studio เท่านั้น ให้เรียกใช้คำสั่งต่อไปนี้ในบรรทัดคำสั่ง
    $ XMODIFIERS= ./bin/studio.sh
    วิธีแก้ปัญหาเฉพาะหน้านี้จะปิดใช้เฉพาะวิธีการป้อนข้อมูลสำหรับ Android Studio ไม่ใช่ แอปพลิเคชันอื่นๆ ที่คุณอาจใช้งาน โปรดทราบว่าหากคุณรีสตาร์ทส่วน Daemon ขณะที่ Android Studio ทำงานอยู่ (เช่น โดยการเรียกใช้ ibus-daemon -rd) คุณจะสามารถปิดใช้วิธีการป้อนข้อมูลได้อย่างมีประสิทธิภาพ แอปพลิเคชันอื่นๆ และอาจทําให้ JVM ของ Android Studio ขัดข้องด้วย เกิดความผิดพลาดในการแบ่งกลุ่มลูกค้า
  • วิธีแก้ปัญหาที่ 3: ตรวจสอบการเชื่อมโยงทางลัดอีกครั้งเพื่อให้แน่ใจว่า ไม่ได้ตั้งค่าทางลัดสำหรับอินพุตถัดไปเป็น Control+Space เนื่องจาก ทางลัดการเติมโค้ดใน Android Studio Ubuntu 14.04 (Trusty) ทำให้ Super+Space เป็นทางลัดเริ่มต้น แต่การตั้งค่าจากก่อนหน้า อาจยังคงมีเวอร์ชันต่างๆ อยู่ หากต้องการตรวจสอบการเชื่อมโยงทางลัด ให้เรียกใช้ ibus-setup ในบรรทัดคำสั่งเพื่อเปิดหน้าต่าง IBus Preferences ภายใต้แป้นพิมพ์ลัด ให้เลือกวิธีการป้อนข้อมูลถัดไป หากตั้งค่าเป็น Control+Space ให้เปลี่ยนเป็น Super+Space หรือแป้นพิมพ์ลัดอื่นตามต้องการ

การกำหนดค่าโปรเจ็กต์

ส่วนนี้จะอธิบายปัญหาที่ทราบเกี่ยวกับการกำหนดค่าโปรเจ็กต์และ Gradle การซิงค์

การซิงค์ Gradle ล้มเหลว: ท่อเสีย

ปัญหาคือ Daemon ของ Gradle พยายามใช้ IPv4 แทน IPv6

  • วิธีแก้ปัญหาที่ 1: ใน Linux ให้ใส่ข้อมูลต่อไปนี้ใน ~/.profile หรือ ~/.bash_profile
    export _JAVA_OPTIONS="-Djava.net.preferIPv6Addresses=true"
  • วิธีแก้ปัญหาที่ 2: ใน vmoptions ของ Android Studio เปลี่ยนเส้น -Djava.net.preferIPv4Addresses=true เป็น -Djava.net.preferIPv6Addresses=true สำหรับข้อมูลเพิ่มเติม โปรดดู ผู้ใช้ IPv6 ของเครือข่าย คำแนะนำ

"แอปเทียบเท่าไม่ได้ตรวจสอบสิทธิ์" ข้อผิดพลาดจากการซิงค์ของ Gradle หรือ SDK Manager

สาเหตุหลักของข้อผิดพลาดเหล่านี้คือใบรับรองที่หายไปใน $JAVA_HOME/jre/lib/certificates/cacerts ในการแก้ไขข้อผิดพลาดเหล่านี้ ให้ดำเนินการต่อ ดังนี้

  • หากคุณใช้พร็อกซี ให้ลองเชื่อมต่อโดยตรง หากการเชื่อมต่อโดยตรงใช้งานได้ คุณอาจต้องใช้ keytool เพื่อเพิ่มใบรับรองของพร็อกซีเซิร์ฟเวอร์ลงในไฟล์ cacerts เพื่อเชื่อมต่อผ่านพร็อกซี
  • ติดตั้ง JDK ที่รองรับซึ่งไม่มีการแก้ไขอีกครั้ง มี ปัญหาที่ทราบแล้ว ส่งผลต่อผู้ใช้ Ubuntu ซึ่งทำให้แท็กว่างเปล่า /etc/ssl/certs/java/cacerts ในการแก้ไขเบื้องต้น ให้ใช้ ต่อไปนี้ในบรรทัดคำสั่ง
    sudo /var/lib/dpkg/info/ca-certificates-java.postinst configure

กำลังทำให้ใช้งานได้

ส่วนนี้จะอธิบายปัญหาที่ทราบเกี่ยวกับการทำให้แอปใช้งานได้กับอุปกรณ์ที่เชื่อมต่อ อุปกรณ์

[Mac OS เท่านั้น] ระบบไม่นำการอัปเดตเพิ่มเติมไปใช้เนื่องจากมีปัญหาเกี่ยวกับการดูไฟล์ Gradle ในโปรเจ็กต์ที่บันทึกไว้ภายใต้ /System/Volumes/Data

ส่งผลกระทบต่อปัญหา Gradle 18149 ปลั๊กอิน Android Gradle เวอร์ชัน 7.0 ขึ้นไปเนื่องจากต้องใช้ Gradle เวอร์ชัน 7.0 ขึ้นไป เริ่มตั้งแต่ Gradle 7.0 เป็นต้นไป การดูไฟล์จะเปิดใช้โดยค่าเริ่มต้น หากคุณกำลังทำงานบน Mac OS และโปรเจ็กต์ของคุณได้รับการบันทึกไว้ใน /System/Volumes/Data การดูไฟล์ Gradle ไม่ติดตามการเปลี่ยนแปลงไฟล์อย่างถูกต้อง ซึ่งจะทำให้ระบบบิลด์ไม่เห็นการเปลี่ยนแปลงไฟล์ใดๆ และจะ ดังนั้น จึงไม่อัปเดต APK จากนั้นรหัสการทำให้ใช้งานได้ที่เพิ่มขึ้นจะ ไม่มี เนื่องจากสถานะ APK ในเครื่องตรงกับในอุปกรณ์

คุณควรย้ายไดเรกทอรีของโปรเจ็กต์ไปยังผู้ใช้ของคุณเพื่อแก้ปัญหานี้ ซึ่งก็คือภายใต้ /Users/username จากนั้น ระบบบิลด์จะ ได้รับการแจ้งเตือนอย่างถูกต้องเกี่ยวกับการเปลี่ยนแปลงไฟล์โดยการดูไฟล์ Gradle และส่วนเพิ่ม การเปลี่ยนแปลงทั้งหมดจะมีผลสำเร็จ

HAXM ของโปรแกรมจำลอง Android ใน macOS High Sierra

โปรแกรมจำลองของ Android เปิดอยู่ macOS High Sierra (10.13) ต้องใช้ HAXM 6.2.1+ เพื่อประสิทธิภาพสูงสุด ความเข้ากันได้และความเสถียรของแอป macOS อย่างไรก็ตาม macOS 10.13 ขั้นตอนการติดตั้งส่วนขยายเคอร์เนล เช่น HAXM คุณต้องมี เพื่ออนุญาตให้ติดตั้งส่วนขยายเคอร์เนลด้วยตนเองดังนี้

  1. ก่อนอื่น ให้พยายามติดตั้ง HAXM เวอร์ชันล่าสุดจาก เครื่องมือจัดการ SDK
  2. ใน MacOS ให้ไปที่ System Preferences > ความปลอดภัยและความเป็นส่วนตัว
  3. หากคุณเห็นการแจ้งเตือนว่าซอฟต์แวร์ระบบจากผู้พัฒนา "Intel Corporation แอปพลิเคชัน" ถูกบล็อกไม่ให้โหลด คลิกอนุญาต

ดูข้อมูลเพิ่มเติมและวิธีแก้ปัญหาได้ที่หน้าเว็บนี้ของ Apple และปัญหา 62395878

ใช้การเปลี่ยนแปลง

ส่วนนี้อธิบายปัญหาที่ทราบซึ่งเกี่ยวข้องกับใช้ การเปลี่ยนแปลง

ชื่อแอปใหม่ไม่มีผล

หากคุณเปลี่ยนชื่อแอปแล้วพยายามใช้การเปลี่ยนแปลงดังกล่าว ชื่อที่อัปเดตอาจ ไม่แสดง หากต้องการแก้ปัญหานี้ ให้คลิกเรียกใช้ ไอคอนเรียกใช้ ในการทำให้แอปใช้งานได้อีกครั้งและดูการเปลี่ยนแปลง

ปัญหาในรันไทม์ Android แสดงข้อผิดพลาด

หากคุณใช้อุปกรณ์ที่ใช้ Android 8.0 หรือ 8.1 คุณอาจประสบกับ "VERIFICATION_ERROR" เมื่อพยายามใช้การเปลี่ยนแปลงบางประเภท (โดยเฉพาะหากคุณใช้ Kotlin) ข้อความนี้เกิดจากปัญหาเกี่ยวกับรันไทม์ Android ซึ่งได้รับการแก้ไขแล้วใน Android 9.0 ขึ้นไป แม้ว่าปัญหานี้จะทำให้ "ใช้การเปลี่ยนแปลง" ไม่สำเร็จ แต่คุณยังคงเรียกใช้ไอคอนเรียกใช้แอปอีกครั้งเพื่อดูการเปลี่ยนแปลงได้ อย่างไรก็ตาม เราขอแนะนำให้คุณอัปเกรด เป็น Android 9.0 ขึ้นไป

การแก้ไขข้อบกพร่องและการทดสอบ

ส่วนนี้อธิบายปัญหาที่ทราบแล้วที่เกี่ยวข้องกับการแก้ไขข้อบกพร่องและการทดสอบแอป

การทดสอบ JUnit ที่ไม่มีทรัพยากรใน classpath เมื่อเรียกใช้จาก Android Studio

หากคุณมีโฟลเดอร์ทรัพยากรที่เฉพาะเจาะจงในโมดูล Java ระบบจะไม่พบทรัพยากรเหล่านั้นเมื่อทำการทดสอบจาก IDE กำลังทดสอบ จะใช้ Gradle จากบรรทัดคำสั่งได้ กำลังดำเนินการกับ Gradle ชื่อ check จาก IDE ก็ทำได้เช่นกัน ดูปัญหา 64887 สำหรับข้อมูลเพิ่มเติม รายละเอียด

ปัญหานี้เกิดขึ้นเนื่องจากใน IntelliJ 13 ซึ่งกำหนดให้คุณต้องมี โฟลเดอร์เดียวเป็น classpath เครื่องมือสร้างของ IntelliJ คัดลอกทรัพยากรทั้งหมด ลงในโฟลเดอร์บิลด์ดังกล่าว แต่ Gradle ไม่คัดลอกทรัพยากร

  • วิธีแก้ปัญหาที่ 1: เรียกใช้งาน Gradle check จาก IDE แทนการเรียกใช้การทดสอบ 1 หน่วย
  • วิธีแก้ปัญหาที่ 2: อัปเดตสคริปต์บิลด์เพื่อคัดลอกทรัพยากรไปยัง โฟลเดอร์บิลด์ โปรดดู ความคิดเห็น #13 เพื่อดูข้อมูลเพิ่มเติม

การเรียกใช้การทดสอบ JUnit อาจคอมไพล์โค้ด 2 ครั้ง

เมื่อสร้างโปรเจ็กต์ใหม่ ระบบอาจสร้างการกำหนดค่าเทมเพลต JUnit ดังกล่าว ด้วย 2 ข้อความ "ก่อนการเปิดตัว" ขั้นตอน: สร้างและจดจำ Gradle การกำหนดค่านี้ จากนั้นก็จะมีการเผยแพร่ไปยังการกำหนดค่าการเรียกใช้ JUnit ที่สร้างขึ้นทั้งหมด

  • ในการแก้ไขปัญหาของโครงการปัจจุบัน ให้คลิกเรียกใช้ > แก้ไข การกำหนดค่า และเปลี่ยนการกำหนดค่า JUnit เริ่มต้นเป็นเฉพาะ รวมขั้นตอน "สร้าง" แบบ Gradle
  • หากต้องการแก้ไขปัญหาสำหรับโปรเจ็กต์ทั้งหมดในอนาคต ให้คลิกไฟล์ > ปิด โปรเจ็กต์ คุณควรจะเห็นหน้าจอต้อนรับ จากนั้นคลิกกำหนดค่า > ค่าเริ่มต้นของโปรเจ็กต์ > เรียกใช้การกำหนดค่า และเปลี่ยน JUnit ให้รวมเฉพาะขั้นตอน "สร้างแบบ Gradle-Aware"

การกำหนดค่าการทดสอบบางอย่างใช้งานไม่ได้

มีบางการกำหนดค่าที่เรียกใช้ ที่ใช้ได้เมื่อคลิกขวาที่วิธีทดสอบว่าถูกต้อง โดยเฉพาะอย่างยิ่ง การกำหนดค่าต่อไปนี้ไม่ถูกต้อง:

  • การกำหนดค่าการเรียกใช้ Gradle (ซึ่งมีโลโก้ Gradle เป็นไอคอน) ไม่นะ ที่ทำงาน
  • การกําหนดค่าการเรียกใช้ JUnit (ซึ่งมีไอคอนที่ไม่มี Android สีเขียว) จะไม่มีผลกับการทดสอบที่ใช้เครื่องมือวัด ซึ่งไม่สามารถเรียกใช้ได้ใน JVM ของอุปกรณ์
Android Studio ยังจดจำการกำหนดค่าการเรียกใช้ที่สร้างใน บริบท (เช่น คลิกขวาที่ชั้นเรียนหรือเมธอดที่ต้องการ) และจะไม่ ที่เสนอให้ทำงานในการกำหนดค่าอื่นในอนาคต ในการแก้ไขปัญหานี้ ให้คลิก เรียกใช้ > แก้ไขการกำหนดค่า และนำรายการที่สร้างไม่ถูกต้องออก การกำหนดค่าเอง

การเพิ่มเบรกพอยท์ของ Java ขณะที่แก้ไขข้อบกพร่องของโค้ดแบบเนทีฟ

ขณะที่แอปหยุดชั่วคราวที่จุดหยุดพักในโค้ดเนทีฟ โปรแกรมแก้ไขข้อบกพร่องแบบอัตโนมัติและคู่อาจไม่รู้จักจุดหยุดพัก Java ใหม่ที่คุณตั้งไว้ในทันที เพิ่มเบรกพอยท์ของ Java เพื่อหลีกเลี่ยงปัญหานี้ ก่อนเริ่มเซสชันการแก้ไขข้อบกพร่อง หรือขณะที่แอปหยุดชั่วคราวใน Java อีกอันหนึ่ง ดูข้อมูลเพิ่มเติมได้ที่ปัญหา 229949

ออกจากโปรแกรมแก้ไขข้อบกพร่องของระบบ

ขณะใช้โปรแกรมแก้ไขข้อบกพร่องอัตโนมัติหรือคู่เพื่อ ดีบัก Java และโค้ดแบบเนทีฟ หากคุณเข้าสู่ฟังก์ชันจากเนทีฟ โค้ด Java (เช่น โปรแกรมแก้ไขข้อบกพร่องจะหยุดการดำเนินการชั่วคราวที่บรรทัดใน โค้ด Java ที่เรียกใช้ฟังก์ชันเนทีฟและคุณคลิกเข้าสู่ขั้นตอน ) และคุณต้องการย้อนกลับไปที่โค้ด Java ให้คลิก ดำเนินโปรแกรมต่อ (แทนออก หรือผ่าน ) กระบวนการของแอปจะยังคงหยุดชั่วคราว ดังนั้นให้คลิกกลับมาทำงานอีกครั้ง โปรแกรม ใน your-module-java แท็บเพื่อเล่นวิดีโอต่อ ดูข้อมูลเพิ่มเติมได้ที่ปัญหา 224385

โปรแกรมแก้ไขข้อบกพร่องของระบบค้างขณะโหลดไลบรารี

ขณะใช้โปรแกรมแก้ไขข้อบกพร่องของระบบเป็นครั้งแรกหลังจากอัปเกรดเป็น Android สตูดิโอ 4.2 ขึ้นไป โปรแกรมแก้ไขข้อบกพร่องของระบบอาจหยุดตอบสนองขณะโหลด ไลบรารีจากอุปกรณ์ Android ปัญหานี้เป็นปัญหาที่เกิดอย่างต่อเนื่อง จะเกิดขึ้นได้แม้ว่าคุณจะหยุดและรีสตาร์ทโปรแกรมแก้ไขข้อบกพร่องแล้วก็ตาม วิธีแก้ไขปัญหานี้ ลบแคช LLDB ที่ $USER/.lldb/module-cache/

โปรแกรมแก้ไขข้อบกพร่องของระบบขัดข้องด้วย "กระบวนการแก้ไขข้อบกพร่องเสร็จสิ้นโดยมีโค้ดออก 127"

ข้อผิดพลาดนี้เกิดขึ้นในแพลตฟอร์มที่ใช้ Linux เมื่อเริ่มต้น โปรแกรมแก้ไขข้อบกพร่องของระบบ โดยระบุว่าไลบรารีรายการหนึ่งที่จำเป็นสำหรับโฆษณาเนทีฟ ไม่ได้ติดตั้งโปรแกรมแก้ไขข้อบกพร่องไว้ในระบบภายใน ชื่อของไฟล์ที่ขาดหายไป อาจมีการพิมพ์คลังภาพในไฟล์ idea.log อยู่แล้ว หากไม่ได้ใช้ โปรดใช้ เทอร์มินัลสำหรับไปยังไดเรกทอรีการติดตั้ง Android Studio และเรียกใช้ บรรทัดคำสั่ง bin/lldb/bin/LLDBFrontend --version เพื่อดูว่าไลบรารีใด ไม่มี โดยปกติแล้ว ไลบรารีที่ขาดหายไปคือ ncurses5 ในฐานะ Linux ล่าสุดบางตัว อัปเกรดการกระจายเป็น ncurses6 แล้ว

เครื่องมือสร้างโปรไฟล์

ส่วนนี้จะอธิบายปัญหาที่ทราบเกี่ยวกับเครื่องมือสร้างโปรไฟล์

เครื่องมือสร้างโปรไฟล์หน่วยความจำของระบบ: การทำโปรไฟล์ไม่พร้อมใช้งานระหว่างการเริ่มต้นแอป

เครื่องมือสร้างโปรไฟล์หน่วยความจำในเครื่องไม่พร้อมใช้งานในขณะนี้ระหว่างการเริ่มต้นแอป ช่วงเวลานี้ จะพร้อมใช้งานในรุ่นถัดไป

วิธีแก้ปัญหาชั่วคราวคือใช้เครื่องมือวิเคราะห์โปรไฟล์บรรทัดคำสั่งแบบสแตนด์อโลนของ Perfetto เพื่อบันทึกโปรไฟล์การเริ่มต้น

ข้อผิดพลาดเกี่ยวกับเวลาหมดในเครื่องมือสร้างโปรไฟล์ CPU

คุณอาจเห็นข้อความ "หยุดบันทึกไม่สำเร็จ" ข้อผิดพลาดใน CPU ของ Android Studio เครื่องมือสร้างโปรไฟล์เมื่อคุณเลือกเมธอด Java ตัวอย่างหรือ Trace Java Method การกำหนดค่าเอง ข้อผิดพลาดเหล่านี้มักเป็นข้อผิดพลาดเกี่ยวกับเวลาหมด โดยเฉพาะหากคุณเห็นข้อความแสดงข้อผิดพลาดต่อไปนี้ในไฟล์ idea.log

Wait for ART trace file timed out

ข้อผิดพลาดในการหมดเวลามีแนวโน้มที่จะส่งผลต่อเมธอดที่มีการติดตามมากกว่าเมธอดแบบสุ่มตัวอย่างและ การบันทึกที่ยาวกว่า เพื่อเป็นการแก้ไขปัญหาเฉพาะหน้า อาจลองบันทึกให้สั้นลงเพื่อดูว่าข้อผิดพลาดหายไปไหม

หากพบปัญหาเกี่ยวกับเวลาหมดอายุของเครื่องมือวิเคราะห์ โปรดรายงานข้อบกพร่องพร้อมระบุยี่ห้อ/รุ่นของอุปกรณ์และรายการที่เกี่ยวข้องจาก idea.log และ logcat

ข้อยกเว้น ADB เมื่อแก้ไขข้อบกพร่องหรือสร้างโปรไฟล์

เมื่อใช้เครื่องมือแพลตฟอร์ม 29.0.3, การแก้ไขข้อบกพร่องของระบบและ Android Studio เครื่องมือสร้างโปรไฟล์อาจทำงานไม่ถูกต้อง และคุณอาจเห็น "AdbCommandRejectedException" หรือ "เชื่อมต่อพอร์ตไม่สำเร็จ" ในช่วงidea.log เมื่อคุณเลือก ความช่วยเหลือ > แสดงบันทึก การอัปเกรดเครื่องมือแพลตฟอร์มเป็น 29.0.4 ขึ้นไปจะแก้ไขปัญหาทั้ง 2 อย่างได้

ในการอัปเกรดเครื่องมือแพลตฟอร์ม ให้ทำดังนี้

  1. เปิด SDK Manager จาก Android Studio โดยคลิกเครื่องมือ > SDK Manager หรือคลิก SDK Manager ในแถบเครื่องมือ
  2. คลิกช่องทำเครื่องหมายถัดจาก Android SDK Platform-Tools เพื่อแสดงเครื่องหมายถูก ไอคอนดาวน์โหลด ควรปรากฏในคอลัมน์ด้านซ้าย
  3. คลิกใช้หรือตกลง

ปลั๊กอินทําให้หน้าต่างเอาต์พุตการสร้างไม่ทํางาน

การใช้ปลั๊กอินปากกาไฮไลต์แบบง่ายๆ จะช่วยป้องกันไม่ให้เนื้อหาปรากฏใน หน้าต่างเอาต์พุตของบิลด์ บิลด์ทำงานและแท็บเอาต์พุตของบิลด์ปรากฏขึ้น แต่ไม่มีเอาต์พุตที่พิมพ์ออกมา (ปัญหา #204791544)

คำสั่งติดตั้งป้องกันการเปิดใช้

การติดตั้ง Android Studio เวอร์ชันใหม่ก่อนเวอร์ชันเก่าอาจ เวอร์ชันเก่าจะป้องกันไม่ได้ ตัวอย่างเช่น หากคุณติดตั้ง เวอร์ชัน Canary ของ Android Studio จากนั้นลองติดตั้งและเปิดใช้งาน เวอร์ชันเสถียรอาจไม่เปิดตัว ในกรณีนี้ คุณต้อง โปรดล้างแคชเพื่อเปิดเวอร์ชันที่เสถียร (เก่ากว่า) ใน macOS หากต้องการล้างข้อมูล แคชจะลบ Library/ApplicationSupport/Google/AndroidStudioversion_number ไดเรกทอรี ใน Windows หากต้องการล้างการใช้แคช การทำความสะอาดดิสก์

Espresso Test Recorder ทำงานกับ Compose ไม่ได้

โปรแกรมบันทึกการทดสอบ Espresso ใช้ไม่ได้กับโปรเจ็กต์ที่มี Compose หากต้องการสร้างการทดสอบ UI สำหรับโปรเจ็กต์ที่มี Compose โปรดดูการทดสอบเลย์เอาต์ Compose

แป้นพิมพ์ลัด Logcat ขัดแย้งกับรูปแบบแป้นพิมพ์ที่ไม่ใช่ภาษาอังกฤษ

หากคุณใช้เลย์เอาต์แป้นพิมพ์ที่ไม่ใช่ภาษาอังกฤษ แป้นพิมพ์ลัดเริ่มต้นของ Logcat อาจขัดแย้งกับเลย์เอาต์และทำให้พิมพ์อักขระบางตัวไม่ได้เมื่อแก้ไขข้อความใน Android Studio ในการแก้ปัญหานี้ ลบหรือจับคู่คีย์แมป Logcat ที่ขัดแย้งอีกครั้ง วิธีแก้ไขคีย์แมป Logcat ใน Android Studio ไปที่ Android Studio > การตั้งค่า > Keymap และค้นหา Logcat ในรายการคีย์แมป ดูข้อมูลเพิ่มเติมได้ที่ปัญหา #263475910

ปัญหานี้จะแก้ไขได้โดยการนำทางลัด Logcat ใน Android ออก Studio Electric Eel Patch 1.

ปัญหาที่ทราบเกี่ยวกับปลั๊กอิน Android Gradle

ส่วนนี้จะอธิบายปัญหาที่ทราบแล้วซึ่งมีอยู่ในเวอร์ชันที่เสถียรล่าสุดของ ปลั๊กอิน Android Gradle

ไลบรารีฟีเจอร์แบบไดนามิกบางรายการอาจไม่ได้รับการเรียกใช้เครื่องมือตรวจสอบโค้ด

เมื่อเรียกใช้ Lint ด้วย checkDependencies = true จากโมดูลแอป ระบบจะไม่ตรวจสอบทรัพยากร Dependency ของไลบรารีฟีเจอร์แบบไดนามิก เว้นแต่จะเป็นทรัพยากร Dependency ของแอปด้วย (ปัญหา #191977888) ในการแก้ไขเบื้องต้น คุณสามารถเรียกใช้งาน Lint ในไลบรารีเหล่านั้นได้

ไฟล์เซ็นชื่อพร้อมอักขระขึ้นบรรทัดใหม่

การลงนาม JAR (รูปแบบ v1) ไม่รองรับชื่อไฟล์ที่มีอักขระขึ้นบรรทัดใหม่ อักขระย้อนกลับ (ปัญหา #63885809)

การแก้ไขเอาต์พุตของตัวแปรในเวลาบิลด์อาจไม่ทํางาน

การใช้ API เวอร์ชันแปรผันเพื่อจัดการเอาต์พุตของตัวแปรเสียหายใน ปลั๊กอิน แต่ยังคงใช้งานได้กับงานง่ายๆ เช่น การเปลี่ยนชื่อ APK ในระหว่างเวลาสร้าง ดังที่แสดงด้านล่าง

// If you use each() to iterate through the variant objects,
// you need to start using all(). That's because each() iterates
// through only the objects that already exist during configuration time—
// but those object don't exist at configuration time with the new model.
// However, all() adapts to the new model by picking up object as they are
// added during execution.
android.applicationVariants.all { variant ->
    variant.outputs.all {
        outputFileName = "${variant.name}-${variant.versionName}.apk"
    }
}

อย่างไรก็ตาม งานที่ซับซ้อนมากขึ้นซึ่งเกี่ยวข้องกับการเข้าถึงออบเจ็กต์ outputFile จะใช้งานไม่ได้อีกต่อไป นั่นเป็นเพราะจะไม่มีการสร้างงานที่เจาะจงตัวแปรอีกต่อไป ในระหว่างขั้นตอนการกำหนดค่า ซึ่งทำให้ปลั๊กอินไม่รู้ว่า เอาต์พุตทั้งหมดตั้งแต่แรกก็ยังช่วยให้กำหนดค่าได้เร็วขึ้นด้วย

ManifestOutputFile ใช้งานไม่ได้อีกต่อไป

เมธอด processManifest.manifestOutputFile() ไม่พร้อมใช้งานแล้ว และคุณได้รับข้อผิดพลาดต่อไปนี้เมื่อเรียกใช้

A problem occurred configuring project ':myapp'.
   Could not get unknown property 'manifestOutputFile' for task
   ':myapp:processDebugManifest' of type
   com.android.build.gradle.tasks.ProcessManifest.

แทนที่จะเรียก manifestOutputFile() เพื่อรับไฟล์ Manifest สำหรับแต่ละรายการ คุณสามารถเรียกใช้ processManifest.manifestOutputDirectory() เพื่อส่งคืน เส้นทางของไดเรกทอรีที่มีไฟล์ Manifest ที่สร้างขึ้นทั้งหมด จากนั้นคุณจะสามารถ ค้นหาไฟล์ Manifest และใช้ตรรกะของคุณกับไฟล์ Manifest ตัวอย่างด้านล่างจะเปลี่ยนรหัสเวอร์ชันในไฟล์ Manifest แบบไดนามิก

android.applicationVariants.all { variant ->
    variant.outputs.all { output ->
        output.processManifest.doLast {
            // Stores the path to the maifest.
            String manifestPath = "$manifestOutputDirectory/AndroidManifest.xml"
            // Stores the contents of the manifest.
            def manifestContent = file(manifestPath).getText()
            // Changes the version code in the stored text.
            manifestContent = manifestContent.replace('android:versionCode="1"',
                    String.format('android:versionCode="%s"', generatedCode))
            // Overwrites the manifest with the new text.
            file(manifestPath).write(manifestContent)
        }
    }
}

ปัญหาเกี่ยวกับการรองรับ AIDL ของ AGP 7.3.0 และ Kotlin 1.7.x

การใช้ AGP 7.3.0 กับ KAPT ใน Kotlin 1.7.x จะทำให้ชุดแหล่งที่มา AIDL สำหรับ ตัวแปรบิลด์ที่เฉพาะเจาะจงที่จะนำออก คุณยังใช้แหล่งที่มา AIDL อื่นได้ ชุด ซึ่งรวมถึงชุดของ main/, ประเภทบิลด์, รสชาติของผลิตภัณฑ์ และชุดค่าผสม รสชาติของผลิตภัณฑ์ หากต้องการใช้ชุดแหล่งที่มา AIDL เฉพาะตัวแปร ให้ทำดังนี้ ใช้ Kotlin 1.6.21 ต่อไป

แก้ไขปัญหาที่ทราบแล้ว

ส่วนนี้จะอธิบายปัญหาที่ทราบซึ่งได้รับการแก้ไขแล้วในรุ่นล่าสุด ถ้า คุณพบปัญหาเหล่านี้ คุณควรอัปเดต Android Studio เป็นเวอร์ชันล่าสุดที่เสถียรหรือเวอร์ชันตัวอย่าง

แก้ไขใน Android Studio 2021.1.1

  • ไม่มีเอาต์พุต Lint: ไม่มีเอาต์พุตข้อความ Lint ที่พิมพ์ไปยัง stdout เมื่อ งาน Lint คือ UP-TO-DATE (ปัญหา #191897708) แก้ไขแล้วใน AGP 7.1.0-alpha05
  • ปัญหาเกี่ยวกับการทดสอบ 1 หน่วยของโปรเจ็กต์แอปที่ใช้ปลั๊กอิน Hilt คลาสพาธของการทดสอบ 1 หน่วยมีคลาสแอปที่ไม่ได้ใช้เครื่องมือ ซึ่งหมายถึงคลาสของแอป Hilt ไม่ได้ใช้คลาสของแอปเพื่อจัดการการแทรกทรัพยากร Dependency เมื่อ กำลังทดสอบ 1 หน่วย (ปัญหา #213534628) แก้ไขใน AGP 7.1.1 แล้ว

แก้ไขแล้วใน Android Studio 2020.3.1

  • ข้อยกเว้น Lint ในโปรเจ็กต์ Kotlin: โปรเจ็กต์ Kotlin ที่ตั้งค่า checkDependencies = true อาจพบข้อผิดพลาดหรือข้อผิดพลาดเกี่ยวกับตัวชี้ Null (ปัญหา #158777858)

แก้ไขแล้วใน Android Studio 4.2

  • IDE ค้างใน macOS Big Sur: Android Studio 4.1 อาจค้างเมื่อคุณเปิดกล่องโต้ตอบ

แก้ไขแล้วใน Android Studio 4.1

  • รีสตาร์ทเพื่อใช้การตั้งค่าหน่วยความจำจาก IDE เวอร์ชันก่อนหน้า: หลังจาก กำลังอัปเดต Android Studio คุณต้องรีสตาร์ท Android Studio เพื่อใช้ การตั้งค่าหน่วยความจำที่ย้ายมาจาก IDE เวอร์ชันก่อนหน้า
  • ระบบจะไม่สร้างคลาส Manifest ที่มีสตริงสิทธิ์ที่กำหนดเองโดยค่าเริ่มต้นอีกต่อไป: หากต้องการสร้างคลาส ให้ตั้งค่า android.generateManifestClass = true

แก้ไขแล้วใน Android Studio 3.6

  • ข้อผิดพลาดในการติดตั้ง APK ใน LineageOS: ทำให้แอปใช้งานได้ในอุปกรณ์ การใช้ LineageOS หรือ CyanogenMod บางเวอร์ชันอาจล้มเหลวและ ข้อยกเว้น INSTALL_PARSE_FAILED_NOT_APK รายการ

    ใน Android Studio 3.6 เบต้า 1 ขึ้นไป IDE จะจัดการข้อยกเว้นนี้โดยทำการติดตั้งแอปอย่างเต็มรูปแบบเมื่อคุณนำแอปไปใช้กับอุปกรณ์ LineageOS หรือ CyanogenMod ซึ่งอาจทำให้เวลาในการนำส่งนานขึ้น

แก้ไขแล้วใน Android Studio 3.5.2

  • รูปแบบโค้ด XML เสีย: เมื่อแก้ไขโค้ด XML ทาง IDE จะใช้ รูปแบบโค้ดไม่ถูกต้องเมื่อคุณเลือก โค้ด > จัดรูปแบบโค้ดใหม่จาก แถบเมนู

แก้ไขแล้วใน Android Studio 3.3.1

  • ข้อผิดพลาดหน่วยความจำเต็มเมื่อสแกนโปรเจ็กต์ที่ใช้ C++: เมื่อ Gradle สแกน โปรเจ็กต์ที่มีโค้ด C++ ในตำแหน่งมากกว่า 1 ตำแหน่งในไดรฟ์เดียวกัน การสแกนจะรวมไดเรกทอรีทั้งหมดที่อยู่ใต้ไดเรกทอรีทั่วไปรายการแรก กำลังสแกน ไดเรกทอรีและไฟล์จำนวนมากอาจทำให้เกิดข้อผิดพลาดในหน่วยความจํา

    สำหรับข้อมูลเพิ่มเติมเกี่ยวกับปัญหานี้ โปรดอ่าน ข้อบกพร่องที่เกี่ยวข้องกับ ปัญหา