Hat jemand eine einzeilige, um nicht verwendete Bilder in einem Xcode-Projekt zu finden? (Angenommen, alle Dateien werden im Code oder in den Projektdateien nach Namen referenziert - keine durch Code generierten Dateinamen.)
Diese Dateien neigen dazu, sich über die Laufzeit eines Projekts aufzubauen, und es kann schwierig sein zu sagen, ob es sicher ist, ein bestimmtes PNG zu löschen.
Antworten:
Für Dateien, die nicht im Projekt enthalten sind, sondern nur im Ordner herumhängen, können Sie drücken
cmd ⌘+ alt ⌥+A
und sie werden nicht ausgegraut sein.
Für Dateien, auf die weder in xib noch im Code verwiesen wird, könnte Folgendes funktionieren:
quelle
Dies ist eine robustere Lösung - es prüft jede Bezugnahme auf die Basisnamen in einer beliebigen Textdatei. Beachten Sie die obigen Lösungen, die keine Storyboard-Dateien enthielten (völlig verständlich, sie waren zu diesem Zeitpunkt noch nicht vorhanden).
Ack macht das ziemlich schnell, aber es gibt einige offensichtliche Optimierungen, die vorgenommen werden müssen, wenn dieses Skript häufig ausgeführt wird. Dieser Code überprüft jeden Basisnamen zweimal, wenn Sie beispielsweise sowohl Retina- als auch Nicht-Retina-Assets haben.
quelle
brew install ack
.chmod a+x FindUnusedImages.sh
), und sie dann wie jedes andere Programm von bash ausführen./FindUnusedImages.sh
result=`ack --ignore-file=match:/.\.pbxproj/ -i "$file"`
Dies erfordert ack 2.0 und höherBitte probieren Sie LSUnusedResources aus .
Es wird stark von Jeffhodnetts Unused beeinflusst , aber ehrlich gesagt ist Unused sehr langsam und die Ergebnisse sind nicht ganz korrekt. Deshalb habe ich einige Leistungsoptimierungen vorgenommen. Die Suchgeschwindigkeit ist schneller als bei Nicht verwendeten.
quelle
Ich habe Romans Lösung ausprobiert und ein paar Verbesserungen hinzugefügt, um Retina-Bilder zu verarbeiten. Es funktioniert gut, aber denken Sie daran, dass Bildnamen programmgesteuert im Code generiert werden können und dieses Skript diese Bilder fälschlicherweise als nicht referenziert auflistet. Zum Beispiel könnten Sie haben
NSString *imageName = [NSString stringWithFormat:@"image_%d.png", 1];
Dieses Skript glaubt fälschlicherweise, dass
image_1.png
es nicht referenziert ist.Hier ist das modifizierte Skript:
quelle
Vielleicht können Sie versuchen, schlank , macht einen anständigen Job.
Update: Mit der Idee von emcmanus habe ich ein kleines Dienstprogramm ohne Bestätigung erstellt, nur um zusätzliche Einstellungen in einer Maschine zu vermeiden.
https://github.com/arun80/xcodeutils
quelle
Für mich funktioniert nur dieses Skript, das sogar den Speicherplatz in den Dateinamen verwaltet:
Bearbeiten
Aktualisiert, um
swift
Dateien und zu unterstützencocoapod
. Standardmäßig wird das Pods-Verzeichnis ausgeschlossen und nur die Projektdateien überprüft. Führen Sie--pod
attrbiute aus , um auch den Pods-Ordner zu überprüfen :/.finunusedimages.sh --pod
Hier ist das eigentliche Skript:
quelle
Ich habe die hervorragende Antwort von @EdMcManus geringfügig geändert, um Projekte mit Asset-Katalogen abzuwickeln.
Ich schreibe nicht wirklich Bash-Skripte. Wenn hier (wahrscheinlich) Verbesserungen vorgenommen werden müssen, lassen Sie es mich in den Kommentaren wissen und ich werde es aktualisieren.
quelle
Sie können ein Shell-Skript
grep
erstellen , das Ihren Quellcode enthält, und die gefundenen Bilder mit Ihrem Projektordner vergleichen.Hier die Männer für
GREP
undLS
Sie können ganz einfach Ihre gesamte Quelldatei schleifen, Bilder in einem Array oder etwas Ähnlichem speichern und verwenden
cat file.m | grep [-V] myImage.png
Mit diesem Trick können Sie alle Bilder in Ihrem Projektquellcode durchsuchen !!
hoffe das hilft!
quelle
Ich habe ein Lua-Skript geschrieben. Ich bin mir nicht sicher, ob ich es teilen kann, weil ich es bei der Arbeit gemacht habe, aber es funktioniert gut. Grundsätzlich macht es das:
Schritt eins - statische Bildreferenzen (das einfache Bit, das von den anderen Antworten abgedeckt wird)
Schritt zwei - dynamische Bildreferenzen (das lustige Bit)
Löscht dann alles, was in beiden Suchvorgängen nicht gefunden wurde.
Der Randfall ist, dass Bildnamen, die von einem Server stammen, nicht behandelt werden. Um dies zu handhaben, nehmen wir den Servercode in diese Suche auf.
quelle
Sie können FauxPas App für Xcode ausprobieren . Es ist wirklich gut, die fehlenden Bilder und viele andere Probleme / Verstöße im Zusammenhang mit dem Xcode-Projekt zu finden.
quelle
Mit den anderen Antworten ist dies ein gutes Beispiel dafür, wie Sie Bilder in zwei Verzeichnissen ignorieren und nicht nach Vorkommen der Bilder in den Dateien pbxproj oder xcassets suchen (Vorsicht mit dem App-Symbol und den Begrüßungsbildschirmen). Ändern Sie das * in --ignore-dir = *. Xcassets entsprechend Ihrem Verzeichnis:
quelle
Ich habe dieses Framework verwendet: -
http://jeffhodnett.github.io/Unused/
Funktioniert verdammt gut! Nur zwei Stellen, an denen ich Probleme gesehen habe, sind, wenn Bildnamen vom Server stammen und wenn sich der Name des Bild-Assets vom Namen des Bildes im Asset-Ordner unterscheidet ...
quelle
Verwenden Sie http://jeffhodnett.github.io/Unused/ , um die nicht verwendeten Bilder zu finden.
quelle
Ich habe ein Python-Skript erstellt, um die nicht verwendeten Bilder zu identifizieren: 'unused_assets.py' @ gist . Es kann folgendermaßen verwendet werden:
Hier sind einige Regeln für die Verwendung des Skripts:
Einschränkungen in der ersten Version:
Ich werde versuchen, es im Laufe der Zeit zu verbessern, basierend auf dem Feedback, aber die erste Version sollte für die meisten gut sein.
Nachfolgend finden Sie den Code. Der Code sollte selbsterklärend sein, da ich jedem wichtigen Schritt entsprechende Kommentare hinzugefügt habe .
quelle
Ich empfehle auch, FengNiao auszuprobieren .
quelle