ฉันกำลังพยายามสร้างโครงการ Android Studio Gradle ของฉันใหม่ (ที่มีรหัส Kotlin ส่วนใหญ่) แต่มันก็เริ่มโยนUnableToDeleteFileException
ระหว่างกระบวนการทำความสะอาด / สร้างใหม่:
Execution failed for task ':app:clean'.
> Unable to delete file: C:\Users\User\KotlinGameEngine\app\build\intermediates\exploded-aar\com.android.support\appcompat-v7\23.0.1\jars\classes.jar
สิ่งนี้เริ่มต้นขึ้นหลังจากที่ฉันพยายามเปลี่ยนโครงสร้างแพ็คเกจของโครงการ น่าเสียดายที่ฉันทำได้โดยเปลี่ยนชื่อและย้ายโฟลเดอร์ซอร์สแทนที่จะทำการเปลี่ยนใหม่ผ่าน Android Studio ซึ่งเป็นแนวคิดที่ไม่ดี
ฉันค้นหาวิธีแก้ไขปัญหานี้ตลอดทั้งวันและสิ่งเหล่านี้เป็นสิ่งที่ฉันพยายามทำเพื่อประโยชน์:
- ทำการซิงค์แบบ Gradle
- การติดตั้ง Java JRE และ Java SDK อีกครั้ง
- การติดตั้ง Android Studio เวอร์ชันล่าสุดอีกครั้ง (1.4);
- ย้อนกลับไปเป็นเวอร์ชั่น AS ก่อนหน้า (1.3);
- การทำให้แคช AS เป็นโมฆะและเริ่มต้นใหม่;
- การลบ
gradle
และ.gradle
ไดเรกทอรีในไดเรกทอรีโครงการ - การลบ
.gradle
ไดเรกทอรีในไดเรกทอรีผู้ใช้ของฉัน; - ทำงาน
gradlew clean
จากเทอร์มินัล AS - คัดลอกแหล่งที่มาด้วยตนเองไปยังโครงการใหม่ (แปลกที่มันยังคงมีอยู่ในโครงการ ... )
สิ่งที่ฉันได้ลองด้วยความสำเร็จเล็ก ๆ น้อย ๆ แต่ให้ฉันทำความสะอาดอีกครั้งและสร้างใหม่ก่อนที่ข้อผิดพลาดจะเกิดขึ้นอีกครั้ง:
- ปิด AS ลบไฟล์บิลด์ด้วยตนเองและเปิดอีกครั้ง
- ฆ่า
java.exe
กระบวนการในขณะที่ทำงานอยู่ (ซึ่งสามารถทำได้ในทางเทคนิคทุกครั้ง แต่มันน่าเบื่อและทำให้กระบวนการสร้างช้าลง)
ดังนั้นดูเหมือนว่าการคอมไพล์กระบวนการ Java อาจวางการล็อกไฟล์บิลด์ด้วยเหตุผลบางอย่าง แต่มันอาจจะเป็นสิ่งที่ต้องทำกับ Kotlin ฉันมีโปรเจ็กต์ Java Android ที่เป็นผู้ใหญ่มากกว่าที่ฉันกำลังทำงานอยู่ถึงแม้ว่าฉันจะไม่สามารถทำซ้ำข้อผิดพลาดนี้ได้เมื่อทำความสะอาด ดูเหมือนว่าจะเกิดขึ้นกับโครงการ Kotlin ของฉันเท่านั้น
ปรับปรุง:
ฉันพบว่าปัญหากำลังเกิดขึ้นจากปลั๊กอิน Kotlin Android ปัญหาหายไปเมื่อฉันลบออกapply plugin: 'kotlin-android'
จากbuild.gradle
ไฟล์ของโมดูลและกลับมาเมื่อฉันแทรกมันอีกครั้ง อย่าลังเลที่จะนำเสนอข้อมูลเชิงลึกเกี่ยวกับเรื่องนี้
อัปเดต 2:
การปรับปรุงครั้งล่าสุดไม่ใช่สาเหตุ ฉันพบว่าหากโครงการมีไฟล์ Kotlin การสร้างใหม่และการทำความสะอาดล้มเหลว มันยังคงล้มเหลวแม้ว่าไฟล์ Kotlin ทั้งหมดจะถูกลบออกจนกว่ากระบวนการ Java พื้นหลังจะถูกฆ่าซึ่งหมายความว่ามันมีการล็อคบางอย่างในไฟล์บิลด์ ฉันส่งข้อบกพร่องที่นี่พร้อมรายละเอียดเพิ่มเติมและขั้นตอนในการสร้างข้อผิดพลาด: KT-9440