ในฐานะนักพัฒนาแอปบนอุปกรณ์เคลื่อนที่ คุณมักจะพัฒนา UI ของแอปทีละขั้นตอนมากกว่า มากกว่าการพัฒนาทุกอย่างในคราวเดียว Android Studio ใช้แนวทางนี้กับ Jetpack Compose โดยใช้เครื่องมือที่ไม่ต้องใช้บิลด์แบบเต็มเพื่อตรวจสอบ แก้ไขค่า และยืนยันผลลัพธ์สุดท้าย
การแก้ไขสด
Live Edit คือฟีเจอร์ที่ให้คุณอัปเดต Composable ในโปรแกรมจำลองและ อุปกรณ์จริงแบบเรียลไทม์ ฟังก์ชันนี้ช่วยลดการเปลี่ยนบริบท ตั้งแต่การเขียนไปจนถึงการสร้างแอป ทำให้คุณโฟกัสกับการเขียนโค้ดได้นานขึ้น โดยไม่หยุดชะงัก
การแก้ไขสดมี 3 โหมด ดังนี้
- ด้วยตนเอง: การเปลี่ยนแปลงโค้ดจะมีผลเมื่อมีการพุชด้วยตนเองโดยใช้ Control+' (Command+' ใน macOS)
- ด้วยตนเองเมื่อบันทึก: การเปลี่ยนแปลงโค้ดจะมีผลเมื่อบันทึกด้วยตนเองโดยใช้ Control+S (Command+S ใน macOS)
- อัตโนมัติ: การเปลี่ยนแปลงจะมีผลในอุปกรณ์หรือโปรแกรมจำลองเมื่อคุณอัปเดต ฟังก์ชันที่ประกอบกันได้
การแก้ไขแบบเรียลไทม์จะมุ่งเน้นที่การเปลี่ยนแปลงโค้ดที่เกี่ยวข้องกับ UI และ UX การแก้ไขสดไม่ทำงาน รองรับการเปลี่ยนแปลง เช่น การอัปเดตลายเซ็นเมธอด การเพิ่มเมธอดใหม่ๆ หรือคลาส การเปลี่ยนแปลงลำดับชั้น ดูข้อมูลเพิ่มเติมได้ที่รายการข้อจำกัดของการถ่ายทอดสด แก้ไข
ฟีเจอร์นี้ไม่ได้มาแทนที่การสร้างและเรียกใช้แอป หรือสำหรับ ใช้การเปลี่ยนแปลง แต่ได้รับการออกแบบมาเพื่อเพิ่มประสิทธิภาพ ขณะที่คุณสร้าง ทำให้ใช้งานได้ และทำซ้ำเพื่อพัฒนา Compose UI
ขั้นตอนการทำงานของแนวทางปฏิบัติแนะนำมีดังนี้
- ตั้งค่าแอปพลิเคชันเพื่อให้เรียกใช้ได้
- แก้ไข "แก้ไขสด" ให้มากที่สุดจนกว่าจะจำเป็นต้องทำการเปลี่ยนแปลง "การแก้ไขสด" ไม่สนับสนุน เช่น การเพิ่มวิธีการใหม่ขณะที่แอปทำงานอยู่
- หลังจากทำการเปลี่ยนแปลงที่ไม่รองรับ ให้คลิกเรียกใช้
เพื่อรีสตาร์ท แอปของคุณ แล้วทำให้การแก้ไขสดกลับมาทำงานอีกครั้ง
เริ่มต้นใช้งานการแก้ไขสด
ในการเริ่มต้นใช้งาน ให้ทำตามขั้นตอนเหล่านี้เพื่อสร้างกิจกรรม Compose ที่ว่างเปล่า เปิดใช้ Live Edit สำหรับโปรเจ็กต์และทำการเปลี่ยนแปลงด้วยฟีเจอร์แก้ไขแบบเรียลไทม์
ตั้งค่าโปรเจ็กต์ใหม่
ก่อนเริ่มต้น ให้ตรวจสอบว่าคุณมี Android Studio Giraffe ขึ้นไป ติดตั้งในระดับ API ของ อุปกรณ์หรือโปรแกรมจำลองมีอย่างน้อย 30
เปิด Android Studio แล้วเลือกโปรเจ็กต์ใหม่ในส่วนยินดีต้อนรับสู่ Android กล่องโต้ตอบ Studio หากมีโปรเจ็กต์เปิดอยู่แล้ว คุณสามารถสร้างโปรเจ็กต์ใหม่ โดยไปที่ไฟล์ > ใหม่ > โปรเจ็กต์ใหม่
เลือกเทมเพลตกิจกรรมการเขียนที่ว่างเปล่าสำหรับโทรศัพท์และแท็บเล็ต และ แล้วคลิกถัดไป
วันที่ รูปที่ 1 เทมเพลตที่คุณเลือกได้ สำหรับการแก้ไขแบบสด เลือกกิจกรรมการเขียนที่ว่างเปล่า ใส่ข้อมูลที่จำเป็นลงในกล่องโต้ตอบโปรเจ็กต์ใหม่ ได้แก่ ชื่อ, ชื่อแพ็กเกจ, บันทึกตำแหน่ง, SDK ขั้นต่ำ และภาษาการกำหนดค่าบิลด์
วันที่ รูปที่ 2 ตัวอย่างการตั้งค่าโปรเจ็กต์ คลิกเสร็จสิ้น
เปิดใช้การแก้ไขสด
ไปที่การตั้งค่าเพื่อเปิดใช้การแก้ไขสด
- ใน Windows หรือ Linux ให้ไปที่ไฟล์ > การตั้งค่า > เอดิเตอร์ > การแก้ไขสด
- ใน macOS ให้ไปที่ Android Studio > การตั้งค่า > เอดิเตอร์ > การแก้ไขสด
เลือกตัวเลือก Live Edit และโหมดที่ต้องการเรียกใช้จาก การตั้งค่า
ในโหมดดำเนินการด้วยตนเอง ระบบจะพุชการเปลี่ยนแปลงโค้ดของคุณทุกครั้งที่คุณกด Control+' (Command+' ใน macOS) เปิดโหมดด้วยตนเอง บันทึก การเปลี่ยนแปลงโค้ดจะถูกนำไปใช้ทุกครั้งที่คุณบันทึก โดยใช้ Control+S (เปิด Command+S macOS) ในโหมดอัตโนมัติ ระบบจะนำการเปลี่ยนแปลงโค้ดของคุณไปใช้ในอุปกรณ์หรือ ขณะทำการเปลี่ยนแปลง
วันที่ รูปที่ 3 การตั้งค่าการแก้ไขแบบเรียลไทม์ ในตัวแก้ไข ให้เปิดไฟล์
MainActivity
ซึ่งเป็นจุดแรกเข้าสำหรับ แอปของคุณคลิกเรียกใช้
ในการทำให้แอปของคุณใช้งานได้
หลังจากเปิดการแก้ไขสดแล้ว เครื่องหมายถูกสีเขียวล่าสุดจะปรากฏขึ้นใน ที่ด้านขวาบนของหน้าต่างเครื่องมืออุปกรณ์ที่ใช้งานอยู่
สร้างและตรวจทานการเปลี่ยนแปลง
ขณะทำการเปลี่ยนแปลงที่รองรับในตัวแก้ไข อุปกรณ์ทดสอบเสมือนจริงหรือจริง โดยอัตโนมัติ
ตัวอย่างเช่น แก้ไขเมธอด 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
![การเปลี่ยนแปลงวิธีการทักทายมีผลในอุปกรณ์แล้ว](https://developer.android.com/static/studio/images/run/device-le-example.png?authuser=9&hl=th)
Greeting
แก้ปัญหาการแก้ไขแบบเรียลไทม์
หากไม่เห็นการแก้ไขในอุปกรณ์ทดสอบ แสดงว่า Android Studio อาจดำเนินการไม่สำเร็จ เพื่ออัปเดตการแก้ไขของคุณ ตรวจสอบว่าสัญญาณบอกสถานะ "แก้ไขแบบเรียลไทม์" หรือไม่ ล้าสมัย ดังที่แสดงในรูปที่ 5 ซึ่งระบุข้อผิดพลาดในการคอมไพล์ สำหรับ ข้อมูลเกี่ยวกับข้อผิดพลาดและคำแนะนำสำหรับวิธีแก้ไขปัญหา ให้คลิก ของคุณ
![ไอคอน "แก้ไขแบบเรียลไทม์" ล้าสมัย](https://developer.android.com/static/studio/images/run/live-edit-out-of-date.png?authuser=9&hl=th)
ข้อจำกัดของการแก้ไขสด
ต่อไปนี้คือรายการข้อจำกัดในปัจจุบัน
[ใช้ได้กับ Android Studio Giraffe และเวอร์ชันที่สูงกว่าเท่านั้น] การแก้ไขสดต้องใช้รันไทม์ของการเขียน 1.3.0 ขึ้นไป หากโปรเจ็กต์ใช้ Compose เวอร์ชันต่ำกว่า การแก้ไขสดจะเป็น ปิดใช้อยู่
[ใช้ได้กับ Android Studio Giraffe ขึ้นไปเท่านั้น] Live Edit ต้องใช้ AGP 8.1.0-alpha05 หรือ สูงขึ้น หากโปรเจ็กต์ใช้เวอร์ชันที่ต่ำกว่า ของ AGP ได้ปิดใช้การแก้ไขสด
การแก้ไขสดต้องใช้อุปกรณ์จริงหรือโปรแกรมจำลองที่เรียกใช้ระดับ API 30 ขึ้นไป
การแก้ไขสดรองรับการแก้ไขเนื้อหาของฟังก์ชันเท่านั้น ซึ่งหมายความว่าคุณจะไม่สามารถ เปลี่ยนชื่อฟังก์ชันหรือลายเซ็น เพิ่มหรือนำฟังก์ชันออก หรือเปลี่ยน ที่ไม่ใช่ฟังก์ชัน
การแก้ไขสดจะรีเซ็ตสถานะของแอปในครั้งแรกที่คุณเปลี่ยนฟังก์ชันการเขียน ไฟล์ กรณีนี้จะเกิดขึ้นหลังจากการเปลี่ยนโค้ดครั้งแรกเท่านั้น สถานะของแอปจะไม่เกิดขึ้น รีเซ็ตตามการเปลี่ยนแปลงโค้ดครั้งต่อๆ ไปที่คุณทำกับฟังก์ชัน Compose ในไฟล์นั้น
ชั้นเรียนที่แก้ไขด้วยการแก้ไขแบบเรียลไทม์อาจทำให้เกิดการลงโทษด้านประสิทธิภาพบางประการ เรียกใช้ แอปและใช้บิลด์ที่เผยแพร่แบบไม่ซับซ้อนหากคุณกำลังประเมิน ประสิทธิภาพ
คุณต้องเรียกใช้โปรแกรมแก้ไขข้อบกพร่องอย่างเต็มรูปแบบในชั้นเรียนที่คุณ ได้แก้ไขด้วยการแก้ไขสด
แอปที่กำลังทำงานอาจขัดข้องเมื่อคุณแก้ไขแอปด้วยการแก้ไขสด หากเกิดกรณีเช่นนี้ คุณสามารถทำให้แอปใช้งานได้อีกครั้งด้วยปุ่มเรียกใช้
การแก้ไขสดไม่ได้ทำการปรับเปลี่ยนไบต์โค้ดที่กำหนดไว้ใน ไฟล์บิลด์ของโปรเจ็กต์ เช่น การจัดการไบต์โค้ดที่ ใช้เมื่อสร้างโปรเจ็กต์โดยใช้ตัวเลือกในเมนูสร้าง หรือ โดยคลิกปุ่มสร้างหรือเรียกใช้
ฟังก์ชันที่ประกอบไม่ได้มีการอัปเดตแบบเรียลไทม์ในอุปกรณ์หรือโปรแกรมจำลอง และ การจัดองค์ประกอบใหม่แบบเต็มจะทริกเกอร์ การจัดองค์ประกอบใหม่แบบเต็มอาจไม่ได้เรียกใช้ ที่อัปเดตใหม่ สำหรับฟังก์ชันที่ประกอบกันได้ คุณต้องทริกเกอร์เมธอด อัปเดตฟังก์ชันหรือเรียกใช้แอปอีกครั้ง
การแก้ไขสดไม่กลับมาทำงานอีกครั้งเมื่อรีสตาร์ทแอป คุณต้องเรียกใช้แอปอีกครั้ง
การแก้ไขสดรองรับเฉพาะกระบวนการที่แก้ไขข้อบกพร่องได้
Live Edit ไม่รองรับโปรเจ็กต์ที่ใช้ค่าที่กำหนดเองสำหรับ
moduleName
ภายใต้kotlinOptions
ในการกำหนดค่าบิลด์การแก้ไขแบบเรียลไทม์ใช้ไม่ได้กับการติดตั้งใช้งานแบบหลายการทำให้ใช้งานได้ ซึ่งหมายความว่าคุณ ไม่สามารถทำให้ใช้งานได้ในอุปกรณ์หนึ่ง แล้วทำให้ใช้งานได้ในอุปกรณ์อีกเครื่องหนึ่ง การแก้ไขสดเปิดใช้งานได้เฉพาะใน ชุดอุปกรณ์ล่าสุดที่ทำให้ใช้งานแอปได้
Live Edit สามารถติดตั้งใช้งานในหลายอุปกรณ์ (นำไปทำให้ใช้งานได้สำหรับ อุปกรณ์ที่สร้างขึ้นผ่านเลือกอุปกรณ์หลายเครื่องในเป้าหมาย ของอุปกรณ์) อย่างไรก็ตาม แพลตฟอร์มนี้ไม่ได้รับการรองรับอย่างเป็นทางการและอาจมี ปัญหา หากพบปัญหา โปรดรายงานให้เราทราบ
ใช้การเปลี่ยนแปลง/นำการเปลี่ยนแปลงโค้ดไปใช้ไม่ได้กับการแก้ไขทันที และจำเป็นต้องรีสตาร์ทแอปที่ทำงานอยู่
ขณะนี้ Live Edit ไม่รองรับโปรเจ็กต์ Android Automotive
คำถามที่พบบ่อยเกี่ยวกับการแก้ไขสด
สถานะปัจจุบันของการแก้ไขสดคืออะไร
การแก้ไขสดพร้อมใช้งานใน Android Studio Giraffe หากต้องการเปิด ไปที่ไฟล์ > การตั้งค่า > เอดิเตอร์ > การแก้ไขสด (Android Studio > การตั้งค่า > เอดิเตอร์ > แก้ไขแบบเรียลไทม์ใน macOS)
ฉันควรใช้การแก้ไขแบบเรียลไทม์เมื่อใด
ใช้การแก้ไขสดเมื่อต้องการดูผลของการอัปเดต UX อย่างรวดเร็ว องค์ประกอบต่างๆ (เช่น การอัปเดตตัวแก้ไขและภาพเคลื่อนไหว) ในแอปโดยรวม ประสบการณ์การใช้งาน
ฉันควรหลีกเลี่ยงการใช้การแก้ไขสดเมื่อใด
การแก้ไขแบบเรียลไทม์จะมุ่งเน้นที่การเปลี่ยนแปลงโค้ดที่เกี่ยวข้องกับ UI และ UX ไม่รองรับ การเปลี่ยนแปลง เช่น การอัปเดตลายเซ็นเมธอด การเพิ่มเมธอดใหม่ หรือคลาส การเปลี่ยนแปลงลำดับชั้น ดูข้อมูลเพิ่มเติมได้ที่ข้อจำกัดของการถ่ายทอดสด แก้ไข
ฉันควรใช้ตัวอย่างการเขียนเมื่อใด
ใช้ตัวอย่าง Compose เมื่อคุณพัฒนา Composable แต่ละรายการ แสดงตัวอย่าง แสดงภาพเอลิเมนต์ Compose และรีเฟรชโดยอัตโนมัติเพื่อแสดง ผลจากการเปลี่ยนแปลงโค้ด การแสดงตัวอย่างยังสนับสนุนการดูองค์ประกอบ UI ภายใต้ การกำหนดค่าและสถานะต่างๆ เช่น ธีมมืด ภาษา และแบบอักษร ขนาด
การแก้ไขตัวเต็มแบบเรียลไทม์ (เลิกใช้งานแล้ว)
Android Studio สามารถอัปเดตแบบเรียลไทม์ซึ่งลิเทอรัลค่าคงที่ที่ใช้ใน Composable ภายในตัวอย่าง โปรแกรมจำลอง และอุปกรณ์จริง นี่คือบางส่วน ประเภทที่รองรับ:
Int
String
Color
Dp
Boolean
คุณสามารถดูลิเทอรัลคงที่ที่เรียกใช้การอัปเดตแบบเรียลไทม์ได้โดยไม่ต้องมี ขั้นตอนการรวบรวมโดยการเปิดใช้การตกแต่งตามตัวอักษรผ่านการแก้ไขสดของ ตัวบ่งชี้ UI ตามตัวอักษร:
ใช้การเปลี่ยนแปลง
ใช้การเปลี่ยนแปลงช่วยให้คุณอัปเดตโค้ดและทรัพยากรได้ โดยไม่ต้องทำให้แอปใช้งานได้อีกครั้งในโปรแกรมจำลองหรืออุปกรณ์จริง ข้อจำกัด)
เมื่อใดก็ตามที่คุณเพิ่ม แก้ไข หรือลบ Composable คุณอัปเดตแอปได้โดยไม่ต้อง ต้องทำให้โค้ดใช้งานได้อีกครั้งโดยคลิกปุ่มใช้การเปลี่ยนแปลงโค้ด ดังนี้
แนะนำสำหรับคุณ
- หมายเหตุ: ข้อความลิงก์จะแสดงเมื่อ JavaScript ปิดอยู่
- ปรับแต่งภาพเคลื่อนไหว {:#customize-animations}
- ภาพเคลื่อนไหวตามมูลค่า
- เพิ่มพารามิเตอร์