10 กรกฎาคม 2557

[Android Dev Tips] มาลองเรียกใช้งาน Android Support Library กันเถอะ


        สำหรับคำว่า Android Support Library นั้น ผู้ที่หลงเข้ามาอ่านหลายๆคนที่ได้เขียนแอปพลิเคชันแอนดรอยด์มาระยะหนึ่งก็คงจะคุ้นหูกันอยู่แล้ว เช่น Android Support v4 หรือ Android Support v7 เป็นต้น ซึ่งบทความนี้ก็จะขอนำผู้ที่หลงเข้ามาอ่านเข้าสู่เบื้องลึก (ลึกมากกว่าเดิมซักสองเซ็นต์) ของ Android Support Library กันว่ามันคืออะไร และมีประโยชน์อย่างไร


        ผู้ที่หลงเข้ามาอ่านคงจะทราบกันดีถึงปัญหาในเรื่อง Fragmentation บนแอนดรอยด์กันอยู่แล้ว เวลาที่มีเวอร์ชันใหม่เพิ่มเข้ามา สิ่งที่ใครๆก็ถามถึงนั่นก็คือ "มันรองรับในเวอร์ชันเก่าหรือป่าว?" แต่ก็เป็นที่รู้ๆกันอยู่แล้วว่า API หรือฟีเจอร์ที่มาใหม่ๆมักจะไม่รองรับเวอร์ชันเก่ากันอยู่แล้ว

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

        แล้วมันเกี่ยวอะไรกับนักพัฒนาอย่างเราๆล่ะ?

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


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

        โดย Android Support Library จะมีการอัปเดตอยู่ตลอดเพื่อเพิ่มความสามารถให้รองรับกับฟีเจอร์บางอย่างที่มาในเวอร์ชันใหม่ โดยแบ่งเวอร์ชันของไลบรารีได้ดังนี้ v4, v7, v8 และ v13 โดยที่เลขเวอร์ชันที่ว่านี้ก็คือ API Level นั่นเอง ( ตัวอย่างเช่น v4 คือ Android 1.6 [API 4] )

        ทีนี้มาดูคร่าวๆกันก่อนว่าไลบรารีที่ว่านี้เป็นอย่างไร โดยสมมติว่าเป็น v4 ละกัน โดย Android Support Library v4 เป็นไลบรารีที่ทำขึ้นมาเพื่อให้โค๊ดบางอย่างรองรับกับอุปกรณ์แอนดรอยด์เวอร์ชันที่สูงกว่า API 4 หรือ Android 1.6 ขึ้นไป เช่น Fragment, Notification Compat, View Pager หรือ Drawer Layout เป็นต้น  ซึ่งความสามารถเหล่านี้ได้เพิ่มเข้ามาบน Android 3.0

        ยกตัวอย่างเช่น Google Play ที่ใช้ Fragment แต่ทว่ายังสามารถรองรับกับเวอร์ชันต่ำกว่า 3.0 ได้ ทั้งๆที่ Fragment ได้เพิ่มเข้ามาให้ใช้งานใน Android 3.0

Google Play 4.8.20 บน Android 2.3.6 Gingerbread

        ผู้ที่หลงเข้ามาอ่านสามารถดูว่า Android Support Library มีของเวอร์ชันอะไรบ้างและแต่ละเวอร์ชันมีคลาสอะไรให้ใช้งานได้บ้าง สามารถศึกษาดูข้อมูลได้ที่ Android Support Library Features


การใช้งาน Android Support Library

        ก่อนอื่นต้องทำการติดตั้ง Android Support Library ใน Android SDK Manager ให้เรียบร้อยเสียก่อน โดยติดตั้งหรืออัปเดตให้เป็นเวอร์ชันล่าสุดซะ


        เมื่อติดตั้งเสร็จแล้ว ไฟล์สำหรับ Android Support Library จะถูกเก็บไว้ที่ ..\sdk\extras\android\support\


        สำหรับการใช้งานในโปรเจคของผู้ที่หลงเข้ามาอ่านจะมีด้วยกันสองวิธีคือ แบบไม่ต้อง Import โปรเจคของ Android Support Library เข้ามาไว้ในโปรแกรม กับอีกวิธีจะ Import โปรเจคมาไว้ในโปรแกรม แล้วกำหนดให้เป็นไลบรารีกับโปรเจคที่ต้องการ ในกรณีที่ Android Support Library มีไฟล์ .jar ก็ให้ใช้วิธีแรกแทน ถ้ามีแต่ Project Source ก็ให้ใช้วิธีที่สอง


        วิธีแรก - ยัดไฟล์ jar ลงไปตรงๆ

        สำหรับวิธีนี้ก็คือการนำไฟล์ .jar ของ Android Support Library ไปไว้ในโฟลเดอร์ libs ของโปรเจค โดยตัวอย่างจะลองเอา Android Support v13 ที่อยู่ใน ..\sdk\extras\android\support\v13 มาใส่ในโปรเจค



        สามารถลากมาใส่ในโฟลเดอร์ libs ของโปรเจคที่หน้าต่าง Project Explorer ได้เลย หรือจะ Ctrl + C แล้ว Ctrl + V ใส่โฟลเดอร์ libs ก็ได้เช่นกัน


        จากนั้นลองทดสอบเรียกใช้คลาสที่อยู่ใน Android Support Library v13 ก็จะพบว่าสามารถประกาศ Import ได้เลย จากนี้ก็สามารถใช้งานได้แล้ว



        วิธีที่สอง - Import โปรเจคเข้ามาไว้ในโปรแกรม

        สำหรับวิธีนี้ก็คือการ Import เข้ามาเป็นไลบรารีโปรเจคนั่นเอง โดยเลือกไปที่ File > Import...


        จากนั้นเลือกเป็น Android > Existing Android Code Into Workspace



        แล้วเลือกโปรเจคของ Android Support Library ที่ต้องการซะ โดยตัวอย่างนี้จะเลือกเป็น Android Support v7 Grid Layout ที่อยู่ใน ..\sdk\extras\android\support\v7\gridlayout-v7 ติ๊กเลือก Copy project into workspace ด้วยก็ดี โฟลเดอร์โปรเจคจะได้มาอยู่ใน Workspace เดียวกันกับโปรเจคหลัก จากนั้นก็กดปุ่ม Finish ได้เลย



        เท่านี้โปรเจคของ Android Support Library ก็เข้ามาอยู่ในโปรแกรมแล้ว



        ทีนี้ก็ไปกำหนดโปรเจคที่ต้องการเรียกใช้ Android Support Library ได้เลย โดยคลิกขวาที่โปรเจคที่ต้องการแล้วเลือก Properties



        ที่หน้าต่าง Properties ฝั่งซ้ายมือให้เลือก Android แล้วฝั่งขวามือให้กดปุ่ม Add.. ที่อยู่ในกรอบ Library



        ให้เลือกโปรเจคของ Android Support Library ที่ต้องการซะ แล้วกดปุ่ม OK ได้เลย



        กด OK เพื่อปิดหน้าต่าง Properties ได้เลย



        ลองประกาศเรียกใช้คลาสของ Grid Layout ดู จะเห็นว่าสามารถประกาศ Import คลาส Grid Layout ที่อยู่ใน Android Support v7 Grid Layout ได้เลย (android.support.v7.widget.GridLayout)
     


        เท่านี้ก็เสร็จเรียบร้อยแล้ววววว~


        สรุป - Android Support Library เป็นไลบรารีที่ทางผู้พัฒนาแอนดรอยด์ได้ทำขึ้นมาเพื่อให้ฟีเจอร์บางอย่างที่เพิ่มเข้ามาในเวอร์ชันใหม่ๆนั้นสามารถรองรับกับเวอร์ชันเก่าๆได้นั่นเอง แต่ทั้งนี้ไม่ได้หมายความว่าทุกฟีเจอร์ในเวอร์ชันใหม่จะมี Android Support Library สำหรับเวอร์ชันเก่านะ ส่วนใหญ่จะเป็นพวก Widget ซะมากกว่า




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

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