Android Studio Iguana | 1.2.2023 (ก.พ. 2024)

ต่อไปนี้คือฟีเจอร์ใหม่ใน 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 ปัจจุบันหรือดูความแตกต่างระหว่างจุดชำระเงินปัจจุบันและเวอร์ชัน ของฐานของโค้ดที่สร้างข้อขัดข้อง

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

หากต้องการใช้การผสานรวมการควบคุมเวอร์ชันสำหรับประเภทบิลด์ที่แก้ไขข้อบกพร่องได้ ให้เปิดใช้ Flag vcsInfo ในไฟล์บิลด์ระดับโมดูล สำหรับบิลด์รุ่น (แก้ไขข้อบกพร่องไม่ได้) ระบบจะเปิดใช้ Flag นี้โดยค่าเริ่มต้น

Kotlin

android {
  buildTypes {
    getByName("debug") {
      vcsInfo {
        include = true
      }
    }
  }
}

Groovy

android {
  buildTypes {
    debug {
      vcsInfo {
        include true
      }
    }
  }
}

ตอนนี้เมื่อคุณสร้างแอปและเผยแพร่ไปยัง Google Play รายงานข้อขัดข้องจะมีข้อมูลที่จําเป็นสําหรับ IDE เพื่อลิงก์กับแอปเวอร์ชันก่อนหน้าจากสแต็กเทรซ

ดูตัวแปรข้อขัดข้องของ Crashlytics ในข้อมูลเชิงลึกเกี่ยวกับคุณภาพของแอป

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

การตรวจสอบ UI ของ Compose

หากต้องการช่วยนักพัฒนาซอฟต์แวร์สร้าง UI ที่ปรับและเข้าถึงได้ง่ายขึ้นใน Jetpack Compose Android Studio Iguana Canary 5 เปิดตัวโหมดการตรวจสอบ UI ใหม่ในการเขียน แสดงตัวอย่าง ฟีเจอร์นี้ทำงานคล้ายกับการสร้างโปรแกรมวิเคราะห์ภาพ และการผสานรวมการตรวจสอบการช่วยเหลือพิเศษ สำหรับยอดดู เมื่อคุณเปิดใช้งานโหมดตรวจสอบ UI ของ Compose, Android Studio โดยอัตโนมัติ ตรวจสอบ UI ของ Compose และตรวจหาปัญหาด้านการปรับเปลี่ยนและความสามารถเข้าถึงได้ง่าย หน้าจอขนาดต่างๆ เช่น ข้อความยืดบนหน้าจอขนาดใหญ่หรือสีต่ำ คอนทราสต์ โหมดนี้จะไฮไลต์ปัญหาที่พบในการกำหนดค่าการแสดงตัวอย่างต่างๆ และแสดงรายการปัญหาในแผงปัญหา

ลองใช้ฟีเจอร์นี้เลยโดยคลิกปุ่มตรวจสอบ UI ใน "แสดงตัวอย่างการเขียน" แล้วส่งความคิดเห็น

คลิกปุ่มโหมดการตรวจสอบ UI ของ Compose เพื่อเปิดใช้งานการตรวจสอบ

ปัญหาที่ทราบเกี่ยวกับโหมดตรวจสอบ UI ได้แก่

  • ปัญหาที่เลือกในแผงปัญหาอาจสูญเสียโฟกัส
  • "กฎที่ถูกระงับ" ใช้ไม่ได้
เปิดใช้งานโหมดตรวจสอบ UI ในการเขียนพร้อมรายละเอียดในแผงปัญหา

การแสดงผลแบบโปรเกรสซีฟสำหรับตัวอย่างการเขียน

Android Studio Iguana Canary 3 เปิดตัวการแสดงภาพแบบโพรเกรสซีฟในการเขียน แสดงตัวอย่าง เราได้พยายามอย่างต่อเนื่องที่จะทำให้ตัวอย่างมีประสิทธิภาพมากขึ้น สำหรับภาพตัวอย่างที่ไม่แสดงผล เราจะจงใจลดคุณภาพในการแสดงภาพ เพื่อประหยัดหน่วยความจำที่ใช้ไป

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

วิซาร์ดโมดูลโปรไฟล์พื้นฐาน

เริ่มต้นด้วย Android Studio Iguana คุณสามารถสร้าง โปรไฟล์พื้นฐานสำหรับแอปของคุณ โดยใช้เทมเพลตตัวสร้างโปรไฟล์พื้นฐานในวิซาร์ดโมดูลใหม่ (ไฟล์ > ใหม่ > โมดูลใหม่)

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

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

ทดสอบการเปลี่ยนแปลงการกำหนดค่าด้วย Espresso Device API

ใช้ Espresso Device API เพื่อทดสอบแอปเมื่ออุปกรณ์มีการเปลี่ยนแปลงการกำหนดค่าทั่วไป เช่น การหมุนและการกางหน้าจอ กาแฟเอสเปรสโซ 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 มีดังนี้

  1. หากต้องการให้คำสั่งทดสอบส่งผ่านไปยังอุปกรณ์ทดสอบ ให้เพิ่มเมธอด สิทธิ์ของ INTERNET และ ACCESS_NETWORK_STATE ในไฟล์ Manifest ในชุดต้นฉบับ androidTest:

      <uses-permission android:name="android.permission.INTERNET" />
      <uses-permission android:name="android.permissions.ACCESS_NETWORK_STATE" />
  2. เปิดใช้ Flag enableEmulatorControl เวอร์ชันทดลองใน ไฟล์ gradle.properties:

      android.experimental.androidTest.enableEmulatorControl=true
  3. เปิดใช้ตัวเลือก emulatorControl ในบิลด์ระดับโมดูล สคริปต์:

    Kotlin

      testOptions {
        emulatorControl {
          enable = true
        }
      }

    ดึงดูด

      testOptions {
        emulatorControl {
          enable = true
        }
      }
  4. ในสคริปต์บิลด์ระดับโมดูล ให้นําเข้าคลังอุปกรณ์ 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 มีการวางแนวหน้าจอหลายแบบและสถานะแบบพับได้ เพื่อจำลองการเปลี่ยนแปลงการกำหนดค่าอุปกรณ์

ทดสอบเทียบกับการหมุนหน้าจอ

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

  1. ก่อนอื่น ให้ตั้งค่าอุปกรณ์เป็นโหมดแนวตั้งเพื่อให้มีสถานะเริ่มต้นที่สอดคล้องกัน โดยทำดังนี้

      import androidx.test.espresso.device.action.ScreenOrientation
      import androidx.test.espresso.device.rules.ScreenOrientationRule
      ...
      @get:Rule
      val screenOrientationRule: ScreenOrientationRule = ScreenOrientationRule(ScreenOrientation.PORTRAIT)
  2. สร้างการทดสอบที่ตั้งค่าอุปกรณ์เป็นแนวนอนในระหว่างการทดสอบ การดำเนินการ:

      @Test
      fun myRotationTest() {
        ...
        // Sets the device to landscape orientation during test execution.
        onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE)
        ...
      }
  3. หลังจากที่หน้าจอหมุนแล้ว ให้ตรวจสอบว่า 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()
      }

ทดสอบการกางหน้าจอ

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

  1. ก่อนอื่น ให้ทดสอบกับอุปกรณ์ในสถานะพับโดยโทรไปที่ onDevice().setClosedMode() ตรวจสอบว่าเลย์เอาต์ของแอป จะปรับตามความกว้างของหน้าจอที่กะทัดรัด

      @Test
      fun myUnfoldedTest() {
        onDevice().setClosedMode()
        composeTestRule.onNodeWithTag("BottomBar").assetIsDisplayed()
        composeTestRule.onNodeWithTag("NavRail").assetDoesNotExist()
        ...
      }
  2. หากต้องการเปลี่ยนเป็นสถานะกางออกจนสุด ให้เรียกใช้ 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() {
  ...
}