ต่อไปนี้คือฟีเจอร์ใหม่ใน 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 Patch 1 และ AGP 8.3.1 (มีนาคม 2024)
การอัปเดตเล็กน้อยนี้รวมถึงการแก้ไขข้อบกพร่องเหล่านี้
การอัปเดตแพลตฟอร์ม IntelliJ IDEA 2023.2
Android Studio Iguana มีการอัปเดต IntelliJ IDEA 2023.2 ซึ่งปรับปรุงประสบการณ์การใช้งาน Studio IDE โปรดดูรายละเอียดเกี่ยวกับการเปลี่ยนแปลงที่หัวข้อบันทึกประจำรุ่นของ IntelliJ IDEA 2023.2
การผสานรวมระบบควบคุมเวอร์ชันในข้อมูลเชิงลึกเกี่ยวกับคุณภาพของแอป
ตอนนี้ ข้อมูลเชิงลึกเกี่ยวกับคุณภาพของแอปช่วยให้คุณไปยังสแต็กเทรซของ Crashlytics ไปยังโค้ดที่เกี่ยวข้อง ณ เวลาที่เกิดข้อขัดข้องได้แล้ว AGP จะแนบข้อมูลแฮชการคอมมิต Git ไปยังรายงานข้อขัดข้อง ซึ่งช่วยให้ Android Studio ไปยังโค้ดของคุณและแสดงลักษณะของโค้ดในเวอร์ชันที่เกิดปัญหา เมื่อดูรายงานข้อขัดข้องในข้อมูลเชิงลึกเกี่ยวกับคุณภาพของแอป คุณสามารถเลือกไปยังบรรทัดโค้ดใน Git Checkout เวอร์ชันปัจจุบัน หรือดูความแตกต่างระหว่าง Git Checkout เวอร์ชันปัจจุบันกับเวอร์ชันของโค้ดเบสที่ทำให้เกิดข้อขัดข้อง
หากต้องการผสานรวมระบบควบคุมเวอร์ชันกับ App Quality Insights คุณต้องมีข้อกำหนดขั้นต่ำต่อไปนี้
- Android Studio Iguana เวอร์ชันล่าสุดของ Canary
- ปลั๊กอิน Android Gradle 8.3 เวอร์ชันอัลฟ่าล่าสุด
- Crashlytics SDK v18.3.7 (หรือ Firebase Android Bill of Materials v32.0.0)
หากต้องการใช้การผสานรวมการควบคุมเวอร์ชันสำหรับประเภทบิลด์ที่แก้ไขข้อบกพร่องได้ ให้เปิดใช้ Flag vcsInfo
ในไฟล์บิลด์ระดับโมดูล สำหรับบิลด์รุ่น (แก้ไขข้อบกพร่องไม่ได้) ระบบจะเปิดใช้ Flag นี้โดยค่าเริ่มต้น
Kotlin
android { buildTypes { getByName("debug") { vcsInfo { include = true } } } }
ดึงดูด
android { buildTypes { debug { vcsInfo { include true } } } }
ตอนนี้เมื่อคุณสร้างแอปและเผยแพร่ไปยัง Google Play รายงานข้อขัดข้องจะมีข้อมูลที่จําเป็นสําหรับ IDE เพื่อลิงก์กับแอปเวอร์ชันก่อนหน้าจากสแต็กเทรซ
ดูตัวแปรข้อขัดข้องของ Crashlytics ในข้อมูลเชิงลึกเกี่ยวกับคุณภาพของแอป
ตอนนี้คุณสามารถใช้ข้อมูลเชิงลึกเกี่ยวกับคุณภาพของแอปเพื่อดูเหตุการณ์ตามตัวแปรของปัญหา หรือกลุ่มเหตุการณ์ที่มีสแต็กเทรซคล้ายกันได้ เพื่อช่วยในการวิเคราะห์สาเหตุของข้อขัดข้อง หากต้องการดูเหตุการณ์ในรายงานข้อขัดข้องแต่ละตัวแปร ให้เลือกตัวแปรจากเมนูแบบเลื่อนลง หากต้องการรวมข้อมูลของตัวแปรทั้งหมด ให้เลือกทั้งหมด
การตรวจสอบ UI ของการเขียน
Android Studio Iguana Canary 5 ได้เปิดตัวโหมดการตรวจสอบ UI ใหม่ใน Compose Preview เพื่อช่วยนักพัฒนาซอฟต์แวร์สร้าง UI ที่ปรับเปลี่ยนได้และเข้าถึงได้ง่ายยิ่งขึ้นใน Jetpack Compose ฟีเจอร์นี้ทำงานคล้ายกับการตรวจสอบการแสดงผล และการผสานรวมการตรวจสอบการช่วยเหลือพิเศษสำหรับยอดดู เมื่อคุณเปิดใช้งานโหมดการตรวจสอบ UI ของ Compose แล้ว Android Studio จะตรวจสอบ UI ของ Compose โดยอัตโนมัติและตรวจหาปัญหาการปรับเปลี่ยนและปัญหาการช่วยเหลือพิเศษในหน้าจอขนาดต่างๆ เช่น ข้อความที่ยืดบนหน้าจอขนาดใหญ่หรือคอนทราสต์สีต่ำ โหมดนี้จะไฮไลต์ปัญหาที่พบในการกำหนดค่าการแสดงตัวอย่างต่างๆ และแสดงรายการปัญหาในแผงปัญหา
ลองใช้ฟีเจอร์นี้เลยโดยคลิกปุ่มตรวจสอบ UI ใน "แสดงตัวอย่างการเขียน" แล้วส่งความคิดเห็น
ปัญหาที่ทราบเกี่ยวกับโหมดตรวจสอบ UI
- ปัญหาที่เลือกในแผงปัญหาอาจสูญเสียโฟกัส
- "กฎที่ถูกระงับ" ไม่ทำงาน
การแสดงผลแบบเป็นขั้นๆ สำหรับตัวอย่าง Compose
Android Studio Iguana Canary 3 เปิดตัวการแสดงผลแบบเป็นขั้นๆ ใน Compose Preview เราพยายามอย่างต่อเนื่องที่จะทำให้ตัวอย่างมีประสิทธิภาพดีขึ้น ดังนั้นสำหรับตัวอย่างที่ไม่แสดงผล เราจึงตั้งใจลดคุณภาพในการแสดงผลลงเพื่อประหยัดหน่วยความจำที่ใช้ไป
ฟีเจอร์นี้พัฒนาขึ้นโดยมีเป้าหมายเพื่อปรับปรุงความสามารถในการใช้งานของตัวอย่างเพลงให้ดียิ่งขึ้นด้วยการจัดการตัวอย่างเพลงได้มากขึ้นพร้อมกันในไฟล์ ลองใช้งานเลยวันนี้ แล้วส่งความคิดเห็นของคุณ
วิซาร์ดโมดูลโปรไฟล์พื้นฐาน
ตั้งแต่ Android Studio Iguana คุณสามารถสร้าง โปรไฟล์พื้นฐานสำหรับแอป โดยใช้เทมเพลตตัวสร้างโปรไฟล์พื้นฐานในวิซาร์ดโมดูลใหม่ (ไฟล์ > ใหม่ > โมดูลใหม่)
เทมเพลตนี้จะตั้งค่าโปรเจ็กต์เพื่อให้รองรับโปรไฟล์พื้นฐาน โดยจะใช้ปลั๊กอิน 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 Emulator 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" />
เปิดใช้ Flag ทดลอง
enableEmulatorControl
ในไฟล์gradle.properties
android.experimental.androidTest.enableEmulatorControl=true
เปิดใช้ตัวเลือก
emulatorControl
ในสคริปต์บิลด์ระดับโมดูล ดังนี้Kotlin
testOptions { emulatorControl { enable = true } }
ดึงดูด
testOptions { emulatorControl { enable = true } }
ในสคริปต์บิลด์ระดับโมดูล ให้นําเข้าคลังอุปกรณ์ Espresso ลงในโปรเจ็กต์
Kotlin
dependencies { androidTestImplementation("androidx.test.espresso:espresso-device:3.6.1") }
Groovy
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() {
...
}