Czy ktoś ma jedną linię, aby znaleźć nieużywane obrazy w projekcie Xcode? (Zakładając, że wszystkie pliki są przywoływane przez nazwę w kodzie lub w plikach projektu - brak nazw plików wygenerowanych przez kod).
Te pliki mają tendencję do gromadzenia się w czasie trwania projektu i trudno jest stwierdzić, czy można bezpiecznie usunąć dany plik png.
Odpowiedzi:
W przypadku plików, które nie są zawarte w projekcie, ale po prostu kręcą się w folderze, możesz nacisnąć
cmd ⌘+ alt ⌥+A
i nie będą wyszarzone.
W przypadku plików, do których nie ma odniesienia ani w xib, ani w kodzie, coś takiego może działać:
źródło
Jest to bardziej niezawodne rozwiązanie - sprawdza wszelkie odniesienia do nazwy bazowej w dowolnym pliku tekstowym. Zwróć uwagę na powyższe rozwiązania, które nie obejmowały plików scenorysu (całkowicie zrozumiałe, nie istniały w tamtym czasie).
Ack sprawia, że jest to dość szybkie, ale istnieje kilka oczywistych optymalizacji, które należy wprowadzić, jeśli ten skrypt działa często. Ten kod sprawdza dwukrotnie każdą nazwę basenową, jeśli na przykład masz oba zasoby siatkówkowe / inne niż siatkówkowe.
źródło
brew install ack
.chmod a+x FindUnusedImages.sh
), a następnie uruchomić go jak każdy inny program z basha./FindUnusedImages.sh
result=`ack --ignore-file=match:/.\.pbxproj/ -i "$file"`
To wymaga potwierdzenia w wersji 2.0 i nowszejSpróbuj LSUnusedResources .
Jest pod silnym wpływem Unused Jeffhodnetta , ale szczerze mówiąc, Unused jest bardzo powolny, a wyniki nie są całkowicie poprawne. Zrobiłem więc pewną optymalizację wydajności, prędkość wyszukiwania jest szybsza niż nieużywana.
źródło
Wypróbowałem rozwiązanie Romana i dodałem kilka poprawek do obsługi obrazów siatkówki. Działa dobrze, ale pamiętaj, że nazwy obrazów mogą być generowane programowo w kodzie, a ten skrypt nieprawidłowo wyświetlałby te obrazy jako bez odwołań. Na przykład możesz mieć
NSString *imageName = [NSString stringWithFormat:@"image_%d.png", 1];
Ten skrypt błędnie pomyśli, że nie
image_1.png
ma odwołań.Oto zmodyfikowany skrypt:
źródło
Może możesz spróbować smukły , wykonuje dobrą robotę.
aktualizacja: Z pomysłem emcmanus, poszedłem do przodu i stworzyłem małe narzędzie bez potwierdzenia, aby uniknąć dodatkowej konfiguracji w maszynie.
https://github.com/arun80/xcodeutils
źródło
Działa tylko ten skrypt, który obsługuje nawet spacje w nazwach plików:
Edytować
Zaktualizowano do obsługi
swift
plików icocoapod
. Domyślnie wyklucza katalog Pods i sprawdza tylko pliki projektu. Aby uruchomić, aby sprawdzić również folder Pods, uruchom z--pod
attrbiute:/.finunusedimages.sh --pod
Oto rzeczywisty skrypt:
źródło
Dokonałem niewielkiej modyfikacji doskonałej odpowiedzi udzielonej przez @EdMcManus, aby obsługiwać projekty wykorzystujące katalogi zasobów.
Naprawdę nie piszę skryptów basha, więc jeśli są jakieś ulepszenia do wprowadzenia tutaj (prawdopodobnie), daj mi znać w komentarzach, a zaktualizuję to.
źródło
Możesz stworzyć skrypt powłoki, który
grep
będzie kodem źródłowym i porównać znalezione obrazy z folderem projektu.Tutaj mężczyzna (y) dla
GREP
iLS
Z łatwością możesz zapętlić cały plik źródłowy, zapisywać obrazy w tablicy lub coś równego i używać
cat file.m | grep [-V] myImage.png
Dzięki tej sztuczce możesz przeszukiwać wszystkie obrazy w kodzie źródłowym projektu !!
mam nadzieję że to pomoże!
źródło
Napisałem skrypt lua, nie jestem pewien, czy mogę go udostępnić, ponieważ zrobiłem to w pracy, ale działa dobrze. Zasadniczo robi to:
Krok pierwszy - odniesienia do statycznego obrazu (łatwy bit, objęty innymi odpowiedziami)
Krok drugi - dynamiczne odniesienia do obrazów (zabawny bit)
Następnie usuwa wszystko, czego nie znalazł w żadnym wyszukiwaniu.
Problemem skrajnym jest to, że nazwy obrazów pochodzące z serwera nie są obsługiwane. Aby sobie z tym poradzić, uwzględniamy kod serwera w tym wyszukiwaniu.
źródło
Możesz wypróbować aplikację FauxPas dla Xcode . Jest naprawdę dobry w ustalaniu brakujących obrazów i wielu innych problemów / naruszeń związanych z projektem Xcode.
źródło
Korzystając z innych odpowiedzi, ta jest dobrym przykładem ignorowania obrazów w dwóch katalogach i nie przeszukiwania wystąpień obrazów w plikach pbxproj lub xcassets (uważaj na ikonę aplikacji i ekrany powitalne). Zmień * w --ignore-dir = *. Xcassets, aby pasował do twojego katalogu:
źródło
Użyłem tego frameworka: -
http://jeffhodnett.github.io/Unused/
Działa cholernie dobrze! Tylko 2 miejsca, w których widziałem problemy, dotyczą sytuacji, gdy nazwy obrazów pochodzą z serwera i gdy nazwa zasobu obrazu różni się od nazwy obrazu w folderze zasobów ...
źródło
Użyj http://jeffhodnett.github.io/Unused/, aby znaleźć nieużywane obrazy.
źródło
Stworzyłem skrypt w Pythonie, aby zidentyfikować nieużywane obrazy: „unused_assets.py” @ gist . Można go używać w następujący sposób:
Oto kilka zasad korzystania ze skryptu:
Ograniczenia w pierwszej wersji:
Z czasem postaram się to ulepszyć, na podstawie opinii zwrotnych, jednak pierwsza wersja powinna być dobra dla większości.
Poniżej kod. Kod powinien być zrozumiały, ponieważ dodałem odpowiednie komentarze do każdego ważnego kroku .
źródło