08 ธันวาคม 2558

[Android Dev Tips] Rename Package Name ใน Android Studio ให้อยู่รอดปลอดภัย?


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

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

        ยกตัวอย่างเป็นโปรเจคตัวนึงที่เจ้าของบล็อกโหลดมาจากในอินเตอร์เน็ตละกันเนอะ เป็นโปรเจคตัวอย่างของ Remind ในภาพตัวอย่างจะเห็นว่า Package Name เดิมคือ com.remind101.archexample


        เพิ่มเติม แนะนำให้เปิด Project Explorer แบบ Project นะ จะได้ดูสะดวกกว่า

ปัญหาที่เกิดขึ้น

        ก็แค่อยากเปลี่ยน Package Name ครับ เพราะงั้นก็ต้องกด Rename ที่ Package ที่ต้องการเนอะ แต่พอเลือก Refactor > Rename > Rename Directory หรือ Rename Package ก็ตาม มันดันขึ้นแค่ Package ชุดหลังให้แก้ไขเท่านั้น


วิธีที่เจ้าของบล็อกใช้

        ปัญหามันเกิดจาก Android Studio กำหนดให้หน้าต่าง Project Explorer ไปแสดง Package แบบ Compact Empty Middle Package เอาไว้ มันก็เลยแสดง Package เป็นย่อๆไว้ให้



        ซึ่งถ้าลองไปปิดดูก็จะเห็นว่า Package แสดงซ้อนกันเป็นชั้นๆแล้ว



        เพียงเท่านี้ผู้ที่หลงเข้ามาอ่านก็สามารถเข้าไปแก้ไข Package Name ในแต่ละส่วนได้แล้ว โดยคลิกขวาแล้วเลือก Refactor > Rename > Rename Package ได้เลย


        จากตัวอย่างของเจ้าของบล็อก จะต้องแก้ทั้งหมด 2 จุด คือแก้จาก remind101 เป็น remind และแก้จาก archexample เป็น sampleapp

        โดย Android Studio จะมีการเช็คให้ว่าตรงไหนของโปรเจคที่มีผลกระทบบ้าง ก็กด Do Refactor ได้เลย



        หลังจากแก้ไขแล้วจะเห็นว่า androidTest จะแก้ไขให้ด้วยเลย แต่ว่า test จะไม่ได้แก้ไขตามให้ ก็ให้ไป Rename Directory เอาเอง



        แก้ไขใน build.gradle ด้วย เพราะไม่งั้นหลังจาก Build ออกมาแล้วมันจะยังเป็นของเก่าอยู่


        เมื่อเสร็จแล้วก็ลอง Sync Gradle ใหม่ดู เพื่อให้มัน Build จนเสร็จ เพียงเท่านี้โปรเจคแอนดรอยด์ของผู้ที่หลงเข้ามาอ่านก็เปลี่ยนเป็น Package Name อันใหม่แล้วจ้า




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

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