31 พฤษภาคม 2559

[Android Dev Tips] เตรียมตัวกันให้พร้อมกับ Android Studio 2.2!!



        นี่ก็ผ่านมาแล้วถึง 3 ปี นับหลังจากที่ Android Studio ได้เปิดตัวขึ้นในงาน Google I/O 2013 พอรู้ตัวอีกทีก็กลายเป็น IDE สำหรับ Android Developer ที่ใช้กันอย่างแพร่หลายไปซะแล้ว จนล่าสุดนี้ก็ได้ประกาศเปิดตัว Android Studio 2.2 ภายในงาน Google I/O 2016 (มาไกลถึง 2.2 แล้วหรือนี่)

        ว่าแต่มันมีอะไรบ้างนะ?

        นับจากตอนที่ Android Studio 2.0 ถูกเปิดตัวในงาน Android Dev Summit 2015 ที่มาพร้อมกับความสามารถใหม่ๆที่เยอะแยะไปหมด จนกระทั่งมาถึงเวอร์ชัน 2.2 ก็ยังไม่หยุดที่จะพัฒนาต่อไปเรื่อยๆ ซึ่งก็มาพร้อมกับความสามารถอีกเยอะแยะไปหมดเช่นกัน จนเจ้าของบล็อกต้องรวบรวมข้อมูลมาสรุปให้อ่านกันเนี่ย ว่ามันมีอะไรบ้าง

        เอาล่ะ สรุปได้ว่า...

APK Viewer 

        สำหรับเปิดไฟล์ APK ดูได้ทันที โคตรสะดวกมาก!! แต่ไม่ใช่การ Decompile เพื่อไปนั่งส่องโค้ดในไฟล์ APK นะครับ เพราะทางทีมพัฒนาทำขึ้นมาเพื่อให้นักพัฒนาสามารถตรวจสอบไฟล์ APK ได้ว่ามีขนาดใหญ่ไปหรือป่าว ไฟล์ตรงไหนที่เป็นสาเหตุที่ทำให้แอพใหญ่เกินจำเป็น ดูไฟล์ต่างๆที่เกิดขึ้นหลังจากรวมเป็น APK แล้ว และสามารถดู Method Count ของแต่ละส่วนภายใน classes.dex ได้ด้วย ซึ่งจะสะดวกมากเวลาเจอปัญหา Method Count เกิน 65,536 Method


        วิธีเปิดดูใน APK ก็แสนง่าย แค่ลากไฟล์ APK เข้าไปใน Android Studio

Merge Manifest Viewer

        ปกติแล้วเวลาที่โปรเจคมีการเรียกใช้ Dependency จากที่ใดก็ตาม Dependency ทุกๆตัวก็ย่อมมี Android Manifest เป็นของตัวเอง ซึ่งเจ้า Gradle ก็จะช่วยจัดการให้ตอน Build นี่แหละครับ โดยจะทำการรวม (Merge) คำสั่งต่างๆที่อยู่ใน Android Manifest ของทุกๆตัวเข้าด้วยกันเพื่อให้กลายเป็นไฟล์เดียว

        ซึ่งนั่นแหละ ปัญหาอย่างหนึ่งของนักพัฒนาที่ไม่รู้ว่า Dependency ตัวอื่นๆมันมีการประกาศอะไรไว้ในนั้นบ้าง อย่างเช่นมี Dependency ตัวหนึ่งมันดันประกาศ Permission บางอย่างไว้ที่นักพัฒนาไม่รู้ การที่จะรู้ได้ก็จะต้องมานั่งแงะดูในไฟล์ APK ที่ Export ออกมา ซึ่งไม่ค่อยสะดวกซักเท่าไรเนอะ ถึงแม้ว่า Android Studio จะสามารถเปิดไฟล์ APK ได้แล้ว


        ดังนั้นเวลาเปิดไฟล์ AndroidManifest.xml จะมีแถบตรงข้างล่างเพิ่มเข้ามาใหม่อีกหนึ่งตัว โดยชื่อแถบว่า Merged Manifest

        ซึ่งในหน้านี้ก็จะแสดงผลลัพธ์ที่ได้ตอนที่ Gradle รวม Android Manifest ทุกตัวเข้าด้วยกัน แถมยังมีการ Highlight สีให้ดูด้วยว่าบรรทัดไหนมาจาก Dependency ตัวไหน คือโคตรสะดวกเลย!!

Dependency Info

        ปัญหาอย่างหนึ่งของนักพัฒนาเลยก็คือการมานั่งไล่เช็คว่า Dependency ตัวไหนมีอัพเดทใหม่บ้าง หรือใช้เวอร์ชันไหนอยู่ ซึ่งปกติก็จะต้องเปิดไฟล์ build.gradle มานั่งดูทีละ Module ไป อันไหนมีเวอร์ชันใหม่ก็เปลี่ยนเลขเวอร์ชันแล้ว Sync Gradle

        แต่สำหรับ Android Studio 2.2 จะมีการเพิ่มแถบใหม่เข้ามาใน Project Structure เพื่อให้สามารถดู Dependency ที่เรียกใช้ในแต่ละ Module ได้ง่ายขึ้น สามารถกดเพื่อเช็คเวอร์ชันได้เลย และถ้าตัวไหนมีเวอร์ชันใหม่ก็กดอัพเดทจากในนี้ได้ทันที


      แต่ว่าใน Android Studio 2.2 ที่เปิดให้ทดสอบล่าสุดในตอนนี้ยังไม่มีให้ใช้งานครับ อาจจะต้องรออัพเดทอีกซักพัก

รองรับ C++ ทั้ง Editor และ Debugger

     ปัญหาที่นักพัฒนาหลายๆคนยังไม่ได้ย้ายมาใช้ Android Studio อย่างเต็มตัว ส่วนหนึ่งก็เพราะว่ามีโปรเจคที่ต้องใช้ NDK และต้องเขียน C++ อยู่ด้วย ซึ่งเมื่อก่อนนั้น Android Studio ยังไม่ได้รองรับเต็มที่ซักเท่าไรนัก แต่ปัญหานี้ก็จะหมดไปแล้วบน Android Studio 2.2 ล่ะ


      โดย Android Studio จะรองรับการทำงานกับภาษา C++ ซึ่งในเวอร์ชันนี้นอกจากจะมี IntelliJ แล้ว ยังมี CLion อยู่ใน Android Studio อีกด้วย จึงสามารถทำงานกับไฟล์ .cpp หรือ .h ร่วมกับไฟล์ .java ได้อย่างง่ายดาย แถมยัง Debug พร้อมๆกันได้อีกด้วย และเรียกใช้งาน CMake ใน Gradle ได้แล้ว ทำให้สามารถ Compile โปรแกรมให้กลายเป็นไฟล์ .so แล้วไปรวมอยู่ใน APK ได้ทันที

       เวลาสร้างโปรเจคสามารถกำหนดได้เลยว่าจะให้สร้างโปรเจคเพื่อรองรับกับ C++ ได้เลย

       และเวลาใช้งาน Debugger ก็ไม่ต้องมานั่งเลือกว่าจะใช้ Debugger สำหรับ Java หรือว่า C++ เพราะตัว Android Studio จะเลือกให้เองโดยอัตโนมัติ

Build-tools download on the fly 

      ปัญหาอย่างหนึ่งของการทำ CI (Continuous Integration) คือเวลาที่นักพัฒนาอัพเดท Build-tools ในโปรเจคให้เป็นเวอร์ชันใหม่ จะทำให้ Gradle เกิดปัญหาไม่มี Build-tools เวอร์ชันนั้นๆ (คนที่ดูแล CI ก็ต้องมานั่งอัพเดท Build-tools ตัวใหม่เพิ่มเข้าไปในเซิฟเวอร์ที่ทำ CI)

      ซึ่ง Gradle เวอร์ชัน 2.2 ขึ้นไปที่มาพร้อมกับ Android Studio 2.2 จะสามารถตั้งค่าใน gradle.properties ได้ว่า

android.builder.sdkDownload=true

        เพื่อให้ Gradle ไปดาวน์โหลด Build-tools เวอร์ชันที่กำหนดไว้ทันทีถ้าพบว่าไม่ได้ติดตั้งไว้ก่อนหน้า


Menu Option Editor

        แอพส่วนใหญ่นั้นมีการสร้างเมนูที่เรียกว่า Menu Option และเมนูที่ว่านั้นจะสร้างขึ้นจาก XML ซึ่งแน่นอนว่าเดิมทีต้องพิมพ์โค้ XML เข้าไปเองทั้งหมด

        แต่บน Android Studio 2.2 จะมีการเพิ่มหน้า Editor สำหรับ Menu Option เข้ามาให้ เพื่อให้นักพัฒนาสามารถสร้าง Menu Option ได้ง่ายถึงง่ายมาก


        มันจะเหมือนกับ Layout Editor เป๊ะๆ มี Palette ให้ลากวางๆแล้วกำหนดค่าผ่าน Properties และมี Component Tree ให้ดูด้วย สะดวกมากกกกกกกกก

Preference Screen Editor

        อีกหนึ่งความสะดวกสบายมันมาอีกแล้ว เพราะในเวอร์ชันนี้นักพัฒนาสามารถสร้างหน้า Preference หรือหน้าตั้งค่าภายในแอพได้ง่ายๆแล้ว ลากวางๆแล้วกำหนดค่าผ่าน Properties ได้เลย


Important Attribute ใน Layout Editor

        สำหรับนักพัฒนาที่จัด Layout ใน Layout Editor ส่วนใหญ่ก็จะกำหนดค่าในหน้าต่าง Properties (ที่อยู่ขวามือของ Layout Preview) แต่ทว่า View ทุกตัวเนี่ย มันมี Attribute ให้กำหนดค่าเยอะแยะไปหมด ดังนั้นในเวอร์ชันนี้จึงมีการปรับปรุงใหม่ โดยทำให้หน้าต่าง Properties สามารถแสดงผลเฉพาะ Attribute ที่สำคัญๆสำหรับ View ประเภทนั้นๆได้

        เช่นต้องการกำหนดค่าให้กับ TextView ก็เพียงแค่คลิกที่ TextView ตัวที่ต้องการ แล้วที่หน้าต่าง Properties จะแสดง Attribute ที่สำคัญๆเฉพาะของ TextView เพื่อให้กำหนดค่าได้สะดวก ไม่ต้อง Scroll ขึ้นลงไปมาเพื่อหา Attribute ที่ต้องการให้ลำบาก



      ในกรณีที่ต้องการกำหนดค่าอื่นๆนอกเหนือจากนั้นก็สามารถกดสลับไปมาระหว่างสองแบบได้


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

Preview Layout แบบ Blueprint

        Preview Layout แบบเดิมที่ใช้กันอยู่มันก็โอเคนะ เพราะมันสามารถ Preview ให้เห็นใกล้เคียงกับของจริงพอสมควร (เพี้ยนบ้างเล็กน้อยพอรับได้) แต่ปัญหาอย่างหนึ่งก็คือมันดู View ที่ทับซ้อนกันได้ยาก แถมการ Preview ก็เหมือนกับการเปิด Emu ขนาดย่อมๆเพื่อโยน View เข้าไปให้มัน Preview ออกมา

        ซึ่ง Android Studio 2.2 ก็ได้เพิ่มการ Preview แบบ Blueprint เข้ามา ซึ่งจะแสดงให้เห็นเฉพาะโครงสร้างของ Layout เท่านั้น ไม่มีการ Preview ออกมาให้เห็นจริงๆ จึงทำให้สามารถดู View ที่ทับซ้อนกันได้ง่ายและไม่ต้อง Render หนักเท่าแบบเดิม และสามารถเปิดควบคู่กันได้ด้วยนะเออ


Preview Layout Scrollable

        น้ำตาจะไหลหลังจากที่นักพัฒนาแอนดรอยด์นั้นต้องพบปัญหาเวลาออกแบบ Layout แล้วเจอปัญหา View เยอะจนล้นออกนอกพื้นที่ของ ScrollView จึงทำให้สามารถดู View ที่ล้นออกไปได้ยากว่าจัดได้อย่างถูกต้องหรือป่าว ซึ่งวิธีแก้แบบเดิมๆก็คือต้องทำ ScrollView ให้อยู่ใน Root Hierarchy แล้ว Preview Layout จะแสดง Layout แบบยาวๆให้เห็นทั้งหมด

        แต่ปัญหานี้จะหมดไป!! เมื่อเปลี่ยนมาใช้ Android Studio 2.2!! เพราะมันสามารถเลื่อน ScollView ผ่าน Preview Layout ได้แล้ว โอย ดีใจจนแทบจะเป็นลม


        แต่จากที่ทดสอบก็พบว่ากระตุกพอสมควรอยู่เหมือนกัน ไม่ได้ลื่นไหลซักเท่าไรนัก แต่ก็ช่วยให้นักพัฒนาสามารถเห็นตัวอย่างได้ง่ายขึ้น ไม่ต้องมานั่ง Build ลงเครื่องเพื่อทดสอบบ่อยๆ

        อ้อ แล้วก็เวลาแสดงโค้ด XML แล้วเปิดหน้าต่าง Preview ในตอนนี้สามารถลาก View ในหน้าต่าง Preview เพื่อแก้ไขได้ทันทีเลยนะ (ซึ่งของเดิมดูได้อย่างเดียว แก้ไขไม่ได้) ซึ่งจริงๆถูกประกาศไว้ตั้งแต่ 2.0 แล้วล่ะ แต่พึ่งจะพร้อมให้ใช้งาน



Constrain Layout

        เป็น Layout ตัวใหม่ที่ทางทีมพัฒนาสร้างขึ้นมาเพื่อทำเรื่อง Layout ให้เป็นเรื่องง่าย เพราะจัด Layout ถือว่าเป็นหนึ่งในความยากลำบากของนักพัฒนาหลายๆคนจากการใช้พวก Layout ต่างๆอย่าง Linear Layout, Relative Layout และอื่นๆ

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


        ซึ่งทางทีมพัฒนาอยากจะผลักดันให้เปลี่ยนมาใช้งานกันมากจนถึงกับทำเมนู Convert จาก Layout ต่างๆให้กลายเป็น Constrain Layout กันเลยทีเดียว


        สำหรับความสามารถของ Constrain Layout โดยละเอียด เจ้าของบล็อกคงขอเก็บไว้เขียนเป็นบทความสำหรับเรื่องนี้ไปเลยดีกว่า เพราะมันเป็นเรื่องที่น่าสนใจมากๆเลยล่ะ

Firebase Integration & Firebase Test Lab

        ภายในงาน Google I/O 2016 ได้มีการเปิดตัว Firebase แบบใหม่ที่ถูกยกเครื่องใหม่ทั้งหมดให้กลายเป็นบริการหลังบ้านสำหรับนักพัฒนาแอพแบบครบวงจร ซึ่งบน Android Studio 2.2 ก็ได้มีการเพิ่ม Integration สำหรับ Firebase เช่นกัน นั่นก็หมายความว่านักพัฒนาสามารถเขียนโค้ดเพื่อใช้งานบริการต่างๆของ Firebase ได้โคตรง่าย



        จะมีหน้าต่าง Assistant ของ Firebase ขึ้นให้ที่หน้าต่างด้านข้างเลย (โคตรนำเสนออ่ะ)



        ซึ่งขั้นตอนการตั้งค่าเพื่อใช้งานบริการแต่ละตัวของ Firebase ก็แสนง่าย แทบไม่ต้องทำอะไรมากถ้าผู้ที่หลงเข้ามาอ่านเคยใช้งาน Google Cloud Platform เพราะทุกอย่างสามารถ Setup ด้วยหน้าต่าง Assistant ได้แทบทั้งหมด มีโค้ดอะไรบ้างที่ต้องใส่เพิ่มก็แค่ Copy ไปวาง (เฮ้ย ชีวิตจะสะดวกสบายเกินไปแล้วววววว)
        ว่าแล้วก็ขอพูดถึงการทำ Cloud Test ด้วยเลย เพราะ Firebase มีบริการที่ชื่อว่า Firebase Test Lab (เบื้องหลังก็คือ Cloud Test Lab ของ Google น่ะแหละ) เพื่อให้นักพัฒนาสามารถ Deploy แอพขึ้นไปทดสอบบนเซิฟเวอร์ของ Firebase ได้เลย ซึ่งบนนั้นจะมีอุปกรณ์แอนดรอยด์รุ่นต่างๆเตรียมไว้ให้ทดสอบแบบอัตโนมัติ

        เวลา Deploy นอกจากจะมีให้เลือกว่าจะติดตั้งลงเครื่องไหนของเครื่องเจ้าของบล็อก ก็จะมีแถบ Cloud Testing ให้ด้วย
        ซึ่งสามารถกำหนดค่า Configuration เพิ่มเติมเองได้ว่าจะให้ทดสอบบนเครื่องไหนบ้าง เวอร์ชันอะไร ภาษาอะไร และหน้าจอแนวตั้งหรือแนวนอน สามารถ Custom Profile เก็บไว้ได้เลย


Sample Browser

        เคยกันมั้ย? เวลาที่จะเรียกใช้งานบางอย่างแล้วไม่รู้ว่าต้องมีคำสั่งอะไรบ้าง? ทางทีมพัฒนา Android Studio จึงทำให้เวอร์ชัน 2.2 นี้สามารถคลิกขวาที่คลาสที่ต้องการแล้วสั่งให้ค้นหาตัวอย่างจาก Google Samples ได้ทันทีโดยไม่ต้องไปเปิดหน้าเว็ปเอง




        เป็นความสามารถที่อำนวยความสะดวกอีกแล้ว (เยอะจังวุ้ย) แต่ถึงกระนั้นก็ยังค้นหาตัวอย่างโค้ดได้จาก Google Samples เท่านั้น ก็หวังว่าทางทีมพัฒนาจะทำให้สามารถเพิ่มแหล่งโค้ดจากที่อื่นๆเข้าไปเองได้

Based on IntelliJ 16.1 

        เพราะงั้นผู้ที่หลงเข้ามาอ่านจะได้ใช้ความสามารถใหม่ๆของ IntelliJ 16.1 ใน Android Studio 2.2 นี้

New Annotation

        @AnyThread บอกให้รู้ว่า Method ตัวนี้สามารถเรียกใช้งานใน Thread แบบไหนก็ได้ (เดิมจะมี @UiThread กับ @WorkerThread)

        @RequireApi เป็นการบอกให้รู้ว่า Method ตัวนี้เรียกใช้งานได้เฉพาะแอนดรอยด์เวอร์ชันอะไรขึ้นไป

        @Px กำหนดให้ Parameter ที่ส่งเข้ามาใน Method นั้นต้องเป็นหน่วย px ไม่ใช่ค่าอื่นๆพวก sp หรือ dp เพื่อป้องกันปัญหาดึงค่า Dimension จาก Resource ผิดหน่วย (เดิมจะมี @Dimension(unit=Dimension.SP) ให้ใช้งาน)

        @Keep บอกให้ Proguard รู้ว่า Method ตัวนี้ให้เก็บไว้อย่าตัดทิ้งออกไป (จากเดิมที่ต้อง Config เองใน proguard-rules.pro)

        @RequiresPermission บอกให้รู้ว่า Method ตัวนี้มีการเรียกใช้งาน Permission ที่กำหนดไว้ (สำหรับ Runtime Permission)

Auto Generate Runtime Permission Code

        Runtime Permission น่าเบื่ออย่างหนึ่งตรงที่ต้องมานั่งเขียนโค้ดเพิ่มเติม ดังนั้นทางทีมพัฒนาก็เลยทำให้สะดวกมากขึ้นด้วยการเพิ่มเมนู Refactor > Convert to Android System Permission  ซึ่งจะทำให้โค้ดที่มี Warning ว่าต้อง Request Permission ด้วย ถูกเพิ่มโค้ดที่ต้องใช้เข้ามาให้โดยอัตโนมัติ (ประทับใจมาก)

        น่าเสียดายว่ายังไม่สามารถใช้งานได้ในตอนนี้ อาจจะต้องรอไปก่อน

Remove Unused Resource

        อีกหนึ่งปัญหาของโปรเจคใหญ่ๆก็คือ Resource ที่ใช้ในแอพจะเยอะมาก โดยเฉพาะพวก String และ Dimension ซึ่งบางครั้งก็จะมี Resource หลายๆตัวที่ไม่ได้ใช้งาน แต่หลงเหลืออยู่ในโค้ด (ซึ่งมันจะรกเกินไป) พอจะเช็คว่า Resource ตัวไหนไม่ได้ถูกเรียกใช้งาน ก็จะต้องมานั่งคลิกเช็คดูทีละตัว ซึ่งไม่ค่อยสนุกเลยสำหรับโปรเจคใหญ่ๆที่มี Resource หลายร้อยหลายพัน

        ดังนั้นบน Android Studio 2.2 จึงเพิ่มเมนู Refactor > Remove Unused Resources เข้ามาเพื่อไล่เช็คโดยอัตโนมัติว่ามี Resource ตัวไหนไม่ได้ถูกเรียกใช้ และสั่งให้ลบทิ้งได้ทันที (เฮ~)

Espresso Test Recorder

        ปกติแล้วการเขียน UI Automate Testing ด้วย Espresso จะมีความน่าเบื่ออย่างหนึ่งคือตอนเขียนเทสที่จะต้องมานั่งบอกว่ากดเลือกที่ View ตัวไหน แล้วเช็คว่าค่าของ View ตัวที่สนใจมีค่าถูกต้องหรือป่าว ซึ่งทั้งหมดนี้ต้องมานั่งระบุ ID ของ View แต่ละตัว

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


        คือมันดีมากอ่ะ ดีโคตรๆเลย จากเดิมที่ต้องนั่งเขียนโค้ดสำหรับ Espresso คราวนี้ก็แค่นั่งคลิกขวากเครื่องไปเลยแล้วให้มันบันทึกเก็บไว้เพื่อสร้างเป็นโค้ดสำหรับใช้ทดสอบได้ และที่สำคัญคือขั้นตอนที่บันทึกไว้สามารถส่งขึ้น Firebase Test Lab เพื่อทดสอบในเครื่องที่ให้บริการในนั้นได้ด้วย (เจ๋งเกินไปแล้วววววววว)

        แต่ตอนนี้ยังใช้งานไม่ได้นะจ๊ะ รอไปก่อน

Layout Inspector

        ในบางครั้ง Preview Layout ก็ช่วยอะไรได้ไม่มากเท่ากับการทดสอบบนเครื่องจริงไปเลย (ถึงแม้ว่าจะมี Blueprint เข้ามาช่วยแล้วก็เถอะ) แต่ถ้าอยากรู้ว่า Layout ที่เปิดอยู่ ณ ตอนนั้นมีการจัดตำแหน่งยังไงก็จะสามารถตรวจสอบได้ยาก อย่างดีก็แค่เปิด Show Layout Bound ใน Developer options ซึ่งเห็นแค่ขอบเขตของ View อยู่ดี

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



        สามารถกดดูที่ View แต่ละตัวได้เลย พร้อมทั้งแสดงค่า Attribute ณ ตอนนั้นด้วย


        ของดีอีกแล้ววววววววว

ปรับปรุงการทำงานของ Instant Run

        เรียกว่าปรับปรุงเพิ่มเติมดีกว่าเพราะไม่ได้มีอะไรเปลี่ยนแปลงไปมากนัก

        AAPT เวลา Build Project ซักตัวเพื่อทำเป็น APK (ไม่ว่าจะ Release หรือ Debug) เจ้า AAPT (Android Asset Packaging Tool) จะคอยทำหน้าที่เรียงลำดับ ID ของ Resource ทุกๆตัว ให้กลายเป็น Resource ID Constant (ที่เราเห็นเป็น R.java น่ะแหละ)

        แต่เวลาที่นักพัฒนาแก้ไขแอพด้วยการเพิ่ม Resource ตัวใหม่เข้าไปหรือลบทิ้งไปก็จะทำให้ AAPT ทำการเรียงลำดับ ID ใหม่ ซึ่งทำให้ Instant Run กลายเป็น Cold Swap ไปในทันที ซึ่งจะใช้เวลานานกว่า Hot Swap

        ดังนั้นจึงใช้วิธีบังคับให้ AAPT ยังคงใช้ ID Constant ค่าเดิมอยู่ เพื่อที่ว่าเวลานักพัฒนาแก้ไข Resource ภายในแอพแล้ว Build โดยใช้ Instant Run จะทำให้กลายเป็น Hot Swap แทนที่จะเป็น Cold Swap ซึ่งจะทำให้การทดสอบแอพทำได้ไวขึ้น ใช้เวลา Build น้อยลง

        Split APK เวลา Build จะมีการแบ่ง DEX ออกเป็น 11 หรือ 12 ไฟล์ด้วยกัน เพื่อที่ว่าเวลาทำ Full Build ก็จะได้ Build แค่เฉพาะโค้ดที่มีการเปลี่ยนแปลงเท่านั้น (แยกย่อย DEX ไฟล์เพื่อที่ว่าเวลาแก้ไขส่วนใดส่วนหนึ่งก็จะ Build เฉพาะ DEX บางไฟล์เท่านั้น)

Enhanced Code Analysis

        เพิ่มความสามารถในการวิเคราะห์โค้ดของ Lint และรองรับโค้ดบน Java 8 ด้วย (Lint ฉลาดขึ้นนั่นเอง)

Improved Jack Tools

        Jack ที่เป็น Android Toolchain ตัวใหม่ที่ทางทีมแอนดรอยด์พัฒนาขึ้นมาเพื่อช่วยลดเวลาในการ Build โค้ดให้กลายเป็น Android dex bytecode ให้น้อยลง ก็ได้มีการปรับปรุงเพิ่มเติมนิดหน่อย

        สามารถใช้งานความสามารถบางอย่างใน Java 8 ได้แล้ว อย่างเช่น Lambda เพื่อนำไปใช้งานบนแอนดรอยด์ทุกเวอร์ชัน และรองรับ Annotation Processor เพื่อให้ Annotation ที่ต้องการทำงานเฉพาะตอน Compile-time เท่านั้น (ไม่ถูกรวมไปอยู่ใน APK)


หมดซักที!!

        เพิ่มมาเยอะมาก เยอะจนไม่เกรงใจคนเขียนบทความอย่างเจ้าของบล็อกเลย!!

        ก็นั่นล่ะครับ สิ่งใหม่ๆที่ถูกเพิ่มเข้ามาใน Android Studio 2.2 บอกเลยว่านักพัฒนาจะสะดวกสบายขึ้นอีกมากเลยล่ะ เหลือแค่ว่าที่ทางทีมพัฒนาตั้งใจไว้จะเสร็จทั้งหมดเมื่อไรเท่านั้นเอง เตรียมตัวรอใช้งานได้เลย

        สำหรับ Android Studio 2.2 ตอนนี้ (ที่เขียนบทความนี้) ยังเป็น Preview อยู่ใน Canary Channel อยู่นะครับ ซึ่งไม่สามารถอัพเดทได้โดยตรงจาก Android Studio เวอร์ชันก่อนหน้า เค้าบังคับให้ไปดาวน์โหลดแยกเอาเองที่ Android Studio Canary Channel โดยสามารถติดตั้งแยกกับตัวเดิมที่ใช้งานอยู่ได้นะครับ ไม่จำเป็นต้องติดตั้งทับของเดิม ซึ่งสามารถเข้าไปอ่านเพิ่มเติมได้ที่ Using Multiple Android Studio Versions

        ผู้ที่หลงเข้ามาอ่านสามารถดูบรรยายหัวข้อ What's new in Android development tools จากงาน Google I/O 2016 ได้ที่ข้างล่างนี้เลยจ้า


        และขอจบการอัพเดทข่าวสารเพียงเท่านี้ครับ


แหล่งข้อมูลอ้างอิง

        • Android Studio 2.2 Preview - New UI Designer & Constraint Layout




เหล่าพันธมิตรแอนดรอยด์

Devahoy Layer Net NuuNeoI The Cheese Factory Somkiat CC Mart Routine Artit-K Arnondora Kamonway Try to be android developer Oatrice Benz Nest Studios Kotchaphan@Medium Jirawatee@Medium Travispea@Medium