Android Studio 3.5 Canary เพิ่ม "ใช้การเปลี่ยนแปลง" ซึ่งเป็นการแทนที่ Instant Run

Android Studio 3.5 เปิดตัว Apply Changes ซึ่งเป็นรุ่นต่อจากฟีเจอร์ Instant Run ของเครื่องมือพัฒนาแอปยอดนิยม

ขณะนี้ Android Studio 3.5 (ปัจจุบันอยู่ในช่อง Canary และ Dev) นำเสนอวิธีใหม่ในการพุชการเปลี่ยนแปลงโค้ดไปยังแอปของคุณและดูผลกระทบได้ทันทีโดยไม่ต้องรีสตาร์ทแอป เรียกง่ายๆ ว่า "ใช้การเปลี่ยนแปลง" ซึ่งเป็นรุ่นต่อจากคุณลักษณะ "เรียกใช้ทันที" ในเวอร์ชันก่อนหน้าของ แอนดรอยด์สตูดิโอ.

ของกูเกิล บล็อกนักพัฒนา Android พูดสิ่งต่อไปนี้เกี่ยวกับการใช้การเปลี่ยนแปลง:

ใช้การเปลี่ยนแปลงช่วยให้คุณสามารถพุชการเปลี่ยนแปลงโค้ดและทรัพยากรไปยังแอปที่รันอยู่โดยไม่ต้องรีสตาร์ทแอป และในบางกรณี โดยไม่ต้องรีสตาร์ทกิจกรรมปัจจุบัน ใช้การเปลี่ยนแปลงแทนที่การเรียกใช้ทันทีด้วยแนวทางใหม่ทั้งหมดสำหรับการเพิ่มประสิทธิภาพบิลด์ แทนที่จะเขียนโค้ดไบต์ของ APK ของคุณใหม่ในระหว่างเวลาสร้าง Apply Changes จะกำหนดคลาสใหม่ทันทีโดยใช้ประโยชน์จากเครื่องมือรันไทม์ที่รองรับใน Android 8.0 (API ระดับ 26) หรือสูงกว่า

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

โพสต์ในบล็อกยังกล่าวถึงข้อจำกัดบางประการของฟังก์ชันการทำงานใหม่ ตัวอย่างเช่น อุปกรณ์ที่คุณกำลังทดสอบแอปจะต้องทำงานเป็นอย่างน้อย Android 8.0 โอรีโอ (API ระดับ 26) และมีการเปลี่ยนแปลงโค้ดบางอย่างที่ยังต้องให้แอปของคุณรีสตาร์ท เช่นเดียวกับ "เรียกใช้ทันที" "ใช้การเปลี่ยนแปลง" จะบังคับให้แอปของคุณรีสตาร์ทหากคุณ:

  • การเพิ่มหรือการลบคลาส วิธีการ หรือฟิลด์
  • การเปลี่ยนรายการ
  • การเปลี่ยนลายเซ็นวิธีการ
  • การเปลี่ยนโมดิฟายเออร์ของเมธอดหรือคลาส
  • การเปลี่ยนชื่อชั้นเรียน
  • การเปลี่ยนมรดกของคลาส
  • การเพิ่มหรือการลบทรัพยากร

ใต้ "ปัญหาที่ทราบ" โพสต์ในบล็อกระบุว่าเนื่องจากในตอนแรก Google ให้ความสำคัญกับความเสถียรมากกว่าประสิทธิภาพในฟีเจอร์ใหม่นี้ "ใช้การเปลี่ยนแปลง" จึงจะทำงานในบางครั้ง ช้ากว่าฟีเจอร์เดิมอย่าง "Instant Run" นอกจากนี้ ไม่รองรับอิมเมจจำลอง x86_x64 และเพื่อวัตถุประสงค์ในการแก้ไขจุดบกพร่อง มีเพียง Android Pie (API ระดับ 28) เท่านั้น ได้รับการสนับสนุน. คุณสามารถดูรายการข้อจำกัดทั้งหมดและปัญหาที่ทราบได้จากลิงก์แหล่งที่มาด้านล่าง

หากต้องการคำอธิบายโดยละเอียดเพิ่มเติมเกี่ยวกับความแตกต่างระหว่าง "ใช้การเปลี่ยนแปลง" และ "การทำงานทันที" พนักงานของ Google ในทีม Android Studio ได้กล่าวถึงสิ่งนี้ เรดดิต:

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

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

คาดว่า "ใช้การเปลี่ยนแปลง" จะมาแทนที่ "เรียกใช้ทันที" ในเวอร์ชันเบต้าและเวอร์ชันเสถียรในที่สุด เนื่องจาก Google ทำการปรับปรุงประสิทธิภาพและความเสถียร


ที่มา: บล็อกนักพัฒนา Android