ผมมีโครงการขนาดใหญ่ที่มี Android strings.xmlสตริงหลายประกาศใน strings.xmlผมอยากจะเอาสายที่ไม่ได้ใช้ใน
มีวิธีง่าย ๆ ในการทำเช่นนั้น?
ผมมีโครงการขนาดใหญ่ที่มี Android strings.xmlสตริงหลายประกาศใน strings.xmlผมอยากจะเอาสายที่ไม่ได้ใช้ใน
มีวิธีง่าย ๆ ในการทำเช่นนั้น?
คำตอบ:
บนAndroid Studio :
เมนู -> วิเคราะห์ -> เรียกใช้การตรวจสอบตามชื่อ ->ทรัพยากรที่ไม่ได้ใช้
ตรวจสอบหน้ากากไฟล์ (s)ช่องทำเครื่องหมายและใส่strings.xmlในช่องข้อความ
tools:ignore="UnusedResources"
นี่เป็นอีกวิธีการหนึ่งที่ค่อนข้างง่าย ในเมนู Android Studio ให้ไปที่
Refactor> นำทรัพยากรที่ไม่ได้ใช้ ...
คลิกดูตัวอย่างเพื่อดูว่าทรัพยากรที่ไม่ได้ใช้คืออะไร
ในกรณีของฉัน "Run Inspection by Name" ไม่ทำงานแม้ว่าฉันจะใช้ "ลบทรัพยากรที่ไม่ได้ใช้"
สารละลาย:
ฉันไม่มีเงื่อนงำว่าทำไม "นำทรัพยากรที่ไม่ได้ใช้" ออกใช้งานได้ทางเดียว แต่ไม่ใช่วิธีอื่น
ด้วย ADT 16 คุณสามารถทำได้ง่ายที่สุด Update เพื่อ ADT 16 และการใช้งานAndroid ผ้าสำลี มันเป็นเครื่องมือที่น่าทึ่งจริงๆ มันสามารถค้นหาทรัพยากรที่ไม่ได้ใช้งานทั้งหมด (ไม่เพียง แต่สตริง) และอีกมากมาย จากเว็บไซต์อย่างเป็นทางการ:
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.
Warning: The resource R.string.... appears to be unused [UnusedResources] [lint] <string name="...">some text</string>
เพื่อตรวจสอบ string.xml
ง่ายมาก (อย่างน้อยใน Eclipse รุ่นของฉัน)
ใน Eclipse สำหรับ Android (ฉันมีรุ่น v22.6.2-1085508)
ตอนนี้เมื่อคุณเปิด strings.xml คุณจะเห็นว่ามีการเน้นสตริงที่ไม่ได้ใช้
คุณสามารถแก้ไขปัญหาที่อาจเกิดขึ้นอื่น ๆ
ใน Android Studio Press
Ctlr + Alt + Shift + i
เลือก -> ทรัพยากรที่ไม่ได้ใช้
มันจะแสดงสตริงและไอคอนที่ไม่ได้ใช้ที่ไม่ได้ใช้
ขอบคุณ Happy coding :)
นี่คือวิธีที่ฉันทำกับ Android 3.3
ตรวจสอบการเปลี่ยนแปลงที่เก็บที่ไม่ได้บันทึกใด ๆ ของคุณ
หมายเหตุ: ลองสร้างโครงการ หากการรวบรวมล้มเหลวเป็นไปได้มากที่สุดที่ strings.xml เหล่านี้จะถูกอ้างอิงจากเค้าโครง / เมนู xml บางตัวซึ่งไม่ได้ใช้งาน ดังนั้นรูปแบบ xml เหล่านั้นจึงสามารถลบได้ด้วยตนเอง!
สร้างและเรียกใช้ ทดสอบ!
เรียกใช้สคริปต์นี้จากรากของโครงการของคุณ
สำหรับ resourcefile ใน `find res / values / *. xml`; ทำ
สำหรับ stringname ใน 'grep'. * / \ 1 / g'`; ทำ
count1 = `grep -rc" R.string. $ {stringname} "src | egrep -v ': 0 $' | ห้องสุขา -l`
count2 = `grep -rc" @string / $ {stringname} "res / layout | egrep -v ': 0 $' | ห้องสุขา -l`
count3 = `grep -rc" @string / $ {stringname} "res / menu | egrep -v ': 0 $' | ห้องสุขา -l`
count4 = `grep -rc" @string / $ {stringname} "AndroidManifest.xml | egrep -v '^ 0 $' | ห้องสุขา -l`
count5 = `grep -rc" @string / $ {stringname} "res / xml | egrep -v ': 0 $' | ห้องสุขา -l`
ถ้า [$ count1 -eq 0 -a $ count2 -eq 0 -a $ count3 -eq 0 -a $ count4 -eq 0 -a $ count5 -eq 0]; แล้วก็
echo $ resourcefile: $ stringname
Fi
เสร็จแล้ว
เสร็จแล้ว
สำหรับ resourcename ใน `find res / drawable * -type f -name '*. ???' '; ทำ
ทรัพยากร = `echo $ resourcename | xargs basename | sed "s / ^ \ (. * \) \ .... $ / \ 1 / g" `
count1 = `grep -rc" R \ .drawable \. $ {resource} "src | egrep -v ': 0 $' | ห้องสุขา -l`
count2 = `grep -rc" @drawable / $ {resource} "res / layout | egrep -v ': 0 $' | ห้องสุขา -l`
count3 = `grep -rc" @drawable / $ {resource} "res / drawable * / *. xml | egrep -v ': 0 $' | ห้องสุขา -l`
count4 = `grep -rc" @drawable / $ {resource} "res / menu | egrep -v ': 0 $' | ห้องสุขา -l`
count5 = `grep -rc" @drawable / $ {resource} "AndroidManifest.xml | egrep -v '^ 0 $' | ห้องสุขา -l`
ถ้า [$ count1 -eq 0 -a $ count2 -eq 0 -a $ count3 -eq 0 -a $ count4 -eq 0 -a $ count5 -eq 0]; แล้วก็
echo $ resourcename
Fi
เสร็จแล้ว
สำหรับ resourcename ใน `find res / layout / *. xml`; ทำ
ทรัพยากร = `echo $ resourcename | xargs basename | sed "s / ^ \ (. * \) \ .... $ / \ 1 / g" `
count1 = `grep -rc" R \ .layout \. $ {resource} "src | egrep -v ': 0 $' | ห้องสุขา -l`
ถ้า [$ count1 -eq 0]; แล้วก็
echo $ resourcename
Fi
เสร็จแล้ว
มันให้ผลลัพธ์แบบนี้กับฉัน:
res / values / activity_strings.xml: activity_more res / values / activity_strings.xml: activity_as_reply_to res / values / db_strings.xml: sql_backlog_count res / values / db_strings.xml: sql_backlog_update_last_resend ...
สำหรับการแปลที่ขาดหายไปเท่านั้น:
ใช้ InteliJ คลิกที่แถบพาเนลของ InteliJ ของคุณ: "วิเคราะห์"> "เรียกใช้การตรวจสอบตามชื่อ"> พิมพ์: การแปลที่ไม่สมบูรณ์
Custom scopeเลือกProduction classes->app->valuesเพื่อค้นหาสตริงที่ไม่ได้ใช้สี ...