วิธีแก้ปัญหา Unable to unzip และ Could not expand ZIP บน Android Studio

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

เมื่อ Gradle เจ้าปัญหาบอกว่า Build ไม่ผ่าน

ปัญหาที่เกิดขึ้นจะมีใจความประมาณนี้

Execution failed for task ':app:compileDebugJavaWithJavac'.
> Could not expand ZIP '/Users/username/Library/Android/sdk/extras/android/m2repository/com
  /android/support/support-annotations/26.0.0-alpha1/support-annotations-26.0.0-alpha1.jar'

หรือแบบนี้

Execution failed for task ':app:prepareComAndroidSupportAnimatedVectorDrawable2600Alpha1Library'.
> Unable to unzip '/Users/username/Library/Android/sdk/extras/android/m2repository/com/android
  /support/animated-vector-drawable/26.0.0-alpha1/animated-vector-drawable-26.0.0-alpha1.aar' 
  to '/Users/username/.android/build-cache/7cd95cde4e9743d9e6a78b9dbe7791/output'

ถึงแม้รายละเอียดจะแตกต่างกันเล็กน้อย แต่ถ้าอ่านคร่าวๆก็จะได้ใจความว่า Gradle ไม่สามารถ Unzip ไฟล์ของ Android Support Library ได้นั่นเอง

ซึ่งวิธีแก้ไขนั้นไม่มีรูปแบบตายตัว อ้าว!? ไหงงั้นล่ะ?

เพราะ Environment บนคอมพิวเตอร์ของแต่ละคนนั้นแตกต่างกันออกไป

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

กำหนด Permission บนเครื่องไม่ถูกต้อง?

ในแต่ละ OS จะมีการกำหนด Permission ในการเข้าถึงไฟล์ในเครื่องแตกต่างกันออกไป โดยจะต้องเช็คทั้งหมด 3 อย่างด้วยกัน

Android Studio

ถ้าเป็น Windows ควรจะเปิดแบบ Run as Administrator ส่วน OS อื่นไม่น่าจะมีปัญหาอะไร ขอแค่ติดตั้งลงในเครื่องให้ถูกต้องก็พอ (เคยเจอคนที่เปิดโปรแกรมจากไฟล์ .dmg โดยตรง แทนที่จะลากลงเครื่องก่อน)

Android SDK

จะต้องอยู่ในพื้นที่ที่สามารถ Read และ Write ได้ปกติ ถ้าเป็น Android SDK ที่ติดตั้งจาก Android Studio โดยอัตโนมัติ ก็ไม่น่าจะมีปัญหาอะไร เว้นแต่ว่าไปดาวน์โหลดแยกแล้วเก็บไว้ในพื้นที่ที่ติดเรื่อง Permission

Project Directory

ไฟล์โปรเจคจะต้องอยู่ในพื้นที่ที่สามารถ Read และ Write ได้ปกติ อย่าเผลอสร้างไว้ใน Directory แปลกๆเชียวล่ะ

เปลี่ยนภาษาในเครื่องให้เป็นภาษาอังกฤษซะ

อาจจะฟังดูตลก แต่นี่คือสาเหตุหนึ่งที่ทำให้เจอปัญหานี้ได้ เพราะว่าเครื่องที่ใช้อยู่นั้นเลือกเป็นภาษาไทยไว้

ดังนั้นไม่ว่าจะเป็น OS ไหนก็ตาม แนะนำให้ลองเปลี่ยนภาษาเครื่องให้เป็นภาษาอังกฤษแล้ว Restart เครื่องดูครับ รับรองว่าแก้ปัญหานี้ได้จริงๆ

ทั้งนี้เนื่องจาก Gradle มีปัญหากับการทำงานบน Locale ที่เป็นภาษาไทย ดังนั้นถ้าไม่ต้องการเปลี่ยน Locale ในเครื่องคอมพิวเตอร์ ก็สามารถกำหนด Locale ใน gradle.properties ได้เช่นกัน

// gradle.properties
org.gradle.jvmargs=-Xmx1536m -Duser.country=US -Duser.language=en

ทำทั้งหมดนี้แล้วก็ยังไม่หาย?

ไม่รู้แล้วโว้ยยยยยย (ลอง Comment มาบอกหรือทักผ่านเพจกันได้ครับ)