Android प्रोजेक्ट से सभी अप्रयुक्त संसाधनों को हटा दें


386

मैं अपने Android Res निर्देशिका से सभी अप्रयुक्त लेआउट, स्ट्रिंग्स, ड्रॉबल्स, रंग इत्यादि को हटाना चाहता हूं। क्या ऐसे कोई उपकरण हैं जो मुझे फाइलों की एक सूची देंगे और मैं अपनी रिपॉजिटरी और तत्वों को निर्दिष्ट फाइल के भीतर से हटा सकता हूं (जैसे अप्रयुक्त स्ट्रिंग प्रविष्टियां) जिनका अब उपयोग नहीं किया जाता है?

जवाबों:


734

आप आसानी से Android स्टूडियो से अप्रयुक्त संसाधनों की खोज कर सकते हैं। बस प्रेस CtrlAltShiftiऔर अप्रयुक्त संसाधनों को टाइप करें " (बिना उद्धरण के) को करें। जो लिंट को अंजाम देगा। लिंट कमांड (और आईडीई से अन्य सामान) चलाने का सुपर आसान तरीका।

या

में एंड्रॉयड स्टूडियो मेनू > Refactor > अप्रयुक्त संसाधन निकालें ...

उन संसाधनों का चयन करें जिन्हें आप हटाना चाहते हैं। आप संसाधन आइटम पर राइट-क्लिक करके अपने इच्छित संसाधनों को बाहर कर सकते हैं।

एक ही बार में सभी संसाधन हटाने के लिए Do Refactor का उपयोग करें

अद्यतन:OptionShifti मैक के लिए उपयोग करें


55
cmd + Alt + Mac के लिए Shift
यीशु डाइमेक्स

5
@MikeMilla उन फ़ाइलों पर राइट-क्लिक करें जिन्हें आप हटाना चाहते हैं और उस विकल्प पर क्लिक करें, जो कहता है कि "Lint Fixes लागू करें"। एक बार में कई फ़ाइलों को हटाने के लिए, उन्हें चुनें।
साकेत जैन

28
सलाह दी जाती है कि इस दृष्टिकोण का उपयोग किसी भी संसाधन को हटा देगा जो प्रोग्रामेटिक रूप से उपयोग किया गया था।
प्रोकाश सरकार

23
मेरी पूरी परियोजना को तोड़ दिया ... इस तरह के एक बुद्धिमान कदम नहीं है
egorikem

7
एएस 3.0 के साथ, यह सुविधा कुछ उपयोग की गई लेआउट फ़ाइल को हटा देती है। इसे आजमाने से पहले बैकअप या गिट कमिट कर लें।
स्टोनलैम

99

ADT 16 के बाद से आप Android Lint का उपयोग कर सकते हैं । यह वास्तव में अद्भुत उपकरण है।

एंड्रॉइड लिंट एडीटी 16 (और टूल 16) के लिए एक नया टूल है जो संभावित बगों के लिए एंड्रॉइड प्रोजेक्ट स्रोतों को स्कैन करता है।

यहाँ त्रुटियों के प्रकारों के बारे में कुछ उदाहरण दिए गए हैं:

  • अनुपलब्ध अनुवाद (और अप्रयुक्त अनुवाद)
  • लेआउट प्रदर्शन समस्याएं (सभी पुराने लेआउट को खोजने के लिए उपयोग किए जाने वाले मुद्दे, और अधिक)
  • अप्रयुक्त संसाधन
  • असंगत सरणी आकार (जब सरणियाँ कई कॉन्फ़िगरेशन में परिभाषित की जाती हैं)
  • अभिगम्यता और अंतर्राष्ट्रीयकरण की समस्याएँ (हार्डकोड स्ट्रिंग्स, अनुपलब्ध सामग्रीविकास, आदि)
  • आइकन समस्याएं (जैसे लापता घनत्व, डुप्लिकेट आइकन, गलत आकार, आदि)
  • प्रयोज्यता समस्याएं (जैसे पाठ क्षेत्र पर इनपुट प्रकार निर्दिष्ट नहीं करना)
  • प्रकट त्रुटियों और कई और अधिक।

हालांकि, इसके कुछ मुद्दे हैं (यदि वे पहले से तय हैं तो नहीं जानते) और यदि आप सैकड़ों अप्रयुक्त संसाधनों को हटाना चाहते हैं, तो मैं यह सुनिश्चित करने के लिए कई बार संसाधन को हटाने के दौरान परियोजना को मैन्युअल रूप से संकलित करने की सलाह दूंगा कि लिंट नहीं किया। कुछ जरूरत हटाओ।


10
मैं इस बात पर बहुत अधिक भरोसा नहीं करूंगा कि लिंट अप्रयुक्त संसाधनों के रूप में प्रस्तावित कर रहा है, खासकर यदि आप अपने कोड में बहुत सारे संसाधन लुकअप करते हैं बजाय xml में। इस मामले में लिंट होगा कि वे बहुत सारे संसाधनों का उपयोग नहीं कर रहे हैं जबकि वे वास्तव में हैं।
MrJre

61
एंड्रॉइड स्टूडियो में, आप अप्रयुक्त घोषणाओं और विधियोंAnalyze > Inspect Code... सहित कई चीजों को खोजने के लिए उपयोग कर सकते हैं ।
जोशुआ पिंटर

8
एक उदाहरण, यदि आप कमांड लाइन का प्रयोग करना चाहते हैं:lint --check UnusedResources <project-path>
एस्पैन्ची

41
लेकिन उन्हें कैसे हटाया जाए?
मार्टिन फ़फ़्फ़र

1
क्या सभी को Extra Translationsएक साथ हटाने का एक तरीका है / स्वचालित रूप से?
rishabhmhjn

41

चूंकि ग्रहण में एडीटी के लिए समर्थन समाप्त हो गया है, हमें एंड्रॉइड स्टूडियो का उपयोग करना होगा।

एंड्रॉइड स्टूडियो में 2.0+ का उपयोग करें Refactor > Remove Unused Resources...

यहां छवि विवरण दर्ज करें


2
ऐसा लगता है कि इस तरह से प्रोग्रामिक रूप से उपयोग किए जाने वाले संसाधनों को दूर करता है
THZ

1
अगले चरण में समीक्षा करना न भूलें, अन्यथा, कुछ उपयोग की गई फ़ाइलें भी हटा दी जाती हैं।
करण शर्मा

38

एंड्रॉइड के लिए ग्रैड बिल्ड सिस्टम "संसाधन सिकुड़ता" का समर्थन करता है: पैक किए गए एप्लिकेशन में, अप्रयुक्त संसाधनों के स्वचालित हटाने, निर्माण समय पर। आपकी परियोजना में संसाधनों को हटाने के अलावा जिन्हें वास्तव में रनटाइम की आवश्यकता नहीं है, यह उन पुस्तकालयों से संसाधनों को भी निकालता है जो आप पर निर्भर करते हैं कि क्या वे वास्तव में आपके आवेदन की आवश्यकता नहीं हैं।

यह सक्षम करने के लिए अपने gradle फ़ाइल में लाइन संकोचन स्रोत को सही जोड़ें।

   android {
        ...

        buildTypes {
            release {
                minifyEnabled true //Important step
                shrinkResources true
            }
   }
}

आधिकारिक दस्तावेज यहां देखें,

http://tools.android.com/tech-docs/new-build-system/resource-shrinking


2
छोटा होना चाहिए। मैं hv समस्याओं को सक्षम करने में सक्षम:
txeon

संकोचन स्रोत को केवल तभी ध्यान में रखा जाता है यदि minifyEnabled सत्य है minifyEnabled true
Eldhopj

16

हम स्रोत खोलते हैं एक उपकरण जो आपके एंड्रॉइड प्रोजेक्ट में सभी अप्रयुक्त संसाधनों को लिंट आउटपुट के आधार पर हटा देता है। यह यहां पाया जा सकता है: https://github.com/KeepSafe/android-resource-remover


मैं अपने एंड्रॉइड स्टूडियो प्रोजेक्ट से अप्रयुक्त संसाधन को हटाने के लिए इसका उपयोग कैसे करता हूं।
यामिनी

15

यदि आप लिंट चलाते समय कई फ्लेवर का उपयोग कर रहे हैं तो सावधान रहें। लिंट आपके द्वारा चुने गए स्वाद के आधार पर गलत अप्रयुक्त संसाधनों को दे सकता है।


इससे कैसे बचा जाए?
निकुंचे

अब तक, मुझे इसे करने का एक तरीका नहीं मिला है। प्रत्येक स्वाद के लिए रनिंग लिंट को छोड़कर और फिर दोनों फ्लेवर पर अप्रयुक्त वस्तुओं को चिह्नित करना।
MRodrigues

8

एंड्रॉइड स्टूडियो 2.0 में और ऊपर मेनू में Refactor -> Remove Unused Resources ... पर क्लिक करें

(या)

शॉर्टकट भी उपलब्ध

प्रेस Ctlr + Alt + Shift + i एक डायलॉग बॉक्स अप्पेर करेगा, फिर अप्रयुक्त टाइप करें , आपको कई विकल्प मिलेंगे और उपयोग किए गए संसाधनों को हटा दें


7

Android Studio में,

विश्लेषण -> नाम से निरीक्षण चलाएँ

(शॉर्टकट के लिए मैक शिफ्ट + कमांड + ऑप्शन + i, Ctrl + Shift + A विंडोज / लिनक्स पर)।

और 'अप्रयुक्त संसाधनों' टाइप करें।

इस तरह से आप अप्रयुक्त संसाधनों, चर, प्रतीकों, स्थानीयकरण, पुस्तकालयों ..etc को हटा सकते हैं।

सूची से वांछित निरीक्षण का चयन करें, फिर निरीक्षण गुंजाइश -> ठीक चुनें यहां छवि विवरण दर्ज करें


6

एंड्रॉइड वियर डेवलपर्स पर ध्यान दें : "अप्रयुक्त संसाधनों को हटा दें" xml फ़ाइल को हटा देगा जहां आप क्षमता नाम (res / मान / Wear.xml) की घोषणा करते हैं और फोन घड़ी से कनेक्ट करने में सक्षम नहीं होगा। मैंने अपने ऐप में इस बग को जानने की कोशिश में घंटों लगा दिए।


और यह भी उदाहरण के लिए, राउंड मिपमैप आइकन हटाता है।
आर्टेम

सही बात। सामान्य तौर पर, 'अप्रयुक्त संसाधनों को निकालें' की सिफारिश बिल्कुल भी नहीं की जानी चाहिए क्योंकि इससे बहुत सारे अप्राप्य कीड़े पैदा हो सकते हैं।
स्टेलियोसेफ

4

String.xml की जाँच करने के लिए।

यह आसान है (कम से कम मेरे ग्रहण के संस्करण में)

Android के लिए ग्रहण में (मेरे पास संस्करण v22.6.2-1085508 है)

  • "पैकेज एक्सप्लोरर" में प्रोजेक्ट के नाम पर बायाँ-क्लिक करें
  • "Android उपकरण" चुनें।
  • "रन लिंट: आम त्रुटियों की जांच करें" चुनें।

अब जब आप स्ट्रिंग्स खोलते हैं। xml, तो आप देखेंगे कि अप्रयुक्त स्ट्रिंग हाइलाइट किए गए हैं।

आप अन्य संभावित मुद्दों को ठीक कर सकते हैं।


+1 अच्छा समाधान, दोस्त। यह चयनित चेक के लिए एक प्रकार का वृक्ष चलाने की अनुमति देता है - ठीक वही जो मुझे चाहिए था .... (पीए लगभग एंड्रॉइड स्टूडियो के साथ समान है: प्रोजेक्ट एक्सप्लोरर में राइट क्लिक करें , विश्लेषण का चयन करें , निरीक्षण कोड का चयन करें या नाम से निरीक्षण चलाएं ): डी
त्रिनिमोन

यह उन अप्रयुक्त तारों को हटाने में बहुत मदद नहीं करता है। क्या आप उन्हें पहले की तरह मैन्युअल रूप से हटाने का सुझाव देते हैं?
स्टेन

"लिंट" वास्तव में "आपकी परियोजना की सफाई" करने का एक शानदार तरीका है। आपको अभी भी उन्हें मैन्युअल रूप से निकालना होगा, लेकिन वे हाइलाइट किए जाते हैं और आप तुरंत देखते हैं कि उनका उपयोग नहीं किया गया है। यह मध्यम आकार की परियोजना के लिए कुछ मिनट का काम है। :)
गेब्रियल क्लेन

3

शायद उपयोगी एंड्रॉइड अप्रयुक्त संसाधन एक जावा अनुप्रयोग है जो अप्रयुक्त संसाधनों के लिए आपकी परियोजना को स्कैन करेगा। अनुपयोगी संसाधन अनावश्यक रूप से जगह लेते हैं, निर्माण समय बढ़ाते हैं, और IDE की स्वत: पूर्ण सूची को अव्यवस्थित करते हैं।

इसका उपयोग करने के लिए, सुनिश्चित करें कि आपकी कार्यशील निर्देशिका आपके Android प्रोजेक्ट की जड़ है, और चलाएं:

java-kar AndroidUnusedResources.jar

https://code.google.com/p/android-unused-resources/


1
जहां मैंने कभी भी इसे रखा है, वह कहता है कि यह सही प्रोजेक्ट रूट नहीं है
किंग्स्टन

2

जब हम सिक्योर संसाधनों को परिभाषित करते हैं, तो उस समय हम यह भी परिभाषित कर सकते हैं कि हम किन संसाधनों को रखना चाहते हैं और जिन्हें मैंने xml फ़ाइल को res / कच्चे फ़ोल्डर में नहीं रखा है, जिन्हें keep.xml नाम दिया गया है।

आगे जाने से पहले एक एकल हस्ताक्षरित बिल्ड और चेक एनालाइज़र टूल में चेक करें जो दिखाएगा कि ड्रॉबल-एक्सएचडीपीआई-वी 4 में मैसेंजर_बटन_सेंड_सेड_सहैड_पिंग है, जिसे मैं इस टेस्ट के लिए हटाना चाहता हूं

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
       tools:shrinkMode="strict"
       tools:discard="@drawable/com_facebook_button_icon_blue.png,
       @drawable/com_facebook_button_icon_white.png,
       @drawable/com_facebook_button_like_icon_selected.png,
       @drawable/messenger_button_send_round_shadow.png,
       @drawable/messenger_*"  />

messenger_ करने से * drawable folder में name messenger से शुरू होने वाली सभी फाइलें हटा दी जाएंगी या अन्य तरीके से मैं i को हटाए जाने के लिए विशिष्ट फ़ाइल को परिभाषित करता है

इस तरह से आप लाइब्रेरी से फाइल निकाल सकते हैं, यदि आप लेआउट या लेआउट नाम से लेआउट हटा सकते हैं, तो उस लेआउट का उपयोग लेआउट द्वारा किया गया है और इसलिए ...।


1

यहाँ वास्तव में उत्कृष्ट जवाब अच्छे उपकरण का सुझाव दे रहे हैं

लेकिन अगर आप png-drawables (या अन्य इमेज फाइल्स) को हटाने का इरादा कर रहे हैं ) , तो आपको अपने प्रोजेक्ट से सभी ड्रॉबल-एक्सएक्सएक्स फोल्डर को एक अस्थायी फ़ोल्डर में ले जाने पर भी विचार करना चाहिए, फिर सभी का पुनर्निर्माण करें, और बिल्ड पर एक नज़र डालें संदेश सूची जो आपको बताएगी कि कौन से लापता हैं।

यह विशेष रूप से उपयोगी हो सकता है यदि आप एक सिंहावलोकन प्राप्त करना चाहते हैं कि आप किन संसाधनों का प्रभावी ढंग से उपयोग कर रहे हैं और संभवतया उन्हें एक आइकन फ़ॉन्ट या svg संसाधनों के साथ बदल दें, संभवतः एंड्रॉइड आइकनिक्स लाइब्रेरी की मदद से ।


यह समय लेने वाला है, लेकिन मैं मानता हूं कि यह भी एक समाधान है। मैं अभी यह कर रहा हूं
दीका

0

एंड्रॉइड एसेट्स व्यूअर को आपके .apk के भीतर पैक किए गए ग्राफिक्स (ड्राॅबल्स के रूप में) का नेत्रहीन निरीक्षण करने में मदद करने के लिए डिज़ाइन किया गया है (यदि आप चाहें तो अपने Res फ़ोल्डर की ज़िप फ़ाइल भी अपलोड कर सकते हैं):

http://www.cellebellum.net/AndroidAssetsViewer/

अप्रयुक्त संसाधनों को हटाने के लिए, यह लिंट चेक के साथ मिलकर काम कर सकता है ताकि यह सुनिश्चित हो सके कि जो कुछ होना चाहिए वह सब कुछ हो सके। यह आपको अपने ड्रॉबल के साथ कुछ अन्य संभावित समस्याओं की पहचान करने में भी मदद करता है: गलत बाल्टी, गलत ग्राफिक इत्यादि।


0

एंड्रॉइड स्टूडियो में लिंट चलाने और सभी अप्रयुक्त संसाधनों को खोजने के बाद, आप निरीक्षण टैब से उनमें से एक पर क्लिक कर सकते हैं। यह मुद्दे के बारे में कुछ विवरण और इसे ठीक करने के लिए कुछ विकल्प प्रदान करता है। उनमें से एक निकालें सभी अप्रयुक्त संसाधन हैं। उस विकल्प का चयन सभी अप्रयुक्त संसाधनों को हटा देता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.