ในฐานะนักพัฒนาแอปบนอุปกรณ์เคลื่อนที่ คุณมักจะพัฒนา UI ของแอปทีละขั้นตอนแทนที่จะพัฒนาทุกอย่างพร้อมกัน Android Studio รองรับแนวทางนี้ด้วย Compose ของ Jetpack โดยจัดเตรียมเครื่องมือที่ไม่จําเป็นต้องสร้างแบบสมบูรณ์เพื่อตรวจสอบ แก้ไขค่า และยืนยันผลลัพธ์สุดท้าย
การแก้ไขสด
ได้ด้วยการแก้ไขแบบเรียลไทม์เป็นฟีเจอร์ที่ช่วยให้คุณอัปเดตคอมโพสิเบิลในโปรแกรมจำลองและอุปกรณ์จริงได้แบบเรียลไทม์ ฟังก์ชันการทำงานนี้จะลดการเปลี่ยนบริบทระหว่างการเขียนและการสร้างแอป ซึ่งจะช่วยให้คุณมุ่งเน้นการเขียนโค้ดได้นานขึ้นโดยไม่หยุดชะงัก
การแก้ไขแบบเรียลไทม์มี 3 โหมด ได้แก่
- ด้วยตนเอง: ระบบจะใช้การเปลี่ยนแปลงโค้ดเมื่อมีการพุชด้วยตนเองโดยใช้ Control+' (Command+' ใน macOS)
- บันทึกด้วยตนเอง: ระบบจะใช้การเปลี่ยนแปลงโค้ดเมื่อบันทึกด้วยตนเองโดยใช้ Control+S (Command+S ใน macOS)
- อัตโนมัติ: การเปลี่ยนแปลงจะมีผลในอุปกรณ์หรือโปรแกรมจำลองเมื่อคุณอัปเดตฟังก์ชันคอมโพสิเบิล
การแก้ไขแบบเรียลไทม์จะมุ่งเน้นที่การเปลี่ยนแปลงโค้ดที่เกี่ยวข้องกับ UI และ UX การแก้ไขแบบเรียลไทม์ไม่รองรับการเปลี่ยนแปลง เช่น การอัปเดตลายเซ็นเมธอด การเพิ่มเมธอดใหม่ หรือการเปลี่ยนแปลงลําดับชั้นของคลาส ดูข้อมูลเพิ่มเติมได้ที่รายการข้อจำกัดของฟีเจอร์แก้ไขขณะถ่ายทอดสด
ฟีเจอร์นี้ไม่ได้มาแทนการสร้างและเรียกใช้แอปหรือใช้การเปลี่ยนแปลง แต่ออกแบบมาเพื่อเพิ่มประสิทธิภาพเวิร์กโฟลว์ขณะที่คุณสร้าง ติดตั้งใช้งาน และปรับปรุงเพื่อพัฒนา Compose UI
เวิร์กโฟลว์แนวทางปฏิบัติแนะนำมีดังนี้
- ตั้งค่าแอปพลิเคชันเพื่อให้ทำงานได้
- ใช้การแก้ไขสดให้มากที่สุดจนกว่าจะต้องทําการเปลี่ยนแปลงที่การแก้ไขสดไม่รองรับ เช่น การเพิ่มเมธอดใหม่ขณะที่แอปทํางานอยู่
- หลังจากทําการเปลี่ยนแปลงที่ไม่รองรับแล้ว ให้คลิกเรียกใช้ เพื่อรีสตาร์ทแอปและแก้ไขแบบเรียลไทม์ต่อ
เริ่มต้นใช้งานการแก้ไขแบบเรียลไทม์
หากต้องการเริ่มต้นใช้งาน ให้ทำตามขั้นตอนต่อไปนี้เพื่อสร้างกิจกรรมการเขียนเปล่า เปิดใช้การแก้ไขแบบเรียลไทม์สำหรับโปรเจ็กต์ และทําการเปลี่ยนแปลงด้วยการแก้ไขแบบเรียลไทม์
สร้างโปรเจ็กต์ใหม่
ก่อนเริ่มต้น ให้ตรวจสอบว่าคุณได้ติดตั้ง Android Studio Giraffe ขึ้นไปแล้ว และ API ระดับของอุปกรณ์จริงหรือโปรแกรมจำลองเป็นอย่างน้อย 30
เปิด Android Studio แล้วเลือกโปรเจ็กต์ใหม่ในกล่องโต้ตอบยินดีต้อนรับสู่ Android Studio หากมีโปรเจ็กต์เปิดอยู่ คุณสามารถสร้างโปรเจ็กต์ใหม่ได้โดยไปที่ไฟล์ > ใหม่ > โปรเจ็กต์ใหม่
เลือกเทมเพลตกิจกรรมการเขียนเปล่าสําหรับโทรศัพท์และแท็บเล็ต แล้วคลิกถัดไป
กรอกข้อมูลที่จำเป็นในกล่องโต้ตอบโปรเจ็กต์ใหม่ ได้แก่ ชื่อ, ชื่อแพ็กเกจ, ตำแหน่งที่จะบันทึก, SDK ขั้นต่ำ และภาษาสำหรับการกำหนดค่าบิลด์
คลิกเสร็จสิ้น
เปิดใช้การแก้ไขสด
ไปที่การตั้งค่าเพื่อเปิดใช้การแก้ไขแบบเรียลไทม์
- ใน Windows หรือ Linux ให้ไปที่ไฟล์ > การตั้งค่า > เครื่องมือแก้ไข > แก้ไขแบบเรียลไทม์
- ใน macOS ให้ไปที่ Android Studio > Settings > Editor > Live Edit
เลือกตัวเลือกแก้ไขแบบเรียลไทม์และโหมดที่ต้องการเรียกใช้จากการตั้งค่า
ในโหมดด้วยตนเอง ระบบจะพุชการเปลี่ยนแปลงโค้ดทุกครั้งที่คุณกด Control+' (Command+' ใน macOS) ในโหมดบันทึกด้วยตนเอง ระบบจะใช้การเปลี่ยนแปลงโค้ดทุกครั้งที่คุณบันทึกด้วยตนเองโดยใช้ Control+S (Command+S ใน macOS) ในโหมดอัตโนมัติ การเปลี่ยนแปลงโค้ดจะมีผลในอุปกรณ์หรือโปรแกรมจำลองขณะที่คุณทําการเปลี่ยนแปลง
เปิดไฟล์
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
แก้ปัญหาการแก้ไขสด
หากไม่เห็นการแก้ไขในอุปกรณ์ทดสอบ แสดงว่า Android Studio อาจอัปเดตการแก้ไขไม่สำเร็จ ตรวจสอบว่าตัวบ่งชี้การแก้ไขแบบเรียลไทม์ระบุว่าล้าสมัยหรือไม่ ดังที่แสดงในรูปที่ 5 ซึ่งบ่งบอกถึงข้อผิดพลาดในการคอมไพล์ หากต้องการทราบข้อมูลเกี่ยวกับข้อผิดพลาดและคำแนะนำในการแก้ไข ให้คลิกตัวบ่งชี้
ข้อจำกัดของการแก้ไขสด
รายการข้อจํากัดปัจจุบันมีดังนี้
[ใช้ได้กับ Android Studio Giraffe ขึ้นไปเท่านั้น] การแก้ไขแบบเรียลไทม์ต้องใช้ Compose Runtime 1.3.0 ขึ้นไป หากโปรเจ็กต์ใช้เครื่องมือเขียนเวอร์ชันต่ำกว่า ระบบจะปิดใช้การแก้ไขแบบเรียลไทม์
[ใช้ได้กับ Android Studio Giraffe ขึ้นไปเท่านั้น] การแก้ไขแบบเรียลไทม์ต้องใช้ AGP 8.1.0-alpha05 ขึ้นไป หากโปรเจ็กต์ใช้ AGP เวอร์ชันต่ำกว่า ระบบจะปิดใช้การแก้ไขแบบเรียลไทม์
การแก้ไขแบบเรียลไทม์ต้องใช้อุปกรณ์จริงหรือโปรแกรมจำลองที่ใช้ API ระดับ 30 ขึ้นไป
การแก้ไขแบบเรียลไทม์รองรับเฉพาะการแก้ไขเนื้อหาของฟังก์ชัน ซึ่งหมายความว่าคุณจะเปลี่ยนชื่อฟังก์ชันหรือลายเซ็น เพิ่มหรือนำฟังก์ชันออก หรือเปลี่ยนช่องที่ไม่ใช่ฟังก์ชันไม่ได้
การแก้ไขแบบเรียลไทม์จะรีเซ็ตสถานะของแอปเมื่อคุณเปลี่ยนฟังก์ชันการเขียนในไฟล์เป็นครั้งแรก การดำเนินการนี้จะมีผลหลังจากการเปลี่ยนแปลงโค้ดครั้งแรกเท่านั้น สถานะแอปจะไม่รีเซ็ตตามการเปลี่ยนแปลงโค้ดที่คุณทำกับฟังก์ชันการเขียนในไฟล์นั้นในภายหลัง
ชั้นเรียนที่แก้ไขแบบเรียลไทม์อาจเสียประสิทธิภาพไปบ้าง เรียกใช้แอปและใช้บิลด์รุ่นที่สะอาดหากต้องการประเมินประสิทธิภาพ
คุณต้องเรียกใช้โปรแกรมแก้ไขข้อบกพร่องแบบเต็มเพื่อให้ทำงานกับคลาสที่คุณแก้ไขด้วย "การแก้ไขแบบเรียลไทม์" ได้
แอปที่ทำงานอยู่อาจขัดข้องเมื่อคุณแก้ไขด้วยฟีเจอร์แก้ไขแบบเรียลไทม์ หากเกิดกรณีนี้ขึ้น คุณสามารถนำแอปไปใช้งานได้อีกครั้งด้วยปุ่มเรียกใช้
การแก้ไขแบบเรียลไทม์จะไม่ดําเนินการกับไบต์โค้ดที่กําหนดไว้ในไฟล์บิลด์ของโปรเจ็กต์ เช่น การจัดการไบต์โค้ดที่จะใช้เมื่อสร้างโปรเจ็กต์โดยใช้ตัวเลือกในเมนูสร้าง หรือคลิกปุ่มสร้างหรือเรียกใช้
ฟังก์ชันที่คอมโพสิเบิลไม่ได้จะอัปเดตแบบเรียลไทม์ในอุปกรณ์หรือโปรแกรมจำลอง และระบบจะเรียกใช้การจัดเรียงใหม่ทั้งหมด การคอมโพสิชันใหม่ทั้งหมดอาจไม่เรียกใช้ฟังก์ชันที่อัปเดต สําหรับฟังก์ชันที่คอมโพสิทไม่ได้ คุณต้องเรียกใช้ฟังก์ชันที่อัปเดตใหม่หรือเรียกใช้แอปอีกครั้ง
การแก้ไขสดจะไม่กลับมาทำงานต่อเมื่อแอปรีสตาร์ท คุณต้องเรียกใช้แอปอีกครั้ง
การแก้ไขแบบเรียลไทม์รองรับเฉพาะกระบวนการแก้ไขข้อบกพร่องได้เท่านั้น
การแก้ไขแบบเรียลไทม์ไม่รองรับโปรเจ็กต์ที่ใช้ค่าที่กำหนดเองสำหรับ
moduleName
ในส่วนkotlinOptions
ในการกำหนดค่าบิลด์การแก้ไขแบบเรียลไทม์ใช้ไม่ได้กับการติดตั้งใช้งานแบบหลายครั้ง ซึ่งหมายความว่าคุณจะไม่สามารถทำให้อุปกรณ์หนึ่งพร้อมใช้งานแล้วนำไปใช้กับอีกอุปกรณ์หนึ่ง การแก้ไขแบบเรียลไทม์จะใช้งานได้ในอุปกรณ์ชุดล่าสุดที่แอปได้รับการติดตั้งใช้งานเท่านั้น
การแก้ไขแบบเรียลไทม์ใช้ได้กับการติดตั้งใช้งานหลายอุปกรณ์ (การติดตั้งใช้งานในอุปกรณ์หลายเครื่องที่สร้างผ่านเลือกอุปกรณ์หลายเครื่องในเมนูแบบเลื่อนลงของอุปกรณ์เป้าหมาย) อย่างไรก็ตาม ระบบยังไม่รองรับอย่างเป็นทางการและอาจมีปัญหา หากพบปัญหา โปรดรายงาน
ใช้การเปลี่ยนแปลง/ใช้การเปลี่ยนแปลงโค้ดใช้ไม่ได้กับการแก้ไขแบบเรียลไทม์และต้องรีสตาร์ทแอปที่ทำงานอยู่
ขณะนี้การแก้ไขแบบเรียลไทม์ยังไม่รองรับโปรเจ็กต์ Android Automotive
คำถามที่พบบ่อยเกี่ยวกับการแก้ไขแบบเรียลไทม์
ปัจจุบันการแก้ไขแบบสดมีสถานะอย่างไร
การแก้ไขแบบเรียลไทม์พร้อมใช้งานใน Android Studio Giraffe หากต้องการเปิดฟีเจอร์นี้ ให้ไปที่ไฟล์ > การตั้งค่า > เครื่องมือแก้ไข > แก้ไขแบบเรียลไทม์ (Android Studio > การตั้งค่า > เครื่องมือแก้ไข > แก้ไขแบบเรียลไทม์ใน macOS)
ฉันควรใช้การแก้ไขสดเมื่อใด
ใช้การแก้ไขแบบเรียลไทม์เมื่อคุณต้องการดูผลของการอัปเดตองค์ประกอบ UX (เช่น การอัปเดตตัวแก้ไขและภาพเคลื่อนไหว) อย่างรวดเร็วต่อประสบการณ์การใช้งานแอปโดยรวม
ฉันควรหลีกเลี่ยงการใช้การแก้ไขแบบเรียลไทม์เมื่อใด
การแก้ไขแบบเรียลไทม์จะมุ่งเน้นที่การเปลี่ยนแปลงโค้ดที่เกี่ยวข้องกับ UI และ UX และไม่รองรับการเปลี่ยนแปลง เช่น การอัปเดตลายเซ็นเมธอด การเพิ่มเมธอดใหม่ หรือการเปลี่ยนแปลงลําดับชั้นของคลาส ดูข้อมูลเพิ่มเติมได้ที่ข้อจำกัดของฟีเจอร์แก้ไขสด
ฉันควรใช้การพรีวิวการเขียนเมื่อใด
ใช้การแสดงตัวอย่างการคอมโพสิทเมื่อคุณพัฒนาคอมโพสิทแต่ละรายการ การแสดงตัวอย่างจะแสดงองค์ประกอบการคอมโพสิทเป็นภาพและรีเฟรชโดยอัตโนมัติเพื่อแสดงผลของการเปลี่ยนแปลงโค้ด นอกจากนี้ การแสดงตัวอย่างยังรองรับการดูองค์ประกอบ UI ภายใต้การกำหนดค่าและสถานะต่างๆ เช่น ธีมมืด ภาษา และการปรับขนาดแบบอักษร
การแก้ไขแบบเรียลไทม์ของข้อความ (เลิกใช้งานแล้ว)
Android Studio สามารถอัปเดตค่าคงที่บางรายการที่ใช้ในคอมโพสิเบิลภายในตัวอย่าง โปรแกรมจำลอง และอุปกรณ์จริงแบบเรียลไทม์ ประเภทที่รองรับมีดังนี้
Int
String
Color
Dp
Boolean
คุณสามารถดูลิเทอรัลคงที่ซึ่งทริกเกอร์การอัปเดตแบบเรียลไทม์โดยไม่ต้องทำขั้นตอนคอมไพล์โดยเปิดใช้การตกแต่งลิเทอรัลผ่านตัวบ่งชี้ UI ของลิเทอรัลสำหรับการแก้ไขแบบเรียลไทม์ ดังนี้
ใช้การเปลี่ยนแปลง
ใช้การเปลี่ยนแปลงช่วยให้คุณอัปเดตโค้ดและทรัพยากรได้โดยไม่ต้องทำให้แอปใช้งานได้อีกครั้งบนโปรแกรมจำลองหรืออุปกรณ์จริง (มีข้อจำกัดบางอย่าง)
เมื่อใดก็ตามที่คุณเพิ่ม แก้ไข หรือลบ Composable คุณจะอัปเดตแอปได้โดยไม่ต้องทำให้ใช้งานได้อีกครั้งโดยคลิกปุ่มใช้การเปลี่ยนแปลงโค้ด
แนะนำสำหรับคุณ
- หมายเหตุ: ข้อความลิงก์จะแสดงเมื่อ JavaScript ปิดอยู่
- ปรับแต่งภาพเคลื่อนไหว {:#customize-animations}
- ภาพเคลื่อนไหวตามมูลค่า
- เพิ่มพารามิเตอร์