ต่อไปนี้คือฟีเจอร์ใหม่ใน Android Studio Iguana
รุ่นแพตช์
ต่อไปนี้คือรายการรุ่นแพตช์ใน Android Studio Iguana และปลั๊กอิน Android Gradle 8.3
Android Studio Iguana | 2023.2.1 แพตช์ 2 และ AGP 8.3.2 (เมษายน 2024)
การอัปเดตย่อยนี้มีการแก้ไขข้อบกพร่องต่อไปนี้
Android Studio Iguana | 2023.2.1 แพตช์ 1 และ AGP 8.3.1 (มีนาคม 2024)
การอัปเดตย่อยนี้มีการแก้ไขข้อบกพร่องต่อไปนี้
การอัปเดตแพลตฟอร์ม IntelliJ IDEA 2023.2
Android Studio Iguana มีการอัปเดต IntelliJ IDEA 2023.2 ซึ่งช่วยปรับปรุงประสบการณ์การใช้งาน IDE ของ Studio ดูรายละเอียดเกี่ยวกับการเปลี่ยนแปลงได้ที่ บันทึกประจำรุ่นของ IntelliJ IDEA 2023.2
การผสานรวมระบบควบคุมเวอร์ชันในข้อมูลเชิงลึกด้านคุณภาพของแอป
ข้อมูลเชิงลึกด้านคุณภาพของแอป ตอนนี้ช่วยให้คุณไปยังโค้ดที่เกี่ยวข้องจากสแต็กเทรซของ Crashlytics ได้ ณ จุดที่เกิดข้อขัดข้อง AGP จะแนบข้อมูล Git Commit Hash ไปกับรายงานข้อขัดข้อง ซึ่งช่วยให้ Android Studio ไปยังโค้ดของคุณและแสดงลักษณะของโค้ดในเวอร์ชันที่เกิดปัญหาได้ เมื่อดูรายงานข้อขัดข้องใน ข้อมูลเชิงลึกด้านคุณภาพของแอป คุณสามารถเลือกที่จะไปยังบรรทัดโค้ดในการ ตรวจสอบ Git ปัจจุบัน หรือดู Diff ระหว่างการตรวจสอบปัจจุบันกับเวอร์ชัน ของฐานโค้ดที่ทำให้เกิดข้อขัดข้อง

หากต้องการผสานรวมระบบควบคุมเวอร์ชันกับข้อมูลเชิงลึกด้านคุณภาพของแอป คุณ ต้องมีข้อกำหนดขั้นต่ำต่อไปนี้
- Android Studio Iguana เวอร์ชัน Canary ล่าสุด
- ปลั๊กอิน Android Gradle 8.3 เวอร์ชัน Alpha ล่าสุด
- Crashlytics SDK v18.3.7 (หรือ Firebase Android Bill of Materials v32.0.0)
หากต้องการใช้การผสานรวมการควบคุมเวอร์ชันสำหรับประเภทบิลด์ที่แก้ไขข้อบกพร่องได้ ให้เปิดใช้แฟล็ก vcsInfo ในไฟล์บิลด์ระดับโมดูล สำหรับบิลด์รุ่นที่เผยแพร่ (แก้ไขข้อบกพร่องไม่ได้) ระบบจะเปิดใช้แฟล็กนี้โดยค่าเริ่มต้น
Kotlin
android { buildTypes { getByName("debug") { vcsInfo { include = true } } } }
ดึงดูด
android { buildTypes { debug { vcsInfo { include true } } } }
ตอนนี้เมื่อคุณสร้างแอปและเผยแพร่ไปยัง Google Play รายงานข้อขัดข้องจะมีข้อมูลที่จำเป็นเพื่อให้ IDE ลิงก์ไปยังแอปเวอร์ชันก่อนหน้าจากสแต็กเทรซได้
ดูตัวแปรข้อขัดข้องของ Crashlytics ในข้อมูลเชิงลึกด้านคุณภาพของแอป
ตอนนี้คุณสามารถใช้ข้อมูลเชิงลึกด้านคุณภาพของแอป เพื่อดูเหตุการณ์ตามตัวแปรปัญหา หรือกลุ่มเหตุการณ์ที่มี Stack Trace คล้ายกัน เพื่อช่วยวิเคราะห์สาเหตุหลักของข้อขัดข้อง หากต้องการดูเหตุการณ์ในตัวแปรแต่ละรายการของรายงานข้อขัดข้อง ให้เลือกตัวแปรจากเมนูแบบเลื่อนลง หากต้องการรวบรวมข้อมูลสำหรับตัวแปรทั้งหมด ให้เลือกทั้งหมด

การตรวจสอบ UI ของ Compose
Android Studio Iguana Canary 5 ได้เปิดตัวโหมดการตรวจสอบ UI ใหม่ใน Compose Preview เพื่อช่วยนักพัฒนาแอปสร้าง UI ที่ปรับเปลี่ยนตามอุปกรณ์และเข้าถึงได้มากขึ้นใน Jetpack Compose ฟีเจอร์นี้ทำงานคล้ายกับการผสานรวมการตรวจสอบด้วยเครื่องมือวิเคราะห์ซอร์สโค้ดด้วยภาพและการตรวจสอบการช่วยเหลือพิเศษสำหรับมุมมอง เมื่อเปิดใช้งานโหมดการตรวจสอบ UI ของ Compose แล้ว Android Studio จะตรวจสอบ UI ของ Compose โดยอัตโนมัติและตรวจสอบปัญหาการปรับเปลี่ยนตามอุปกรณ์และการช่วยเหลือพิเศษในหน้าจอขนาดต่างๆ เช่น ข้อความยืดบนหน้าจอขนาดใหญ่หรือคอนทราสต์สีต่ำ โหมดนี้จะไฮไลต์ปัญหาที่พบในการกำหนดค่าตัวอย่างต่างๆ และแสดงรายการปัญหาในแผงปัญหา
ลองใช้ฟีเจอร์นี้วันนี้โดยคลิกปุ่มการตรวจสอบ UI
ใน Compose Preview แล้วส่งความคิดเห็นมาให้เรา
ปัญหาที่ทราบของโหมดการตรวจสอบ UI
- ปัญหาที่เลือกในแผงปัญหาอาจสูญเสียโฟกัส
- "กฎระงับ" ไม่ทำงาน
การแสดงผลแบบโปรเกรสซีฟสำหรับ Compose Preview
Android Studio Iguana Canary 3 ได้เปิดตัวการแสดงผลแบบโปรเกรสซีฟใน Compose Preview เราได้ลดคุณภาพการแสดงผลของตัวอย่างที่อยู่นอกมุมมองโดยจงใจเพื่อประหยัดหน่วยความจำที่ใช้ ซึ่งเป็นส่วนหนึ่งของความพยายามอย่างต่อเนื่องในการปรับปรุงประสิทธิภาพของตัวอย่าง
เราพัฒนาฟีเจอร์นี้โดยมีเป้าหมายเพื่อปรับปรุงความสามารถในการใช้งานของตัวอย่างให้ดียิ่งขึ้นด้วยการจัดการตัวอย่างหลายรายการพร้อมกันในไฟล์ได้ ลองใช้ ฟีเจอร์นี้วันนี้และส่งความคิดเห็นของคุณ
วิซาร์ดโมดูลโปรไฟล์พื้นฐาน
ตั้งแต่ Android Studio Iguana เป็นต้นไป คุณสามารถสร้าง โปรไฟล์พื้นฐานสำหรับแอปได้ โดยใช้เทมเพลต เครื่องมือสร้างโปรไฟล์พื้นฐาน ในวิซาร์ดโมดูลใหม่ (File > New > New Module)

เทมเพลตนี้จะตั้งค่าโปรเจ็กต์เพื่อให้รองรับโปรไฟล์พื้นฐาน โดยใช้ปลั๊กอิน Baseline Profiles Gradle ใหม่ ซึ่งจะทำให้กระบวนการตั้งค่าโปรเจ็กต์ในลักษณะที่กำหนดเป็นอัตโนมัติด้วยงาน Gradle งานเดียว
นอกจากนี้ เทมเพลตยังสร้างการกำหนดค่าการเรียกใช้ที่ช่วยให้คุณสร้างโปรไฟล์พื้นฐานได้ด้วยการคลิกเพียงครั้งเดียวจากรายการแบบเลื่อนลงเลือกการกำหนดค่าการเรียกใช้/การแก้ไขข้อบกพร่อง

ทดสอบกับการเปลี่ยนแปลงการกำหนดค่าด้วย Espresso Device API
ใช้ Espresso Device API เพื่อทดสอบแอปเมื่ออุปกรณ์มีการเปลี่ยนแปลงการกำหนดค่าทั่วไป เช่น การหมุนและการกางหน้าจอ Espresso Device API ช่วยให้คุณจำลองการเปลี่ยนแปลงการกำหนดค่าเหล่านี้ในอุปกรณ์เสมือนจริงและดำเนินการทดสอบแบบซิงโครนัส ดังนั้นการดำเนินการหรือการยืนยัน UI จะเกิดขึ้นครั้งละ 1 รายการเท่านั้น และผลการทดสอบจะเชื่อถือได้มากขึ้น ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีเขียน การทดสอบ UI ด้วย Espresso
หากต้องการใช้ Espresso Device API คุณต้องมีสิ่งต่อไปนี้
- Android Studio Iguana ขึ้นไป
- ปลั๊กอิน Android Gradle 8.3 ขึ้นไป
- โปรแกรมจำลองของ Android 33.1.10 ขึ้นไป
- อุปกรณ์เสมือน Android ที่ใช้ API ระดับ 24 ขึ้นไป
ตั้งค่าโปรเจ็กต์สำหรับ Espresso Device API
หากต้องการตั้งค่าโปรเจ็กต์ให้รองรับ Espresso Device API ให้ทำดังนี้
หากต้องการให้การทดสอบส่งคำสั่งไปยังอุปกรณ์ทดสอบได้ ให้เพิ่มสิทธิ์
INTERNETและACCESS_NETWORK_STATEลงในไฟล์ Manifest ในชุดซอร์สandroidTestโดยทำดังนี้<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permissions.ACCESS_NETWORK_STATE" />
เปิดใช้แฟล็กทดลอง
enableEmulatorControlในไฟล์gradle.propertiesโดยทำดังนี้android.experimental.androidTest.enableEmulatorControl=true
เปิดใช้ตัวเลือก
emulatorControlในสคริปต์บิลด์ระดับโมดูล โดยทำดังนี้Kotlin
testOptions { emulatorControl { enable = true } }
ดึงดูด
testOptions { emulatorControl { enable = true } }
ในสคริปต์บิลด์ระดับโมดูล ให้นำเข้าไลบรารี Espresso Device ไปยังโปรเจ็กต์โดยทำดังนี้
Kotlin
dependencies { androidTestImplementation("androidx.test.espresso:espresso-device:3.6.1") }
ดึงดูด
dependencies { androidTestImplementation 'androidx.test.espresso:espresso-device:3.6.1' }
ทดสอบกับการเปลี่ยนแปลงการกำหนดค่าทั่วไป
Espresso Device API มีการวางแนวหน้าจอและสถานะอุปกรณ์พับได้หลายรายการที่คุณใช้เพื่อจำลองการเปลี่ยนแปลงการกำหนดค่าอุปกรณ์ได้
ทดสอบกับการหมุนหน้าจอ
ตัวอย่างต่อไปนี้แสดงวิธีทดสอบสิ่งที่เกิดขึ้นกับแอปเมื่อหน้าจออุปกรณ์หมุน
ก่อนอื่น ให้ตั้งค่าอุปกรณ์เป็นโหมดแนวตั้งเพื่อให้มีสถานะเริ่มต้นที่สอดคล้องกัน
import androidx.test.espresso.device.action.ScreenOrientation import androidx.test.espresso.device.rules.ScreenOrientationRule ... @get:Rule val screenOrientationRule: ScreenOrientationRule = ScreenOrientationRule(ScreenOrientation.PORTRAIT)
สร้างการทดสอบที่ตั้งค่าอุปกรณ์เป็นแนวนอนระหว่างการดำเนินการทดสอบ
@Test fun myRotationTest() { ... // Sets the device to landscape orientation during test execution. onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE) ... }
หลังจากหน้าจอหมุนแล้ว ให้ตรวจสอบว่า UI ปรับให้เข้ากับเลย์เอาต์ใหม่ตามที่คาดไว้
@Test fun myRotationTest() { ... // Sets the device to landscape orientation during test execution. onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE) composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed() composeTestRule.onNodeWithTag("BottomBar").assertDoesNotExist() }
ทดสอบกับการกางหน้าจอ
ตัวอย่างต่อไปนี้แสดงวิธีทดสอบสิ่งที่เกิดขึ้นกับแอปหากแอปอยู่ในอุปกรณ์พับได้และหน้าจอกางออก
ก่อนอื่น ให้ทดสอบโดยที่อุปกรณ์อยู่ในสถานะพับโดยเรียกใช้
onDevice().setClosedMode()ตรวจสอบว่าเลย์เอาต์ของแอป ปรับให้เข้ากับความกว้างหน้าจอขนาดกะทัดรัด@Test fun myUnfoldedTest() { onDevice().setClosedMode() composeTestRule.onNodeWithTag("BottomBar").assetIsDisplayed() composeTestRule.onNodeWithTag("NavRail").assetDoesNotExist() ... }
หากต้องการเปลี่ยนไปใช้สถานะกางออกเต็มที่ ให้เรียกใช้
onDevice().setFlatMode()ตรวจสอบว่าเลย์เอาต์ของแอปปรับให้เข้ากับ คลาสขนาดที่ขยาย@Test fun myUnfoldedTest() { onDevice().setClosedMode() ... onDevice().setFlatMode() composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed() composeTestRule.onNodeWithTag("BottomBar").assetDoesNotExist() }
ระบุอุปกรณ์ที่การทดสอบต้องใช้
หากคุณเรียกใช้การทดสอบที่ดำเนินการพับบนอุปกรณ์ที่ไม่สามารถพับได้ โดยปกติแล้วการทดสอบจะล้มเหลว หากต้องการดำเนินการเฉพาะการทดสอบที่เกี่ยวข้องกับอุปกรณ์ที่กำลังทำงานอยู่ ให้ใช้คำอธิบายประกอบ @RequiresDeviceMode ตัวเรียกใช้การทดสอบจะข้ามการทดสอบบนอุปกรณ์ที่ไม่รองรับการกำหนดค่าที่กำลังทดสอบโดยอัตโนมัติ คุณสามารถเพิ่มกฎข้อกำหนดของอุปกรณ์ลงในการทดสอบแต่ละรายการหรือคลาสการทดสอบทั้งหมด
ตัวอย่างเช่น หากต้องการระบุว่าควรเรียกใช้การทดสอบในอุปกรณ์ที่รองรับการกางออกเป็นการกำหนดค่าแบบแบนเท่านั้น ให้เพิ่มโค้ด @RequiresDeviceMode ต่อไปนี้ลงในการทดสอบ
@Test
@RequiresDeviceMode(mode = FLAT)
fun myUnfoldedTest() {
...
}