การพัฒนาโค้ดซ้ำ

ในฐานะนักพัฒนาแอปบนอุปกรณ์เคลื่อนที่ คุณมักจะพัฒนา UI ของแอปทีละขั้นตอนแทนที่จะพัฒนาทุกอย่างพร้อมกัน Android Studio รองรับแนวทางนี้ด้วย Compose ของ Jetpack โดยจัดเตรียมเครื่องมือที่ไม่จําเป็นต้องสร้างแบบสมบูรณ์เพื่อตรวจสอบ แก้ไขค่า และยืนยันผลลัพธ์สุดท้าย

การแก้ไขสด

ได้ด้วย

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

การแก้ไขแบบเรียลไทม์มี 3 โหมด ได้แก่

  • ด้วยตนเอง: ระบบจะใช้การเปลี่ยนแปลงโค้ดเมื่อมีการพุชด้วยตนเองโดยใช้ Control+' (Command+' ใน macOS)
  • บันทึกด้วยตนเอง: ระบบจะใช้การเปลี่ยนแปลงโค้ดเมื่อบันทึกด้วยตนเองโดยใช้ Control+S (Command+S ใน macOS)
  • อัตโนมัติ: การเปลี่ยนแปลงจะมีผลในอุปกรณ์หรือโปรแกรมจำลองเมื่อคุณอัปเดตฟังก์ชันคอมโพสิเบิล

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

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

เวิร์กโฟลว์แนวทางปฏิบัติแนะนำมีดังนี้

  1. ตั้งค่าแอปพลิเคชันเพื่อให้ทำงานได้
  2. ใช้การแก้ไขสดให้มากที่สุดจนกว่าจะต้องทําการเปลี่ยนแปลงที่การแก้ไขสดไม่รองรับ เช่น การเพิ่มเมธอดใหม่ขณะที่แอปทํางานอยู่
  3. หลังจากทําการเปลี่ยนแปลงที่ไม่รองรับแล้ว ให้คลิกเรียกใช้ Run
icon เพื่อรีสตาร์ทแอปและแก้ไขแบบเรียลไทม์ต่อ

เริ่มต้นใช้งานการแก้ไขแบบเรียลไทม์

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

สร้างโปรเจ็กต์ใหม่

  1. ก่อนเริ่มต้น ให้ตรวจสอบว่าคุณได้ติดตั้ง Android Studio Giraffe ขึ้นไปแล้ว และ API ระดับของอุปกรณ์จริงหรือโปรแกรมจำลองเป็นอย่างน้อย 30

  2. เปิด Android Studio แล้วเลือกโปรเจ็กต์ใหม่ในกล่องโต้ตอบยินดีต้อนรับสู่ Android Studio หากมีโปรเจ็กต์เปิดอยู่ คุณสามารถสร้างโปรเจ็กต์ใหม่ได้โดยไปที่ไฟล์ > ใหม่ > โปรเจ็กต์ใหม่

  3. เลือกเทมเพลตกิจกรรมการเขียนเปล่าสําหรับโทรศัพท์และแท็บเล็ต แล้วคลิกถัดไป

    การเลือกเทมเพลตใน Android Studio
    รูปที่ 1 เทมเพลตที่คุณเลือกได้ สําหรับการแก้ไขแบบเรียลไทม์ ให้เลือกกิจกรรมการเขียนเปล่า
  4. กรอกข้อมูลที่จำเป็นในกล่องโต้ตอบโปรเจ็กต์ใหม่ ได้แก่ ชื่อ, ชื่อแพ็กเกจ, ตำแหน่งที่จะบันทึก, SDK ขั้นต่ำ และภาษาสำหรับการกำหนดค่าบิลด์

    ตัวอย่างการตั้งค่าโปรเจ็กต์จากขั้นตอนที่ 4 ที่ป้อนใน Android Studio
    รูปที่ 2 ตัวอย่างการตั้งค่าโปรเจ็กต์
  5. คลิกเสร็จสิ้น

เปิดใช้การแก้ไขสด

  1. ไปที่การตั้งค่าเพื่อเปิดใช้การแก้ไขแบบเรียลไทม์

    • ใน Windows หรือ Linux ให้ไปที่ไฟล์ > การตั้งค่า > เครื่องมือแก้ไข > แก้ไขแบบเรียลไทม์
    • ใน macOS ให้ไปที่ Android Studio > Settings > Editor > Live Edit
  2. เลือกตัวเลือกแก้ไขแบบเรียลไทม์และโหมดที่ต้องการเรียกใช้จากการตั้งค่า

    ในโหมดด้วยตนเอง ระบบจะพุชการเปลี่ยนแปลงโค้ดทุกครั้งที่คุณกด Control+' (Command+' ใน macOS) ในโหมดบันทึกด้วยตนเอง ระบบจะใช้การเปลี่ยนแปลงโค้ดทุกครั้งที่คุณบันทึกด้วยตนเองโดยใช้ Control+S (Command+S ใน macOS) ในโหมดอัตโนมัติ การเปลี่ยนแปลงโค้ดจะมีผลในอุปกรณ์หรือโปรแกรมจำลองขณะที่คุณทําการเปลี่ยนแปลง

    UI ช่องทําเครื่องหมาย "แก้ไขแบบเรียลไทม์" ในการตั้งค่า Android Studio
    รูปที่ 3 การตั้งค่าการแก้ไขแบบเรียลไทม์
  3. เปิดไฟล์ MainActivity ในตัวแก้ไข ซึ่งเป็นจุดแรกเข้าของแอป

  4. คลิกเรียกใช้ ปุ่ม UIเพื่อทำให้แอปใช้งานได้

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

    UI เครื่องหมายถูกสีเขียวของการแก้ไขสด

ทำและตรวจสอบการเปลี่ยนแปลง

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

เช่น แก้ไขวิธีการ Greeting ที่มีอยู่ใน MainActivity เป็นดังนี้

@Composable
fun Greeting(name: String) {
    Text(
        text = "Hello $name!",
        Modifier
            .padding(80.dp) // Outer padding; outside background
            .background(color = Color.Cyan) // Solid element background color
            .padding(16.dp) // Inner padding; inside background, around text)
    )
}

การเปลี่ยนแปลงจะปรากฏในอุปกรณ์ทดสอบทันที ดังที่แสดงในรูปที่ 4

การเปลี่ยนแปลงวิธีการทักทายที่ใช้ในอุปกรณ์
รูปที่ 4 อุปกรณ์ทดสอบแสดงการเปลี่ยนแปลงการแก้ไขแบบเรียลไทม์ในGreeting

แก้ปัญหาการแก้ไขสด

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

ไอคอน "การแก้ไขสดหมดอายุ"
รูปที่ 5 สัญญาณบอกสถานะการแก้ไขแบบเรียลไทม์

ข้อจำกัดของการแก้ไขสด

รายการข้อจํากัดปัจจุบันมีดังนี้

  • [ใช้ได้กับ Android Studio Giraffe ขึ้นไปเท่านั้น] การแก้ไขแบบเรียลไทม์ต้องใช้ Compose Runtime 1.3.0 ขึ้นไป หากโปรเจ็กต์ใช้เครื่องมือเขียนเวอร์ชันต่ำกว่า ระบบจะปิดใช้การแก้ไขแบบเรียลไทม์

  • [ใช้ได้กับ Android Studio Giraffe ขึ้นไปเท่านั้น] การแก้ไขแบบเรียลไทม์ต้องใช้ AGP 8.1.0-alpha05 ขึ้นไป หากโปรเจ็กต์ใช้ AGP เวอร์ชันต่ำกว่า ระบบจะปิดใช้การแก้ไขแบบเรียลไทม์

  • การแก้ไขแบบเรียลไทม์ต้องใช้อุปกรณ์จริงหรือโปรแกรมจำลองที่ใช้ API ระดับ 30 ขึ้นไป

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

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

  • ชั้นเรียนที่แก้ไขแบบเรียลไทม์อาจเสียประสิทธิภาพไปบ้าง เรียกใช้แอปและใช้บิลด์รุ่นที่สะอาดหากต้องการประเมินประสิทธิภาพ

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

  • แอปที่ทำงานอยู่อาจขัดข้องเมื่อคุณแก้ไขด้วยฟีเจอร์แก้ไขแบบเรียลไทม์ หากเกิดกรณีนี้ขึ้น คุณสามารถนำแอปไปใช้งานได้อีกครั้งด้วยปุ่มเรียกใช้ UI
button

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

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

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

  • การแก้ไขแบบเรียลไทม์รองรับเฉพาะกระบวนการแก้ไขข้อบกพร่องได้เท่านั้น

  • การแก้ไขแบบเรียลไทม์ไม่รองรับโปรเจ็กต์ที่ใช้ค่าที่กำหนดเองสำหรับ moduleName ในส่วน kotlinOptions ในการกำหนดค่าบิลด์

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

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

  • ใช้การเปลี่ยนแปลง/ใช้การเปลี่ยนแปลงโค้ดใช้ไม่ได้กับการแก้ไขแบบเรียลไทม์และต้องรีสตาร์ทแอปที่ทำงานอยู่

  • ขณะนี้การแก้ไขแบบเรียลไทม์ยังไม่รองรับโปรเจ็กต์ Android Automotive

คำถามที่พบบ่อยเกี่ยวกับการแก้ไขแบบเรียลไทม์

  • ปัจจุบันการแก้ไขแบบสดมีสถานะอย่างไร

    การแก้ไขแบบเรียลไทม์พร้อมใช้งานใน Android Studio Giraffe หากต้องการเปิดฟีเจอร์นี้ ให้ไปที่ไฟล์ > การตั้งค่า > เครื่องมือแก้ไข > แก้ไขแบบเรียลไทม์ (Android Studio > การตั้งค่า > เครื่องมือแก้ไข > แก้ไขแบบเรียลไทม์ใน macOS)

  • ฉันควรใช้การแก้ไขสดเมื่อใด

    ใช้การแก้ไขแบบเรียลไทม์เมื่อคุณต้องการดูผลของการอัปเดตองค์ประกอบ UX (เช่น การอัปเดตตัวแก้ไขและภาพเคลื่อนไหว) อย่างรวดเร็วต่อประสบการณ์การใช้งานแอปโดยรวม

  • ฉันควรหลีกเลี่ยงการใช้การแก้ไขแบบเรียลไทม์เมื่อใด

    การแก้ไขแบบเรียลไทม์จะมุ่งเน้นที่การเปลี่ยนแปลงโค้ดที่เกี่ยวข้องกับ UI และ UX และไม่รองรับการเปลี่ยนแปลง เช่น การอัปเดตลายเซ็นเมธอด การเพิ่มเมธอดใหม่ หรือการเปลี่ยนแปลงลําดับชั้นของคลาส ดูข้อมูลเพิ่มเติมได้ที่ข้อจำกัดของฟีเจอร์แก้ไขสด

  • ฉันควรใช้การพรีวิวการเขียนเมื่อใด

    ใช้การแสดงตัวอย่างการคอมโพสิทเมื่อคุณพัฒนาคอมโพสิทแต่ละรายการ การแสดงตัวอย่างจะแสดงองค์ประกอบการคอมโพสิทเป็นภาพและรีเฟรชโดยอัตโนมัติเพื่อแสดงผลของการเปลี่ยนแปลงโค้ด นอกจากนี้ การแสดงตัวอย่างยังรองรับการดูองค์ประกอบ UI ภายใต้การกำหนดค่าและสถานะต่างๆ เช่น ธีมมืด ภาษา และการปรับขนาดแบบอักษร

การแก้ไขแบบเรียลไทม์ของข้อความ (เลิกใช้งานแล้ว)

Android Studio สามารถอัปเดตค่าคงที่บางรายการที่ใช้ในคอมโพสิเบิลภายในตัวอย่าง โปรแกรมจำลอง และอุปกรณ์จริงแบบเรียลไทม์ ประเภทที่รองรับมีดังนี้

  • Int
  • String
  • Color
  • Dp
  • Boolean

วิดีโอของผู้ใช้ที่เปลี่ยนค่าคงที่ในซอร์สโค้ด และพรีวิวที่อัปเดตแบบไดนามิก

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

การเปิดใช้การแก้ไขแบบเรียลไทม์ของข้อความ

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

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

เมื่อใดก็ตามที่คุณเพิ่ม แก้ไข หรือลบ Composable คุณจะอัปเดตแอปได้โดยไม่ต้องทำให้ใช้งานได้อีกครั้งโดยคลิกปุ่มใช้การเปลี่ยนแปลงโค้ด

ผู้ใช้คลิกปุ่ม "ใช้การเปลี่ยนแปลง"