অ্যান্ড্রয়েড প্রকল্পে অব্যবহৃত স্ট্রিংগুলি খুঁজে পাওয়ার কোনও সহজ উপায় কী?


152

আমার কাছে একটি বিশাল অ্যান্ড্রয়েড প্রকল্প রয়েছে যার সাথে অনেকগুলি স্ট্রিং ঘোষণা করা হয়েছিল strings.xml। আমি অব্যবহৃত স্ট্রিংগুলি ভিতরে সরাতে চেয়েছিলাম strings.xml

এটি করার কোন সহজ উপায় আছে?

উত্তর:


238

উপর অ্যান্ড্রয়েড স্টুডিও :

মেনু -> বিশ্লেষণ করুন -> নাম অনুসারে পরিদর্শন চালান -> অব্যবহৃত সংস্থান

ফাইল মাস্ক (গুলি) চেকবাক্স পরীক্ষা strings.xmlকরে পাঠ্য ক্ষেত্রে রাখুন।


2
তারপরে আপনি অব্যবহৃত স্ট্রিং, রঙগুলি সন্ধান করতে -> -> - Custom scopeবেছে বেছে সংজ্ঞায়িত করতে পারেন -Production classesappvalues
জেমশিট ইস্কেন্দ্রভ

2
এসডিকে সরঞ্জামগুলি ২.0.০.২ সহ এটি আমার অব্যবহৃত স্ট্রিংগুলি খুঁজে পাবে না, যখন "ব্যবহারগুলি সন্ধান করুন" তাদের কোনও ব্যবহার দেখায় না (এবং এটি প্রকৃত ব্যবহৃতদের ক্ষেত্রে এটি করে) does
ব্যবহারকারী 905686

বিটিডব্লিউ যখন স্ট্রিংটি প্রকৃতপক্ষে ব্যবহৃত হয় (কোডে গতিশীলভাবে রেফারেন্স করা হয়), আপনি লটারের সতর্কতাগুলি দমন করতে পারেনtools:ignore="UnusedResources"
jakub.g

4
এইটি প্রত্যাশার মতো কাজ করছে না। আমি অব্যবহৃত স্ট্রিং যুক্ত করে পরিদর্শন করার চেষ্টা করেছি, তবে এটি এটি সনাক্ত করতে সক্ষম নয়
চিক্কা.আনদেব

এটি ভাঙ্গা বলে মনে হচ্ছে, আমার মনে হয়েছে যে আমার বেশ কয়েকটি স্ট্রিং অব্যবহৃত হয়েছে, তবে একটি দ্রুত "সন্ধানের ব্যবহারগুলি" ব্যবহারের সন্ধান পেয়েছে। সতর্ক হোন.
szaske

37

এখানে আরও একটি সমাধান যা মোটামুটি সহজ। অ্যান্ড্রয়েড স্টুডিও মেনুতে যান

Refactor> অব্যবহৃত সম্পদ সরান ...

এখানে চিত্র বর্ণনা লিখুন

অব্যবহৃত সংস্থানগুলি কী তা দেখার জন্য প্রাকদর্শন ক্লিক করুন এবং সেগুলি নির্বাচিতভাবে সরান।


1
এটি প্রকৃতপক্ষে ব্যবহৃত প্রচুর সংস্থান সরিয়ে ফেলে। ম্যানুয়ালি অনেকগুলি জিনিস মুছে ফেলতে হয়েছিল
স্টিওফ্লান

1
@ স্টোফ্লান, আপনি প্রাকদর্শন ক্লিক করুন, আপনি কী মুছবেন এবং মুছবেন না তা নিজেই বেছে নিতে পারেন।
সুরগাচ

1
"অব্যবহৃত @ আইডি ঘোষণাগুলিও মুছুন" এর সাথে যত্ন নিন। এটি আমাকে প্রচুর আইডি মুছে দিয়েছে যে আমার কোডটি আসলে ব্যবহার করছে (কোটলিন অ্যান্ড্রয়েড এক্সটেনশন প্লাগইন - যা ক্রিয়াকলাপ, অংশ এবং দৃশ্যগুলি থেকে দর্শনগুলি পুনরুদ্ধার করতে অনুমতি দেবে)
ড্যান অ্যালবোটেনু

28

আমার ক্ষেত্রে "রান ইন্সপেকশন বাই নেম" কাজ করেনি, যদিও আমি "অব্যবহৃত সংস্থানগুলি সরান" ব্যবহার করেছিলাম despite

সমাধান:

  1. স্ট্রিং.এক্সএমএল খুলুন
  2. মাধ্যমিক ক্লিক করুন
  3. অশোধক -> অব্যবহৃত সংস্থানগুলি সরান

"অব্যবহৃত রিসোর্সগুলি সরান" কেন এক উপায়ে কাজ করে তবে অন্যটি নয় বলে আমার কোনও ধারণা নেই।


2
আপনি এটি প্রকল্পের এক্সপ্লোরারটিতেও করতে পারেন, আপনি চান মডিউলটি নির্বাচন করুন, তারপরে ডান ক্লিক করুন এবং রিফ্যাক্টর> অব্যবহৃত সংস্থানগুলি অপসারণ করুন, অব্যবহৃত ড্রয়াবলের মতো যে কোনও ধরণের সংস্থান সরান
এফআরএল

22

ADT 16 দিয়ে আপনি এটি যথাসম্ভব সহজ করতে পারেন। এডিটি 16 এ আপডেট করুন এবং অ্যান্ড্রয়েড লিন্ট ব্যবহার করুন । এটি সত্যই আশ্চর্যজনক সরঞ্জাম। এটি সমস্ত অব্যবহৃত সংস্থান (কেবল স্ট্রিং নয়) এবং আরও অনেক কিছু পেতে পারে। এর অফিসিয়াল সাইট থেকে:

Here are some examples of the types of errors that it looks for:

- Missing translations (and unused translations)
- Layout performance problems (all the issues the old layoutopt tool used to find, and more)
- Unused resources
- Inconsistent array sizes (when arrays are defined in multiple configurations)
- Accessibility and internationalization problems (hardcoded strings, missing contentDescription, etc)
- Icon problems (like missing densities, duplicate icons, wrong sizes, etc)
- Usability problems (like not specifying an input type on a text field)
- Manifest errors
and many more.

11
20.0.2 এডিটি হিসাবে অ্যান্ড্রয়েড লিন্ট অব্যবহৃত স্ট্রিংগুলি খুঁজে পায় না বা এটি দাবিও করে না। আমি এটি সম্পূর্ণরূপে এলোমেলো আইডি দিয়ে একটি স্ট্রিং যুক্ত করে এবং পরে লিন্ট চালিয়ে এটি পরীক্ষা করেছি। আমি উপরে নীচে জবাবটি দিতে পারিনি, কারণ আমার যথেষ্ট খ্যাতি নেই :(।
ফ্র্যাঙ্ক হার্পার

যেমন @ ফ্র্যাঙ্কহার্পার বলেছেন: এটি আগে হয়নি। যেমন লর্ড ফ্ল্যাশ বলেছেন, এটি এখন করে:Warning: The resource R.string.... appears to be unused [UnusedResources] [lint] <string name="...">some text</string>
সার্ভ-ইনক

3

স্ট্রিং.এক্সএমএল পরীক্ষা করতে।

এটি সহজ (অন্তত আমার গ্রহের সংস্করণে)

অ্যান্ড্রয়েডের জন্য গ্রহপসে (আমার কাছে v22.6.2-1085508 সংস্করণ রয়েছে)

  • "প্যাকেজ এক্সপ্লোরার" এ প্রকল্পের নামের উপর ডান ক্লিক করুন
  • "অ্যান্ড্রয়েড সরঞ্জাম" নির্বাচন করুন।
  • "রান লিন্ট: সাধারণ ত্রুটিগুলির জন্য পরীক্ষা করুন" নির্বাচন করুন।

এখন আপনি স্ট্রিং.এক্সএমএল খুললে দেখবেন অব্যবহৃত স্ট্রিংটি হাইলাইট হয়েছে।

আপনি অন্যান্য সম্ভাব্য সমস্যাগুলি সমাধান করতে পারেন।


ডিফল্ট ফাইলে কোনও অনুবাদ নেই এমন স্ট্রিংগুলি খুঁজতে এটি দরকারী
ePeace

3

অ্যান্ড্রয়েড স্টুডিও প্রেসে

Ctlr + alt + শিফট আমি +

নির্বাচন করুন -> অব্যবহৃত সংস্থানসমূহ
এটি আপনাকে অব্যবহৃত অব্যবহৃত স্ট্রিং এবং আইকন দেখায়।

ধন্যবাদ শুভ কোডিং :)


3

এইভাবে আমি অ্যান্ড্রয়েড 3.3 দিয়ে এটি করেছি।

আপনার ভাণ্ডারে অরক্ষিত কোনও পরিবর্তন দেখুন।

  • আপনার অ্যাপের মডিউলটি -> রিফ্যাক্টর -> অব্যবহৃত সংস্থানগুলি সরান -> পূর্বরূপ দেখুন
  • রিফ্যাক্টরিং পূর্বরূপে, উভয় মতামত ('মুছে ফেলার আইটেম' এবং 'অব্যবহৃত রিসোর্স ঘোষণাগুলি') উভয়ই ভেঙে দিন
  • 'মোছার জন্য আইটেমগুলি' রাইট ক্লিক করুন -> বাদ দিন
  • 'অব্যবহৃত রিসোর্স ডিক্লারেশনস' - এ বাদ দিন রাইট ক্লিক করুন
  • এখন 'অব্যবহৃত রিসোর্স ডিক্লারেশনস' প্রসারিত করুন এবং এর অধীনে আপনার অ্যাপ্লিকেশনটিকে নির্দিষ্ট স্ট্রিংস.এক্সএমএল সনাক্ত করুন (একাধিক স্ট্রিং.এক্সএমএল থাকবে)
  • ডান ক্লিক করুন যে স্ট্রিং.এক্সএমএল -> অন্তর্ভুক্ত করুন
  • রিফ্যাক্টর! এক্সএমএল ফাইল থেকে সমস্ত অব্যবহৃত স্ট্রিং মুছে ফেলা হয়েছে!

দ্রষ্টব্য: প্রকল্পটি নির্মাণের চেষ্টা করুন। সংকলন ব্যর্থ হলে, সম্ভবত এই স্ট্রিংস। এক্সএমএল কিছু লেআউট / মেনু xmls থেকে উল্লেখ করা হচ্ছে, যা তারা নিজেরাই অব্যবহৃত। সুতরাং এই লেআউট xmls এছাড়াও ম্যানুয়ালি মুছে ফেলা যেতে পারে!

বিল্ড এবং রান করুন। টেস্ট!


-1

আপনার প্রকল্পের মূল থেকে এই স্ক্রিপ্টটি চালান।

res রিসো / মানগুলি / * xML` সন্ধান করুন এ রিসোর্সফায়ালের জন্য; করা
  string গ্রেপ 'স্ট্রিংনামের জন্য। * / \ 1 / জি'`; করা
    count1 = `grep -rc" R.string। $ {stringname name "src | egrep -v ': 0 $' | wc -l`
    গণনা 2 = `গ্রেপ-আরসি" @ স্ট্রিং / {{স্ট্রিং নাম res "রেজ / লেআউট | egrep -v ': 0 $' | wc -l`
    count3 = `grep -rc" @string / $ {স্ট্রিং নাম res "রেজ / মেনু | egrep -v ': 0 $' | wc -l`
    গণনা 4 = `গ্রেপ-সিআর" @ স্ট্রিং / name {স্ট্রিং নাম Android "অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল | egrep -v '^ 0 $' | wc -l`
    গণনা 5 = `গ্রেপ-আরসি" @ স্ট্রিং / $ {স্ট্রিং নাম res "রেজ / এক্সএমএল | egrep -v ': 0 $' | wc -l`
    যদি [$ count1 -eq 0 -a $ count2 -eq 0 -a $ count3 -eq 0 -a $ count4 -eq 0 -a $ count5 -eq 0]; তারপর
      প্রতিধ্বনি $ রিসোর্সফাইল: $ স্ট্রিং নাম
    ফাই
  সম্পন্ন
সম্পন্ন

resource সন্ধান করুন রেজো / ড্রয়যোগ্য * -প্রকার-এফ-নাম '*। ???' in; করা
  রিসোর্স = `ইকো $ রিসোর্নাম | xargs বেসনাম | সেড "এস / ^ \ (। * \) \ .... $ / \ 1 / জি" `
  গণনা 1 = `গ্রেপ-আরসিআর" আর \। পুনর্নযোগ্য \। $ {উত্স} "এসআরসি | egrep -v ': 0 $' | wc -l`
  গণনা 2 = `গ্রেপ-সিআর" @ ড্রায়েবল / $ {রিসোর্স} "রেজ / লেআউট | egrep -v ': 0 $' | wc -l`
  গণনা 3 = `গ্রেপ-আরসি" @ ড্রায়েবল / $ $ রিসোর্স} "রেজো / ড্রয়যোগ্য * / *। এক্সএমএল | egrep -v ': 0 $' | wc -l`
  গণনা 4 = `গ্রেপ-আরসি" @ ড্রায়েবল / $ {রিসোর্স} "রেজ / মেনু | egrep -v ': 0 $' | wc -l`
  গণনা 5 = `গ্রেপ-আরসি" @ ড্রায়েবল / $ {রিসোর্স} "অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল | egrep -v '^ 0 $' | wc -l`
  যদি [$ count1 -eq 0 -a $ count2 -eq 0 -a $ count3 -eq 0 -a $ count4 -eq 0 -a $ count5 -eq 0]; তারপর
      প্রতিধ্বনি $ উত্স নাম name
  ফাই
সম্পন্ন

`সন্ধান করুন রেজ্য / লেআউট / * xML`- এ রিসোর্সনামের জন্য; করা
  রিসোর্স = `ইকো $ রিসোর্নাম | xargs বেসনাম | সেড "এস / ^ \ (। * \) \ .... $ / \ 1 / জি" `
  count1 = `grep -rc" R \ .layout \। $ {উত্স} "src | egrep -v ': 0 $' | wc -l`
  যদি [$ count1 -eq 0]; তারপর
      প্রতিধ্বনি $ উত্স নাম name
  ফাই
সম্পন্ন

এটি আমাকে এই ধরণের আউটপুট দেয়:

পুনরায় / মান / ক্রিয়াকলাপ_স্ট্রিং.এক্সএমএল: ক্রিয়াকলাপ_আর
পুনরায় / মান / ক্রিয়াকলাপ_স্ট্রিং.এক্সএমএল: ক্রিয়াকলাপ_আর_প্রথা_
res / মান / db_strings.xml: sql_backlog_count
res / মান / db_strings.xml: sql_backlog_update_last_resend
...

শীতল পদ্ধতির তবে এটি কি সূত্রের নাম মন্তব্য বা স্ট্রিংগুলিতে নেই কিনা তা যাচাই করে? নতুন অ্যান্ড্রয়েড স্টুডিও প্রকল্প কাঠামোর সাথেও সামঞ্জস্য রাখতে এটির কিছু পরিবর্তন প্রয়োজন।
মোহাম্মদ জাফর মাশহাদি

-1

অনুপস্থিত অনুবাদ কেবল:

ইন্টেলিজ ব্যবহার করে, আপনার ইন্টিলিজের প্যানেল বারটিতে ক্লিক করুন: "বিশ্লেষণ করুন"> "নাম অনুসারে পরিদর্শন চালান"> টাইপ করুন: অসম্পূর্ণ অনুবাদ

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.