คำเคือน
ปกติเราไม่ควร แชร์ keystore หรือ SHA-1 key ไปบน git สาธารณะ วิธีนี้เป็นทางเลือกหนึ่งในการลดความวุ่นวายกรณีต้องใช้โปรเจคเดียวกันในหลายๆ เครื่อง และตัวโปรเจค Android ผูกเข้ากับบริการต่างๆ นะ
โดยปกติการพัฒนาแอพ Android จะมีการสร้างไฟล์ debug.keystore ขึ้นมาอัตโนมัติเพื่อใช้ในการทดสอบตัวแอพพลิเคชั่น โดยตัวไฟล์นี้ จะอยู่ในโฟลเดอร์ .android ของเครื่องของเรา เช่น
- Windows: C:\Users\Teerasej\.android\debug.keystore
- MacOS: ~/.android/debug.keystore
ซึ่งการสร้างขึ้นให้อัตโนมัตินี้เอง ทำให้ key ในแต่ละเครื่องไม่เหมือนกัน ทำให้เวลาเราเอา SHA-1 key นี้ ไปผูกกับบริการต่างๆ เช่น Firebase
และเพราะ key ถูกสร้างขึ้นใหม่ตลอด ทำให้ SHA key ไม่ตรงกับที่เอาไปเพิ่มไว้ใน Firebase นี่แหละ ทำให้มีความวุ่นวายมากเวลาเกิดการ build ทดสอบในแต่ละเครื่อง
เรามาลองแก้ปัญหาชวนปวดหัวนี้ ด้วยโดยการแชร์ debug.keystore ไปใน git repository
อย่าลืมว่านี่เป็นหนึ่งในวิธีแก้ไขปัญหาเบื้องต้น และไม่ควรเอาไปใช้กับ public repository หรือว่าแชร์ keystore ที่ใช้ release นะ นะ นะ
1. คัดลอก debug.keystore มาไว้ในโปรเจค android
จากที่อยู่ของไฟล์ debug.keystore ที่พูดถึงด้านบน ให้ทำการ copy เอามาไว้ในโปรเจค android
เช่น ของพลจะไว้ที่อยู่เดียวกันกับไฟล์ android/app/build.gradle เพื่อให้การอ้างอิงถึงที่อยู่ไฟล์ไม่ซับซ้อนเกินไป แต่ก็สามารถเปลี่ยนที่ได้ตามความต้องการ
ไฟล์ debug.keystore ก็จะอยู่ตามด้านล่าง
android/app/keystore/debug.keystore
จากนั้นให้เปิดไฟล์ android/app/build.gradle และทำการเพิ่ม config ลงไปในส่วน android ดังตัวอย่างด้านล่าง
android {
...
signingConfigs {
debug {
storeFile file('keystore/debug.keystore')
}
}
buildTypes {
release {
signingConfig signingConfigs.debug
}
}
}
บันทึกไฟล์
2. แก้ไขไฟล์ .gitignore
จากนั้นไปแก้ไฟล์ android/.gitignore เพื่อให้สามารถ push ไฟล์ keystore ขึ้นไปที่ git repository ได้ (ปกติในไฟล์ .gitignore จะกันไม่ให้ทำส่วนนี้)
หาบรรทัดที่เขียนว่า
**/*.keystore
แก้ไขเป็น
# **/*.keystore
จากนั้นบันทึกไฟล์ เท่านี้เราก็สามารถเอา debug.keystore ขึ้น git repository ได้แล้ว