Debug Certificate expired Error ?????
หวัดดีครับเพื่อน ๆ นักพัฒนาทั้งหลาย ช่วงนี้มีโอกาสได้ทำงานที่ต้องใช้ andriod นิสหน่อย ก็เลยเก็บประสบการณ์เอามาเล่าเผื่อว่า
จะเป็นประโยชน์ไม่มากก็น้อย แด่เพื่อน ๆ นักพัฒนาทั้งหลาย เรื่องนี้มันก็เกี่ยวกับ Error ที่น่าปวดหัวสำหรับนักพัฒนามือใหม่หัดขับ ที่อยากเริ่มต้นพัฒนาโปรแกรม ด้วย Andriod นะครับในส่วนของการ ติดตั้งนั้นผมก็คงไม่ต้องพูดถึงนะครับ มีให้ดูมากมายใน Net ทั้งที่เป็น ภาษาไทยและภาษาอังกฤษ แต่ที่ผมจะเอามาแบ่งปันก็เห็นจะเป็นเรื่อง Error ที่ จั่วหัวไว้นี่แหละครับ
มาดูปัญหาเริ่มแรกกันก่อนนะครับ คือว่า การสร้างโปรแกรมด้วย Andriod นั้นจะต้องมีการ ลงทะเบียน certificate ของผู้ใช้งาน หรือผู้พัฒนาโปรแกรม เพื่อให้สามารถตรวจสอบที่มาที่ไปของโปรแกรมได้นั่นเอง ปัญหาก็คือในบางครั้งหลังจากติดตั้ง Andriod SDK แล้ว (ผมใช้กับ eclipse นะครับ) สมมติว่า สมบูรณ์แล้ว เราก็เริ่มที่จะเขียน ทดสด 1 โปรแกรม สั้น ๆ ยอดฮิต “helloWorld” หลังจากนั้น ก็ทำการ compile และ run ครับ (อย่าลืม Setup emulator นะครับ) ปรากฎว่า ได้ข้อความที่แสดงข้อผิดพลาดออกมา ประมาณว่า ” Error generating final archive: Debug certificate expired on ……. Unknown Android Packaging Problem ”
ครับ อืมเวรละซิ
เอา Error message ค้น google ดู ครับ โห ออก มามากมาย ซึ่งสามารถแก้ไขได้ดังนี้
– ให้ลบ debug.keystore ออก ซึ่งอยู่ใน (c:\users\[username]\.andriod\ – windows7 นะคราบบบ) ออกไป เดี๊ยว sdk จะสร้างให้ใหม่
– แล้ว ทำการ clean ใน project ที่กำลังทำงานอยู่ แล้วลอง Run ใหม่ ( หลายท่านทำแค่นี้จบครับ ทำงานได้เลย แต่ของกระผมไม่จบ )
ทำไม ?????
หาต่อ อีก หลายที่ให้ คำแนะนำมาว่า เอางี้ ถ้า วิธีนั้นไม่ work ลองวิธีนีดู ให้สร้าง debug.keystore ( แม่งเองเลยดิ ) ทำไง หล่ะ
ก็ command line เลยครับ ใช้ตามนี้เลยนะครับ
C:\Users\teerapong\.android>keytool -genkey -keypass android -keystore debug.key store -alias androiddebugkey -storepass android -validity 1000 -dname “CN=Androi d Debug,O=Android,C=US”
[ในกรณีนี้ผม แอบไป add ตัวแปร path ชี้ไปที่ C:\Program Files\Java\jre6\bin ไว้แล้วเน่อ คิดว่าหลายท่านคงทราบนะครับ เพราะคำสั่ง keytool มานเป็น ของ jre]
ก่อน run ก็ให้ลบของเดิมออกก่อนนะครับ ในขั้นตอนแรก นั่นแหละครับ หลังจากนั้นจึง run คำสั่ง จบ ไหม NO !!!!
โอย อะไร กันหล่ะนี้ หาไปอีกหลายที่ เขาก็บอกกันแค่นี้ ครับ ไปต่อไม่ได้เลย ผมล่วงไป อย่างน้อย 50 เส้น
กลับไปอ่าน online document ใหม่อีกรอบ หนึ่งปรากฏว่า เขาก็บอกไว้ครับ ว่าหากทำจนครบแล้วมันไม่ work ให้มาดู อีกที่หนึ่ง สิว่า เครื่องที่ท่านพัฒนาอยู่ นั้น calendar เป็น Gregorian หรือป่าว ถ้าไม่เป็น debug.keystore สร้างให้ตายไงก็ Expired ครับ –> เหรอ !!!!!!
เขาก็แนะว่า ให้ท่านเปลี่ยน ให้เป็น Gregorion calendar แล้วก็ สร้าง debug.keystore แล้ว ก็ใช้ได้เลย หลังจากนั้นก็เปลี่ยนกลับมาเป็น none-Gregorion date ก็จบ จบจริงครับ โล่งไป ฮะ ฮะ ยังมีหลายท่านสงสัยว่า แล้ว ไอ้ Gregorion calendar ยังไง (ผมเองก็ไม่รู้ว่ายังไง เขาแนะต่อว่า ให้ไปเปลี่ยน ใน Reginal and language ให้เป็น Us เป็นต้น ก่อนแล้วก็ทำ key แล้วเอา key มาใช้แล้วเปลี่ยนกลับ จบครับ หลังจากนี้ ก็ จบปัญหา ครับ
หวังว่ามันจะเป็นประโยชน์ไม่มากก็น้อย สำหรับเพื่อน ๆ นักพัฒนาทั้งหลาย ขอให้สนุกกับการเขียนโปรแกรม นะครับ
s_teerapong2000@yahoo.com
s.teerapong@gmail.com