Saya memiliki proyek Android yang sangat besar dengan banyak string dinyatakan dalam strings.xml. Saya ingin menghapus string yang tidak digunakan di strings.xml.
Apakah ada cara mudah untuk melakukannya?
Saya memiliki proyek Android yang sangat besar dengan banyak string dinyatakan dalam strings.xml. Saya ingin menghapus string yang tidak digunakan di strings.xml.
Apakah ada cara mudah untuk melakukannya?
Jawaban:
Di Android Studio :
Menu -> Analisis -> Jalankan Inspeksi berdasarkan Nama -> Sumber daya yang tidak digunakan
Centang kotak File mask dan letakkan strings.xmldi bidang teks.
tools:ignore="UnusedResources"
Berikut ini solusi lain yang cukup mudah. Di menu Android Studio, buka
Refactor> Hapus Sumber Daya yang tidak digunakan ... .
Klik Pratinjau untuk melihat apa sumber daya yang tidak digunakan dan secara selektif menghapusnya.
Dalam kasus saya "Jalankan Inspeksi berdasarkan Nama" tidak berfungsi, meskipun saya menggunakan "Hapus sumber daya yang tidak digunakan".
Larutan:
Saya tidak tahu mengapa "Hapus Sumber Daya yang Tidak Digunakan" bekerja satu arah tetapi tidak yang lain.
Dengan ADT 16 Anda dapat melakukannya sesederhana mungkin. Perbarui ke ADT 16 dan gunakan Android Lint . Ini alat yang luar biasa. Itu dapat menemukan semua sumber daya yang tidak digunakan (tidak hanya string) dan banyak lagi. Dari situs resminya:
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>
Untuk memeriksa string.xml.
Sangat mudah (setidaknya dalam versi Eclipse saya)
Di Eclipse untuk Android (saya punya versi v22.6.2-1085508)
Sekarang ketika Anda membuka strings.xml, Anda akan melihat bahwa string yang tidak digunakan disorot.
Anda dapat memperbaiki masalah potensial lainnya.
Di Android Studio Tekan
Ctlr + Alt + Shift + i
Pilih -> Sumber daya yang tidak digunakan.
Ini menunjukkan kepada Anda string dan ikon yang tidak digunakan.
Terima kasih Selamat coding :)
Ini adalah bagaimana saya melakukannya dengan Android 3.3.
Periksa perubahan yang belum disimpan ke repositori Anda.
Catatan: Cobalah membangun proyek. Jika kompilasi gagal, kemungkinan besar strings.xml ini dirujuk dari beberapa tata letak / menu xmls, yang sendiri tidak digunakan. Jadi tata letak xmls itu juga dapat dihapus secara manual!
Bangun dan jalankan. Uji!
Jalankan skrip ini dari root proyek Anda.
untuk resourcefile di `find res / values / *. xml`; melakukan
untuk stringname di `grep '. * / \ 1 / g'`; melakukan
count1 = `grep -rc" R.string. $ {stringname} "src | egrep -v ': 0 $' | wc -l`
count2 = `grep -rc" @string / $ {stringname} "res / layout | egrep -v ': 0 $' | wc -l`
count3 = `grep -rc" @string / $ {stringname} "res / menu | egrep -v ': 0 $' | wc -l`
count4 = `grep -rc" @string / $ {stringname} "AndroidManifest.xml | egrep -v '^ 0 $' | wc -l`
count5 = `grep -rc" @string / $ {stringname} "res / xml | egrep -v ': 0 $' | wc -l`
jika [$ count1 -eq 0 -a $ count2 -eq 0 -a $ count3 -eq 0 -a $ count4 -eq 0 -a $ count5 -eq 0]; kemudian
echo $ resourcefile: $ stringname
fi
selesai
selesai
untuk resourcename di `find res / drawable * -type f -name '*. ???'`; melakukan
resource = `echo $ resourcename | xargs basename | sed "s / ^ \ (. * *) \ .... $ / \ 1 / g" `
count1 = `grep -rc" R \ .drawable \. $ {resource} "src | egrep -v ': 0 $' | wc -l`
count2 = `grep -rc" @drawable / $ {resource} "res / layout | egrep -v ': 0 $' | wc -l`
count3 = `grep -rc" @drawable / $ {resource} "res / drawable * / *. xml | egrep -v ': 0 $' | wc -l`
count4 = `grep -rc" @drawable / $ {resource} "res / menu | egrep -v ': 0 $' | wc -l`
count5 = `grep -rc" @drawable / $ {resource} "AndroidManifest.xml | egrep -v '^ 0 $' | wc -l`
jika [$ count1 -eq 0 -a $ count2 -eq 0 -a $ count3 -eq 0 -a $ count4 -eq 0 -a $ count5 -eq 0]; kemudian
echo $ resourcename
fi
selesai
untuk nama sumber di `find res / layout / *. xml`; melakukan
resource = `echo $ resourcename | xargs basename | sed "s / ^ \ (. * *) \ .... $ / \ 1 / g" `
count1 = `grep -rc" R \ .layout \. $ {resource} "src | egrep -v ': 0 $' | wc -l`
if [$ count1 -eq 0]; kemudian
echo $ resourcename
fi
selesai
Ini memberi saya output semacam ini:
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 ...
Custom scope, memilihProduction classes->app->valuesuntuk menemukan string, warna yang tidak digunakan ...