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

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

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

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

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

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

จากนั้นให้เลือก Module เป็นแบบ Import .JAR/.AAR Package

แล้วทำการเลือกไฟล์ AAR และกำหนดชื่อ Module (มักจะอิงจากชื่อไฟล์) ให้เรียบร้อย

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

แต่อย่าลืมเพิ่ม Module เข้าไปใน Dependency ของ Module หลักด้วยนะ ซึ่งจะมีรูปแบบคำสั่งแตกต่างจาก Remote Dependency เล็กน้อย

// 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 เอง

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