บ่อยครั้งที่การพัฒนาแอปแอนดรอยด์ก็ต้องพึ่งพาไลบรารีต่างๆมากมาย แต่บางครั้งก็อาจจะต้องใช้ไลบรารีที่เป็นไฟล์ AAR มาใช้ในโปรเจค

ถ้าอยากรู้ว่าไฟล์ AAR คือไฟล์อะไร สามารถอ่านได้ที่ ไฟล์ AAR คืออะไร และแตกต่างอย่างไรกับ JAR ก่อนได้นะ

ไฟล์ AAR คืออะไร และแตกต่างอย่างไรกับ JAR
หลังจากที่ Android Studio ปล่อยออกมาให้ใช้งาน อาจจะมีผู้ที่หลงเข้ามาอ่านบางท่านสังเกตเห็นไฟล์ที่มีนามสกุลเป็น .aar (Android ARchive) กันอยู่บ้าง ซึ่งไฟล์ดังกล่าวนี้ก็เป็นไฟล์ไลบรารีแบบเดียวกับ .jar

ไลบรารีส่วนใหญ่ในยุคนี้มักจะอยู่บน Remote Repository อย่าง Google Maven หรือ Maven Central กันหมดแล้ว แต่ในบางครั้งก็อาจจะมีไลบรารีบางตัวก็อาจจะต้องใช้เป็นไฟล์ AAR เพราะว่าไม่ได้ Publish ขึ้น Remote Repository อาจจะด้วยเหตุผลบางอย่าง

ซึ่ง Android Studio ก็สามารถนำไฟล์ AAR เหล่านี้มาเรียกใช้งานในโปรเจคได้แบบง่ายๆเลยนะ

การเพิ่มไฟล์ AAR เข้ามาในโปรเจคแอนดรอยด์

ในบทความนี้จะใช้วิธีการเพิ่มไฟล์ AAR มาใช้งานในโปรเจคด้วยการสร้างเป็น Module Dependency โดยเลือกไปที่ File > New > New Module... หรือจะคลิกขวาที่ Project แล้วเลือก New > Module ก็ได้เช่นกัน

จากนั้นให้เลือก Module เป็นแบบ Android Library แล้วกำหนด Module Name ตามต้องการ ส่วน Package Name จะตั้งชื่ออะไรก็ได้ เพราะเดี๋ยวเราจะลบออกในภายหลัง เนื่องจากไม่ได้ใช้ เพราะ Package Name ของจริงจะถูกกำหนดไว้ในไฟล์ AAR อยู่แล้ว

จากนั้นให้รอซักครู่เพื่อรอให้ Android Studio สร้าง Module ขึ้นมาจากนั้นให้ลบไฟล์ข้างในนั้นให้หมดจนเหลือแค่ไฟล์ build.gradle แล้วเพิ่มไฟล์​ AAR เข้าไปใน Module นั้น ๆ ได้เลย

จากนั้นให้เปิด build.gradle ขึ้นมาเพื่อแก้ไขให้เรียกใช้งาน Source Code จากไฟล์ AAR แทน โดยลบโค้ดทั้งหมดที่อยู่ข้างในนั้นแล้วเพิ่มคำสั่งใหม่เข้าไปดังนี้

// build.gradle
configurations.maybeCreate("default")
artifacts.add("default", file('your_file.aar'))
ชื่อของไฟล์ AAR จะขึ้นอยู่กับชื่อไฟล์ที่ใส่ไว้ใน Module

เมื่อเสร็จแล้วให้ Build Gradle เพื่อให้ Module ด้ังกล่าวพร้อมใช้งานก็เป็นอันเสร็จ

เมื่อ Module พร้อมใช้งานแล้ว ก็ให้เพิ่ม Module นั้น ๆ เข้าไปเป็น Dependency ของ Module ที่ต้องการเรียกใช้งานด้วยนะ

// build.gradle (Module: app)
dependencies {
    ...
    implementation project(path: ':google-direction')
}

จากนั้นก็ Build Gradle อีกหนึ่งครั้งก็เป็นอันเรียบร้อย สามารถเรียกใช้คำสั่งต่างๆที่อยู่ในไลบรารีได้เลย

ไฟล์ AAR จะมีแค่โค้ดของโปรเจคเท่านั้น

ในกรณีที่ไลบรารีดังกล่าวมีการใช้ไลบรารีและเรียกผ่าน Remote Dependency จะไม่ได้ถูกรวมไว้ในไฟล์ AAR ดังนั้นนักพัฒนาจะต้องทำการเพิ่ม Dependency ที่ไลบรารีตัวนั้นใช้ลงไปในโปรเจคของตัวเองด้วย

ซึ่งเป็นข้อจำกัดอย่างหนึ่งของใช้ไลบรารีแบบ Module Dependency ที่อยู่ในรูปของไฟล์ AAR ซึ่งจะต่างจาก Remote Dependency ที่นอกจากจะมีไฟล์ AAR ก็จะมีไฟล์อื่นๆด้วย รวมไปถึงไฟล์ POM ที่เก็บข้อมูลของ Dependency ที่ไลบรารีนั้นๆใช้ และเวลา Android Studio เรียกใช้งานก็จะดาวน์โหลด Dependency ที่อยู่ในไฟล์ POM มาให้โดยอัตโนมัติด้วย

ซึ่งนักพัฒนาที่ปล่อยไลบรารีในรูปแบบของไฟล์ AAR ก็จะรู้ข้อจำกัดนี้ และใส่รายละเอียดไว้ให้ใน Document ว่าไลบรารีดังกล่าวต้องใช้ Dependency อะไรบ้าง เพื่อให้นักพัฒนาที่นำไลบรารีไปใช้สามารถเพิ่ม Dependency เหล่านั้นไว้ในโปรเจคได้เลย

และถ้าผู้ที่หลงเข้ามาอ่านที่พัฒนาไลบรารีเป็นไฟล์ AAR ก็อย่าลืมทำแบบนี้ด้วยล่ะ

ลุยกับงานต่อได้เลย!!

ถึงแม้ว่าการเรียกใช้งานไลบรารีในรูปแบบของ Remote Dependency จะสะดวกและเรียกใช้งานง่ายก็จริง แต่บางครั้งก็อาจจะมีไลบรารีบางตัวที่เป็นใช้งานแบบ Private จึงไม่ได้อัปโหลดไลบรารีไว้ใน Remote Dependency และทำเป็นไฟล์ AAR แทน ทำให้นักพัฒนาที่จะใช้ไลบรารีนั้นๆต้องนำมาใส่ไว้ในโปรเจคแบบ Module Dependency เอง

จากที่เจ้าของบล็อกเคยเจอ ก็มีหลายตัวอยู่เหมือนกันนะที่ทำแบบนี้ และจำเป็นต้องใช้จริงๆแหละ