Gradle त्रुटि: Unable to delete file – Kotlin समाधान

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: हर Android डेवलपर की जानी-पहचानी समस्या

\n

आप Android Studio में Build → Clean Project चलाते हैं, प्रोजेक्ट के जल्दी रीबिल्ड होने की उम्मीद करते हैं, लेकिन इसके बजाय Build विंडो में लाल टेक्स्ट दिखता है:

\n
Error: Execution failed for task ':app:clean'.\n> Unable to delete file: C:\\Users\\User\\AndroidStudioProjects\\MyApp\\app\\build\\...\\some_file.dex
\n

परिचित लग रहा है? अगर आप Android के लिए Kotlin में कोड लिखते हैं, तो यह त्रुटि खासकर Windows पर बार-बार आ सकती है। यह न सिर्फ डेवलपमेंट को धीमा करती है, बल्कि आपको कंप्यूटर रीस्टार्ट करने जैसे 'जादुई' उपायों पर मजबूर कर देती है।

\n

इस लेख में हम समझेंगे कि Unable to delete file त्रुटि क्यों होती है, इसे हमेशा के लिए कैसे ठीक करें, और समाधान को ऑटोमेट करने के लिए Kotlin में कोड उदाहरण दिखाएंगे। लेख के अंत तक, आप न सिर्फ समस्या को ठीक कर पाएंगे, बल्कि इसे रोकना भी सीख जाएंगे।

\n

पहले कारणों को समझते हैं, फिर सरल से लेकर उन्नत समाधानों की ओर बढ़ेंगे।

\n\n

Gradle फ़ाइल क्यों नहीं हटा पा रहा है?

\n

:app:clean टास्क चलाते समय Unable to delete file त्रुटि तब होती है जब Gradle build/ फ़ोल्डर को साफ करने की कोशिश करता है, लेकिन एक या अधिक फ़ाइलों को हटा नहीं पाता। मुख्य कारण:

\n
    \n
  • फ़ाइल किसी अन्य प्रक्रिया द्वारा लॉक है — अक्सर यह एंटीवायरस, Windows Search Indexer, या खुद Android Studio होता है।
  • \n
  • लंबा पथ (Windows) — अगर फ़ाइल का पथ 260 कैरेक्टर से अधिक है, तो Windows इसे हटाने से मना कर सकता है।
  • \n
  • बंद न किए गए I/O स्ट्रीम — आपका ऐप या लाइब्रेरी फ़ाइल को खुला रख सकती है।
  • \n
  • Instant Run / Apply Changes के साथ विरोध — Android Studio के पुराने वर्जन फ़ाइलों को ब्लॉक कर सकते थे।
  • \n
\n

यह समस्या ज़्यादातर Windows पर होती है, लेकिन macOS/Linux पर SMB शेयर या Docker के साथ भी हो सकती है।

\n\n

त्वरित समाधान (5 मिनट में)

\n

कोड में बदलाव करने से पहले, ये सरल कदम आज़माएं। ये 80% मामलों में काम करते हैं।

\n\n

1. Android Studio बंद करें और मैन्युअली हटाएं

\n

सबसे भरोसेमंद तरीका है IDE बंद करके app/build फ़ोल्डर को मैन्युअली हटाना। अगर फ़ाइल नहीं हटती है, तो Windows पर Unlocker या macOS/Linux पर lsof कमांड का उपयोग करके लॉक करने वाली प्रक्रिया को खोजें।

\n\n

2. GUI के बजाय टर्मिनल का उपयोग करें

\n

कभी-कभी Android Studio clean टास्क पर 'अटक' जाता है। टर्मिनल में यह कमांड चलाएं:

\n
./gradlew clean --no-daemon
\n

--no-daemon फ्लैग Gradle को बिना बैकग्राउंड प्रोसेस के चलाता है, जो अक्सर लॉकिंग की समस्या को हल करता है।

\n\n

3. Instant Run / Apply Changes बंद करें

\n

Android Studio 3.x और पुराने वर्जन में Instant Run फ़ाइलों को ब्लॉक कर सकता था। इसे बंद करें:

\n
    \n
  • File → Settings → Build, Execution, Deployment → Instant Run पर जाएं।
  • \n
  • Enable Instant Run का चेकमार्क हटा दें।
  • \n
\n

नए वर्जन (Arctic Fox+) में यह विकल्प Apply Changes से बदल दिया गया है, लेकिन समस्या कम होती है।

\n\n

उन्नत समाधान: Kotlin में ऑटोमेशन

\n

अगर त्वरित तरीके काम नहीं करते, तो प्रक्रिया को ऑटोमेट करने का समय है। हम Kotlin में एक छोटी स्क्रिप्ट लिखेंगे जो clean टास्क से पहले चलेगी और लॉक करने वाली प्रक्रियाओं को बलपूर्वक बंद करेगी।

\n\n

4. कस्टम टास्क के लिए Gradle में Kotlin DSL का उपयोग करें

\n

मॉड्यूल-स्तरीय build.gradle.kts फ़ाइल में यह कोड जोड़ें:

\n
// build.gradle.kts (app level)\ntasks.register<Exec>("killFileLocks") {\n    description = "build फ़ोल्डर में फ़ाइलों को लॉक करने वाली प्रक्रियाओं को बंद करता है"\n    commandLine("cmd", "/c", "taskkill /f /im java.exe 2>nul || exit 0")\n    // macOS/Linux के लिए इसे बदलें:\n    // commandLine("sh", "-c", "lsof -ti:8080 | xargs kill -9 2>/dev/null || true")\n}\n\ntasks.named("clean") {\n    dependsOn                

ब्लॉग

पुस्तक अनुशंसाएँ