16 ธันวาคม 2557

[Android Dev Tips] Android Studio นั้นลงยากและชอบมีปัญหาจริงๆหรือ?



        ช่วงนี้อาจจะมีบทความเกี่ยวกับ Android Studio ออกมาเรื่อยๆหน่อยนะครับ เนื่องจากเป็นช่วงรอยต่อที่จะย้ายจาก Eclipse ADT ไปยัง Android Studio ซึ่งเจ้าของบล็อกได้ยิน Feedback เกี่ยวกับ Android Studio ว่าใช้ยาก มีปัญหาเยอะ  แต่ในขณะเดียวกันก็มีอีกกลุ่มที่ไม่มีปัญหาอะไรกับการย้าย Android Studio ก็สามารถใช้งานได้ปกติ แต่อาจจะต้องใช้เวลาทำความเข้าใจ (ซึ่งเจ้าของบล็อกก็ใช้งานได้ปกติสุขเช่นกัน)

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

        รายหนึ่งที่เจ้าของบล็อกเจอก็คือ Gradle ถึงกับทำงานไม่ได้เลยทีเดียว ซึ่งรู้กันอยู่แล้วว่า Gradle เป็นส่วนหลักของ Android Studio เพราะงั้นถ้าเกิดปัญหาขึ้นมาก็ไม่ต้อง Build อะไรกันเลย


        แถมปัญหาที่เกิดขึ้นเป็นแบบ "ระบุสาเหตุไม่ได้" ซึ่งเจ้าของบล็อกก็พึ่งเคยเจอเช่นกัน จึงเข้าใจว่ามีปัญหาที่การตั้งค่าใน Gradle เพราะ Path ของ Gradle ที่กำหนดใน Android Studio นั้นไม่ตรง ลองเปิดโฟลเดอร์เช็คดูก็พบว่าไม่มีโฟลเดอร์ตามที่กำหนดไว้


        พอลองกำหนดให้ตรงแล้วก็พบว่าสามารถ Build Gradle ได้ตามปกติ จึงคิดว่าเสร็จเรียบร้อยแล้ว

        แต่ปัญหายังไม่จบ

        เพราะว่าเมื่อติดตั้งแอพฯลงเครื่องก็เจอปัญหาอยู่ดี เพราะ Gradle ดันหา Local path ไม่เจอซะงั้น



        พอเช็คไปเช็คมาก็เริ่มสงสัยว่าเป็นที่ Gradle จริงๆหรือ? จนลองเปิด Android SDK Manager ขึ้นมา

        ก็พบว่า Android SDK Manager เปิดไม่ติด...

        จนถึงจุดนี้ก็เริ่มสงสัยว่าทำไมถึงเปิดไม่ติด กำหนด Path ก็ถูกต้อง จึงลองไปเปิด DDMS เพื่อทดสอบดู ก็พบว่าเปิดไม่ขึ้นเหมือนกัน มีหน้าต่าง Command Prompt โผล่ขึ้นมาแว่บนึงแล้วก็หายไปเลย

        เจ้าของบล็อกก็ลองใส่คำสั่งแทรกเข้าไปเพื่อเช็คการทำงานก็พบว่าไม่มีผล เพราะหน้าต่าง Command Prompt ปิดตัวลง ก่อนที่คำสั่งจะทำงานด้วยซ้ำ จึงรับรู้ได้ทันทีว่า "เครื่องนี้นี่แหละที่ไม่ปกติ" เพราะ ddms.bat ที่อยู่ใน Android SDK นั้นเปิดไม่ติด

        จึงลองแก้ปัญหาด้วยการลบค่า System Environment ของ JDK ออก แล้วก็ Uninstall JDK และ JRE ที่มีไว้ออกให้หมด แล้ว Restart เครื่องหนึ่งที จากนั้นก็โหลด JDK ตัวใหม่มาลง (JDK 7 Update 71)

        ก็พบว่า Android Studio ทำงานได้ปกติ Android SDK ก็เปิดได้ และ DDMS ก็เปิดได้เช่นกัน

        ปัญหานี้จึงเคลียร์ไปอย่างเงิบๆ



        แต่มีอีกรายหนึ่งที่น่าสนใจยิ่งกว่า เพราะว่า Android SDK อัพเดทไม่ได้ ถ้าอัพเดทแล้วไฟล์จะหายไป ต้องโหลดมาลงใหม่

        เมื่อลองเข้าไปช่วยดูก็จัดการอัพเดท Android SDK ในบัดดล และสิ่งที่พบก็คือ


        ซึ่งเป็นปัญหาปกติที่ Android SDK ถูกเรียกใช้งานอยู่จึงทำให้อัพเดทของใหม่มาแทนของเก่าไม่ได้ จึงโหลด Unlocker มาลงแล้ว Unlock Process ทั้งหลายแหล่ที่เรียกใช้งานอยู่

        และเมื่อโหลด Unlocker มาแล้วจะกดลงก็พบว่าไม่มีหน้าต่าง Setup ขึ้นมา แล้วเจ้าของเครื่องก็เปิด Command Prompt แล้ว Path ไปที่ไฟล์ดังกล่าวเพื่อเปิดหน้า Setup ขึ้นมา (เฮ้ย แบบนี้มันไม่เรียกว่าปกติแล้วสิ) เมื่อลงเสร็จแล้วจะทำการ Unlock ก็เห็นว่ามี Process ของ Java เยอะมากเกือบสิบตัว (ไม่ได้แคปภาพมา) ที่ต้อง Unlock

        ถึงกระนั้นก็ยังไม่ได้สนใจอะไร เพราะลองอัพเดทอยู่ แต่ก็มาพบต่อว่าถึงแม้จะ Unlock Process ที่เกี่ยวข้องออกไปจนหมดแล้วการอัพเดทก็ไม่คืบหน้าแต่อย่างใด จนสุดท้ายเกิดปัญหาไฟล์ใน Android SDK หาย

        ดังนั้นเจ้าของบล็อกจึงตัดปัญหาทิ้งง่ายๆเลย นั่นก็คือ "โหลดใหม่เลย" เพื่อตัดปัญหาทิ้งไป เนื่องจากไม่ใช่ไฟล์ที่ต้องเก็บไว้ ทำให้การลบทิ้งแล้วโหลดใหม่ง่ายกว่า และที่สำคัญเจ้าของบล็อกย้ายไฟล์ไปเก็บไว้ที่ Drive D แทน เพราะว่าใน Windows เวอร์ชันหลังๆมานี้จะมีเรื่อง Security ที่จะคอยกันไม่ให้ไฟล์ใน Drive C ถูกแก้ไขง่ายๆ จึงเป็นสาเหตุว่าทำไมเจ้าของบล็อกมักจะแนะนำให้ลง Android SDK หรือ Workspace ไว้ใน Drive D

        แต่ระหว่างที่โหลด Android SDK เสร็จแล้ว และทำการย้ายลง Drive D นั้นก็พบว่า มีการขอ Permission จาก Administrator เพื่อย้ายไฟล์ไว้ใน Drive D

        Drive D ถือว่าเป็น Drive รองที่ไม่ได้เกี่ยวกับ System อยู่แล้วจึงไม่น่าจะมีเรื่อง Security เข้ามาเกี่ยวข้อง แต่ก็เหลือบไปเห็นโฟลเดอร์ Program Files, Program Files (x86) และ Users ที่ควรจะอยู่ใน Drive C ซึ่งไปเช็คใน Drive C แล้วก็พบว่ามีเหมือนกันแต่ไฟล์คนละชุดกัน จึงเข้าใจว่า Drive D เคยใช้เป็น Drive C มาก่อนแล้วตอนไม่ใช้งานก็ถอดออกมาใช้เป็น Drive รองแทน แต่ยกมาทั้งลูกไม่ได้ Format เพื่อเคลียร์ข้อมูล

        เมื่อย้าย Android SDK เรียบร้อยแล้ว กำหนด Path ของ Android SDK ให้กับ Android Studio ใหม่ แล้วเปิด Android Studio ขึ้นมา พอลองกดเปิด Android SDK Manager ขึ้นมาก็พบว่าไม่ติดซะงั้น

        จึงใช้วิธีเดิม เคลียร์ JDK ทิ้งให้หมดเสียก่อนแล้วลงใหม่ และระหว่างจะลบทิ้งก็พบว่าลงไว้หลายตัวเลย


        ก็เลยเคลียร์ทิ้งรวมไปถึงที่กำหนดไว้ใน System Environment ด้วย แล้ว Restart รอบนึงก่อนจะติดตั้งตัวใหม่ลงไป (Step เดิมเลย)

        เมื่อจัดการเสร็จแล้วก็ลองเปิด Android Studio ขึ้นมา ก็ยังเจอปัญหาต่อ


        มี DLL หายทั้งๆที่ในเครื่องลง Microsoft Visual C++ Redistributable แล้ว ก็ต้องไปโหลดมาลงใหม่ถึงจะเปิด Android Studio ได้ ซึ่งในความเป็นจริง ตอนลง Android Studio ถ้าไม่มีการติดตั้ง Microsoft Visual C++ Redistributable ก็จะมีการติดตั้งให้ในทันที

        และเมื่อจัดการเรียบร้อยก็สามารถเปิด Android SDK Manager ได้ปกติ และลองอัพเดทดูก็พบว่าอัพเดทผ่านฉลุย~



        และเมื่อช่วยผู้ที่หลงเข้ามาอ่านคนอื่นแก้ปัญหาก็พบว่าปัญหาคล้ายๆกัน นั่นก็คือ "ไม่เข้าใจในตัว Android Studio"

        • การติดตั้ง JDK ทางที่ดีก็ควรติดตั้งแค่ตัวเดียว (JDK และ JRE ที่มาคู่กัน) เพราะยังไงมันก็ขึ้นอยู่กับที่กำหนดไว้ใน System Environment อยู่ดี และเครื่องที่ปกติจะไม่ต้องไปกำหนด Path ใน System Environment เอง เพราะเครื่องจะกำหนดให้เอง (ส่วนที่ต้องไปกำหนดเองก็คือพวกเครื่องไม่ปกติ)

        ผู้ที่หลงเข้ามาอ่านหลายๆคนจัดไฟล์ไม่เป็นระเบียบ นึกจะโหลดลงไว้ที่ไหนก็ลงไว้ที่นั้น พอมีโหลดตัวใหม่มาก็ไว้ที่อื่นกระจัดกระจายทั่วไปหมด บ้างก็เจออยู่ในโฟลเดอร์ Downloads หรือแม้แต่ Desktop ก็ยังมี และที่สำคัญชื่อโฟลเดอร์มายังไงก็ปล่อยแบบนั้น เช่น adt-bundle-windows-x86_64-2014-07-02 เป็นต้น แถมมีหลายโฟลเดอร์ด้วย

        ดังนั้นทางที่ดีก็ควรแก้ชื่อให้เหมาะสมหน่อย เพื่อที่ว่าจะได้จำได้ง่ายว่าโฟลเดอร์ไหนใช้หรือไม่ใช้ (ที่แน่ๆคือบน Windows ไม่รองรับ Path ที่เกิน 255 Character และในโฟลเดอร์ก็มี .jar ที่ชื่อยาวเหยียดอยู่) ส่วน Path ก็แนะนำให้ไว้ในที่อื่นที่ไม่ใช่ Drive C เพื่อเลี่ยงปัญหาเรื่อง Security นั่นเอง

        • Android SDK ควรใช้ตัวเดียวไปเลย ถึงจะใช้ Eclipse ADT และ Android Studio ทั้งคู่ก็ตาม เพราะว่าทั้งคู่สามารถกำหนด Android SDK เป็น External Path ได้ จะได้อัพเดททีเดียวไม่เปลืองเนื้อที่ด้วย

        • ไม่เข้าใจว่า Gradle คืออะไรและใช้งานยังไง รวมไปถึงไม่เข้าใจปัญหาที่เกิด เพราะว่า Gradle ณ ถ้ายังหาข้อมูลบนอินเตอร์เน็ตก็อาจจะยังมีข้อมูลน้อยอยู่ แถมข้อมูลอาจจะเก่าด้วย เช่น ปัญหาเก่าที่เกิดขึ้นในเวอร์ชัน Beta เป็นคนละปัญหากับที่เกิดในเวอร์ชันล่าสุด

        • ยังใช้ Android Studio ไม่ค่อยเป็นก็ยังไม่ต้องย้ายโปรเจคงานมาทำบนนี้ เพราะเจอผู้ที่หลงเข้ามาอ่านหลายคนริอ่าน ย้ายงานมาทำบน Android Studio ในบัดดล แล้วก็เจอปัญหาที่ต้องนั่งแก้เป็นเวลานาน ซึ่งถ้าเอาเวลาที่เสียไป ไปนั่งทำบน Eclipse ADT ให้เสร็จก่อน ก็อาจจะเสร็จไปแล้วก็ได้

        ถ้าจะเริ่มใช้ Android Studio ก็ควรเริ่มเป็นงานโปรเจคชิ้นใหม่ไปเลยเพื่อลดขั้นตอนยุ่งยากกับปัญหาที่อาจจะเกิดขึ้นระหว่างการบย้ายจาก Eclipse ADT มายัง Android Studio

        • และถ้ากรณีที่ Gradle ไม่สามารถทำงานได้ เหมือนภาพแรกสุด นั่นหมายความว่า Java ในเครื่องของผู้ที่หลงเข้ามาอ่านมีปัญหา ไม่สามารถรัน Java ได้ โดยสังเกตได้จากเปิด Android SDK Manager ไม่ติด หรือแม้แต่ android.bat และ ddms.bat ก็ตาม (เปิดขึ้นแปปเดียวแล้วก็หายไป) เพราะงั้นแก้ปัญหาซะ!



         จากมุมมองเจ้าของบล็อก Android Studio ไม่ใช่ตัวปัญหานะ แต่ปัญหาเกิดมาจากเครื่องของผู้ที่หลงเข้ามาอ่านแต่ละคนมีความแตกต่างกัน บางเครื่องก็ไม่สมประกอบ รวมไปถึงปัญหาจากผู้ใช้งานเอง (Developers Error)  จึงพากันตีความไปว่า Android Studio มีปัญหาเยอะ ยุ่งยาก และวุ่นวาย

        และจากการแก้ปัญหา เจ้าของบล็อกก็พบว่า

        มุขลบ JDK กับ JRE ออกให้หมดแล้ว Restart เครื่องเพื่อลงใหม่อีกครั้งใช้ได้ผลบ่อยมาก.....(แต่ไม่ใช่กับทุกปัญหา)




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

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