02 July 2017

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

Updated on

        ปัญหายอดนิยมสำหรับนักพัฒนามือใหม่ที่มักจะต้องเจอกันในตอนแรกที่ติดตั้ง 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 แปลกๆเชียวล่ะ

Dependency ที่ดาวน์โหลดมา ไม่สมบูรณ์

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


        ทดสอบง่ายๆด้วยการลบ Android Support Repository ที่อยู่ใน Android SDK Manager ออก แล้วติดตั้งใหม่ซะ

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

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


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

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

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