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

แนะนำให้เปิด 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
ได้เลย

โดย Android Studio จะไล่เช็คในโปรเจคให้ว่ามีตรงจุดไหนที่จะต้องถูกเปลี่ยนชื่อบ้าง เพื่อให้นักพัฒนาสามารถตรวจสอบให้แน่นอนก่อน หรือถ้าไม่ติดปัญหาอะไรก็จะเปลี่ยนชื่อให้ทันที
และเมื่อชื่อถูกเปลี่ยนแล้ว ก็จะเห็นว่าแม้กระทั่งใน androidTest
และใน test
ก็ถูกเปลี่ยนตามด้วยเช่นกัน

แต่อย่าลืมแก้ไข Application ID ใน build.gradle
ด้วย เพราะตรงนี้จะไม่ถูกเปลี่ยนให้โดยอัตโนมัติ จึงทำให้ Gradle ยัง Build ออกมาเป็น Package Name เดิมอยู่

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