02 มิถุนายน 2558

[Android Dev Tips] ปัญหา aidl is missing บน Android Studio



        สำหรับปัญหานี้เป็นปัญหาที่เกิดขึ้นหลังจากที่ Build Project หรือ Build Gradle แล้วเกิดปัญหาว่า aidl is missing ทำให้ไม่สามารถ Build Project ได้ ซึ่งปัญหานี้ก็ไม่ใช่อะไรนอกไปจากการเปิดตัว Android M Developer Preview นั่นเอง

        เพราะว่า Android M Developer Preview นั้นเปิดตัวขึ้นมาเพื่อให้นักพัฒนาทดสอบการทำงานของเวอร์ชันใหม่นี้ก่อน จึงยังไม่ได้ปล่อยให้ผู้ใช้ทั่วไปได้ใช้งาน ดังนั้นใน Android SDK ก็จะปล่อยมาในรูปของเวอร์ชัน Android M Preview เพื่อให้สามารถติดตั้งแยกจากเวอร์ชันหลักได้


        ซึ่งปัญหาคือถ้าติดตั้ง Android M Preview ไว้ แล้วสร้างโปรเจคใดๆขึ้นมาก็ตาม เจ้า Build Tools จะถูกกำหนดให้ใช้งานของ Android M Preview โดยอัตโนมัติ โดยดูได้จากไฟล์ build.gradle ของโมดูลหลัก


        จะเห็นว่า buildToolsVersion ถูกกำหนดเป็น 23.0.0 rc1 ที่เป็นของ Android M Preview

        แต่ทว่าเจ้า Android M Preview ยังไม่ได้ปล่อยให้ใช้งานจริง ดังนั้น Build Tools ของ Android M Preview ก็ไม่สามารถใช้กับเวอร์ชันอื่นๆได้เช่นกัน จึงทำให้เกิดปัญหา aidl is missing


        ดังนั้นวิธีแก้ปัญหาจึงง่ายนิดเดียว นั่นก็คือแก้ Build Tools ให้ใช้เวอร์ชันทั่วไปซะ โดยดูจากโฟลเดอร์ Tools ที่อยู่ใน Android SDK Manager ว่าได้ติดตั้งเวอร์ชันอะไรไว้


        จากนั้นก็มาแก้ไขใน build.gradle ก่อนหน้านี้ให้เป็นเวอร์ชันปกติที่ไม่ใช่ของตัว Preview ซะ


        แล้วลอง Build Project หรือ Build Gradle ดูใหม่ก็จะผ่านฉลุยแล้ว

        หรือถ้าอยากแก้ง่ายๆไม่ต้องไปนั่งใส่ตัวเลขเอง ก็ให้เลือกไปที่ File > Project Structure...



        หน้าต่าง Project Structure ให้กดเลือกที่โมดูลหลักที่ช่องซ้ายมือ (ภาพตัวอย่างคือ app) แล้วที่ช่องขวามือเลือกแถบ Properties แล้วกดเลือกที่ Build Tools Version จะมีเวอร์ชันต่างๆที่ได้ติดตั้งไว้ในเครื่องให้เลือก ก็เลือกอันที่ไม่ใช่ของ Android M Preview แล้วกดปุ่ม OK ก็เป็นอันเสร็จ


        แล้วโปรแกรมก็จะไปแก้ไขตัวเลขใน build.gradle ให้อัตโนมัติ




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

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