AndroidX คืออะไร และเราควรเปลี่ยนไปใช้ไหม?
Tags: android
Published: 2019-09-13 07:27:01

---
title: AndroidX คืออะไร และเราควรเปลี่ยนไปใช้ไหม?
published: true
tags: android
canonical_url: https://medium.com/@karunratkhakhom/androidx-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3-%E0%B9%81%E0%B8%A5%E0%B8%B0%E0%B9%80%E0%B8%A3%E0%B8%B2%E0%B8%84%E0%B8%A7%E0%B8%A3%E0%B9%80%E0%B8%9B%E0%B8%A5%E0%B8%B5%E0%B9%88%E0%B8%A2%E0%B8%99%E0%B9%84%E0%B8%9B%E0%B9%83%E0%B8%8A%E0%B9%89%E0%B9%84%E0%B8%AB%E0%B8%A1-21c228a0ee2
---

อย่างที่เรารู้กันว่า Android Support Library นั้นจะมีตัวอัปเดตมาเรื่อยๆตาม SDK version และมีออกมาเพื่อแก้บัคต่างๆ เหมือนกับที่แอปของเราก็ต้องมีตัวอัปเดตเวลาเรามี Feature ใหม่ๆ หรือมีการแก้บัค ฉะนั้นเราจึงควรใช้ Support Library ใหม่ๆอยู่เสมอ (หากว่ามันไม่มีบัค) แต่ปัญหามันอยู่ที่ว่า…

```
The stable release of 28.0.0 will be the final feature release packaged
as android.support. All subsequent feature releases will only be made
available as androidx-packaged artifacts.
```

ตัว Android Support Library จะมีแค่ version 28.0.0 เป็น version สุดท้าย และอัปเดตหลังจากนั้นจะไปอยู่ใน package AndroidX ทั้งหมด ดังนั้นเราจะมาทำความรู้จักเกี่ยวกับ AndroidX เพื่อช่วยตัดสินใจว่าเราควรเปลี่ยนมาใช้ AndroidX กันหรือยัง

AndroidX เป็นส่วนหนึ่งของ [Android Jetpack](https://developer.android.com/jetpack/) จาก Google ที่จะทำให้เราพัฒนา Application Android ได้ดียิ่งขึ้น ซึ่งความเจ๋งของมันมีอะไรบ้างนั้น ท่านผู้อ่านสามารถตามไปดูได้ในลิงค์นี้

[Android Jetpack](https://developer.android.com/jetpack/)

โดยตัว AndroidX ถูกพัฒนาขึ้นมาเนื่องจากทางผู้พัฒนา อยากแยกให้ package name ที่ขึ้นต้นด้วย android.\* นั้นมีแค่ Component ที่มาจากตัว Android OS เอง ส่วนพวกที่เป็น Android Support Library ทางผู้พัฒนาจะแยกออกมาเป็นตัว AndroidX และข้อดีของการที่แยกออกมาอีกอย่างนึงคือเราไม่ต้องกังวลกับการเลือก version ของ Support Library v4, v7 ... อีกต่อไป หมดปัญหาปวดหัวไปอีกหนึ่ง

สำหรับผู้อ่านท่านไหนที่ต้องการจะย้ายไปใช้ AndroidX

สิ่งสำคัญที่ต้องมีคือ

1. Android Studio version 3.2 ขึ้นไป
2. compileSdkVersion 28 (android 9.0) ขึ้นไป
3. Gradle Plugin version 3.2.0 (com.android.tools.build:gradle:3.2.0) ขึ้นไป

วิธีการก็ง่ายแสนง่าย เพียงผู้อ่านเปิดโปรเจ็คที่ต้องการย้ายขึ้นมาใน Android Studio จากนั้นบน Toolbars ให้เลือก

```
Refactor -> Migrate to AndroidX...
```

![](https://cdn-images-1.medium.com/max/283/1*6HtHrFw1O9_TZKmboZYkfw.png)<figcaption>วิธีการ Migrate to AndroidX</figcaption>

เพียงเท่านี้เจ้าตัว Android Studio ของเราก็จะทำการ Migrate Code ของเราให้กลายเป็น AndroidX ให้อย่างสวยงาม

สำหรับผู้อ่านท่านไหนที่กลัวว่า แล้ว Library ต่างๆที่เรา import มาใช้แล้ว code เหล่านั้นยังไม่ได้เป็น AndroidX แล้วโปรเจ็คเราจะไม่พังหรือ บอกได้เลยว่าไม่ต้องกลัวครับ ทางผู้พัฒนาเค้าคิดคำนวณเอาไว้หมดแล้ว โดยถ้าเราเข้าไปดูในไฟล์

```
gradle.properties
```

จะพบว่ามี Property ใหม่เพิ่มขึ้นมา 2 ตัวด้วยกัน คือ

{% gist https://gist.github.com/Kondeelov/169954caf1118507f08b23611c048142.js %}

ซึ่ง android.useAndroidX=true น้ันก็ตรงตัวเลยครับ

ส่วน android.enableJetifier=true ตัวนี้ Jetifier คือพระเอกของเราเลย โดยมันจะทำการ convert code ของเราตอน build time ให้กลายเป็น AndroidX ครับ เพราะฉะนั้น Library ต่างๆที่เรามีอยู่ก็จะใช้ได้ตามปรกติครับ หายห่วง

โดยสำหรับส่วนตัวผมที่ได้ใช้ดูแล้วก็ไม่มีปัญหาอะไรนะครับ แอปทำงานได้ตามปรกติเลยครับ

จบแล้วครับสำหรับบทความนี้ หวังว่าบทความนี้จะช่วยให้คำตอบท่านผู้อ่านที่ยังไม่มั่นใจว่าจะเปลี่ยนเป็น AndroidX เลยดีหรือไม่ ได้บ้างไม่มากก็น้อยนะครับ ^ ^

ขอขอบคุณ แหล่งอ้างอิง

- [https://developer.android.com/jetpack/androidx/](https://developer.android.com/jetpack/androidx/)
- [https://developer.android.com/jetpack/androidx/migrate](https://developer.android.com/jetpack/androidx/migrate)
- [https://stackoverflow.com/a/52517772/9019909](https://stackoverflow.com/a/52517772/9019909)
- [https://stackoverflow.com/a/52518822/397807](https://stackoverflow.com/a/52518822/397807)