Adakah yang punya satu baris untuk menemukan gambar yang tidak digunakan dalam proyek Xcode? (Dengan asumsi semua file direferensikan dengan nama dalam kode atau file proyek - tidak ada nama file yang dihasilkan kode.)
File-file ini cenderung menumpuk selama umur proyek dan mungkin sulit untuk mengetahui apakah aman untuk menghapus png tertentu.
Jawaban:
Untuk file yang tidak termasuk dalam proyek, tetapi hanya berkeliaran di folder, Anda dapat menekan
cmd ⌘+ alt ⌥+A
dan mereka tidak akan berwarna abu-abu.
Untuk file yang tidak direferensikan baik dalam xib maupun dalam kode, sesuatu seperti ini mungkin berfungsi:
sumber
Ini adalah solusi yang lebih kuat - ini memeriksa referensi apa pun ke nama dasar dalam file teks apa pun. Perhatikan solusi di atas yang tidak menyertakan file storyboard (dapat dimengerti sepenuhnya, saat itu tidak ada).
Ack membuatnya cukup cepat, tetapi ada beberapa pengoptimalan yang jelas harus dilakukan jika skrip ini sering berjalan. Kode ini memeriksa setiap nama dasar dua kali jika Anda memiliki aset retina / non-retina, misalnya.
sumber
brew install ack
.chmod a+x FindUnusedImages.sh
), lalu menjalankannya seperti program lain dari bash./FindUnusedImages.sh
result=`ack --ignore-file=match:/.\.pbxproj/ -i "$file"`
Ini membutuhkan ack 2.0 dan yang lebih baruSilakan mencoba LSUnusedResources .
Ini sangat dipengaruhi oleh Jeffhodnett's Unused , tapi jujur Unused sangat lambat, dan hasilnya tidak sepenuhnya benar. Jadi saya membuat beberapa optimasi kinerja, kecepatan pencarian lebih cepat daripada yang tidak digunakan.
sumber
Saya mencoba solusi Roman, dan saya menambahkan beberapa penyesuaian untuk menangani gambar retina. Ini berfungsi dengan baik, tetapi ingat bahwa nama gambar dapat dibuat secara terprogram dalam kode, dan skrip ini akan salah mencantumkan gambar ini sebagai tidak direferensikan. Misalnya, Anda mungkin pernah
NSString *imageName = [NSString stringWithFormat:@"image_%d.png", 1];
Skrip ini akan salah mengira
image_1.png
tidak direferensikan.Berikut skrip yang dimodifikasi:
sumber
Mungkin Anda bisa mencoba ramping , melakukan pekerjaan yang layak.
update: Dengan ide emcmanus, saya melanjutkan dan membuat util kecil tanpa ack hanya untuk menghindari penyiapan tambahan di mesin.
https://github.com/arun80/xcodeutils
sumber
Hanya skrip ini yang berfungsi untuk saya yang bahkan menangani ruang di nama file:
Edit
Diperbarui untuk mendukung
swift
file dancocoapod
. Secara default tidak termasuk direktori Pods dan hanya memeriksa file proyek. Untuk menjalankan untuk memeriksa folder Pods juga, jalankan dengan--pod
attrbiute:/.finunusedimages.sh --pod
Berikut ini skrip aslinya:
sumber
Saya membuat sedikit modifikasi pada jawaban luar biasa yang diberikan oleh @EdMcManus untuk menangani proyek yang menggunakan katalog aset.
Saya tidak benar-benar menulis skrip bash, jadi jika ada perbaikan yang harus dilakukan di sini (kemungkinan) beri tahu saya di komentar dan saya akan memperbaruinya.
sumber
Anda dapat membuat skrip shell sebagai
grep
kode sumber Anda dan membandingkan gambar yang didirikan dengan folder proyek Anda.Di sini pria untuk
GREP
danLS
Dengan mudah Anda dapat mengulang semua file sumber Anda, menyimpan gambar dalam array atau sesuatu yang setara dan digunakan
cat file.m | grep [-V] myImage.png
Dengan trik ini, Anda dapat mencari semua gambar dalam kode sumber proyek Anda !!
semoga ini membantu!
sumber
Saya menulis skrip lua, saya tidak yakin dapat membagikannya karena saya melakukannya di tempat kerja, tetapi berfungsi dengan baik. Pada dasarnya ini melakukan ini:
Langkah satu- referensi gambar statis (bagian yang mudah, ditutupi oleh jawaban lain)
Langkah kedua- referensi gambar dinamis (bagian yang menyenangkan)
Kemudian hapus apa pun yang tidak ditemukan di kedua penelusuran.
Kasus tepi adalah bahwa nama gambar yang berasal dari server tidak ditangani. Untuk menangani ini kami menyertakan kode server dalam pencarian ini.
sumber
Anda dapat mencoba Aplikasi FauxPas untuk Xcode . Sangat bagus dalam menemukan gambar yang hilang dan banyak masalah / pelanggaran lain yang terkait dengan proyek Xcode.
sumber
Menggunakan jawaban lain, yang satu ini adalah contoh yang baik tentang bagaimana mengabaikan gambar pada dua direktori dan tidak mencari kemunculan gambar pada file pbxproj atau xcassets (Hati-hati dengan ikon aplikasi dan layar splash). Ubah * di --ignore-dir = *. Xcassets agar sesuai dengan direktori Anda:
sumber
Saya menggunakan kerangka ini: -
http://jeffhodnett.github.io/Unused/
Bekerja dengan sangat baik! Hanya 2 tempat saya melihat masalah adalah ketika nama gambar berasal dari server dan ketika nama aset gambar berbeda dari nama gambar di dalam folder aset ...
sumber
Gunakan http://jeffhodnett.github.io/Unused/ untuk menemukan gambar yang tidak digunakan.
sumber
Saya telah membuat skrip python untuk mengidentifikasi gambar yang tidak digunakan: 'unused_assets.py' @ gist . Ini bisa digunakan seperti ini:
Berikut beberapa aturan untuk menggunakan skrip:
Batasan di versi pertama:
Saya akan mencoba memperbaikinya dari waktu ke waktu, berdasarkan umpan balik, namun versi pertama seharusnya bagus untuk sebagian besar.
Silakan temukan di bawah kode. Kode harus cukup jelas karena saya telah menambahkan komentar yang sesuai untuk setiap langkah penting .
sumber
Saya juga merekomendasikan untuk mencoba FengNiao .
sumber