Alguém tem uma linha para localizar imagens não utilizadas em um projeto Xcode? (Supondo que todos os arquivos sejam referenciados por nome no código ou nos arquivos de projeto - nenhum nome de arquivo gerado por código.)
Esses arquivos tendem a se acumular ao longo da vida de um projeto e pode ser difícil dizer se é seguro excluir qualquer PNG.
Respostas:
Para arquivos que não estão incluídos no projeto, mas apenas perdidos na pasta, você pode pressionar
cmd ⌘+ alt ⌥+A
e eles não ficarão esmaecidos.
Para arquivos que não são referenciados nem no xib nem no código, algo assim pode funcionar:
fonte
Esta é uma solução mais robusta - ela verifica qualquer referência ao nome de base em qualquer arquivo de texto. Observe as soluções acima que não incluem arquivos de storyboard (completamente compreensíveis, eles não existiam na época).
Ack torna isso muito rápido, mas há algumas otimizações óbvias a serem feitas se esse script for executado com frequência. Este código verifica cada nome de base duas vezes se você tiver ativos retina / não retina, por exemplo.
fonte
brew install ack
.chmod a+x FindUnusedImages.sh
), então execute-o como qualquer outro programa do bash./FindUnusedImages.sh
result=`ack --ignore-file=match:/.\.pbxproj/ -i "$file"`
Isso requer ack 2.0 e superiorPor favor, experimente LSUnusedResources .
É fortemente influenciado por jeffhodnett's Unused , mas honestamente Unused é muito lento e os resultados não são totalmente corretos. Então fiz algumas otimizações de desempenho, a velocidade de pesquisa é mais rápida do que não usada.
fonte
Tentei a solução de Roman e adicionei alguns ajustes para lidar com imagens de retina. Funciona bem, mas lembre-se de que os nomes das imagens podem ser gerados programaticamente no código, e esse script listaria incorretamente essas imagens como não referenciadas. Por exemplo, você pode ter
NSString *imageName = [NSString stringWithFormat:@"image_%d.png", 1];
Este script pensará incorretamente que
image_1.png
não é referenciado.Aqui está o script modificado:
fonte
Pode ser que você tente esbelto , faz um trabalho decente.
update: Com a ideia emcmanus, fui em frente e criei um pequeno utilitário sem ack apenas para evitar configuração adicional em uma máquina.
https://github.com/arun80/xcodeutils
fonte
Apenas este script está funcionando para mim, que está até mesmo controlando o espaço nos nomes dos arquivos:
Editar
Atualizado para suportar
swift
arquivos ecocoapod
. Por padrão, ele exclui o diretório de pods e verifica apenas os arquivos do projeto. Para executar a verificação da pasta Pods também, execute com o--pod
atributo:/.finunusedimages.sh --pod
Aqui está o script real:
fonte
Fiz uma pequena modificação na excelente resposta fornecida por @EdMcManus para lidar com projetos que utilizam catálogos de ativos.
Eu realmente não escrevo scripts bash, então se houver melhorias a serem feitas aqui (provavelmente), deixe-me saber nos comentários e eu irei atualizá-los.
fonte
Você pode fazer um script de shell que
grep
contém o seu código-fonte e comparar as imagens encontradas com a pasta do seu projeto.Aqui o (s) homem (s) para
GREP
eLS
Facilmente, você pode fazer um loop em todo o seu arquivo de origem, salvar imagens em array ou algo igual e usar
cat file.m | grep [-V] myImage.png
Com este truque, você pode pesquisar todas as imagens no código-fonte do seu projeto !!
espero que isto ajude!
fonte
Eu escrevi um roteiro lua, não tenho certeza se posso compartilhá-lo porque fiz isso no trabalho, mas funciona bem. Basicamente, ele faz isso:
Etapa um - referências de imagens estáticas (a parte fácil, coberta pelas outras respostas)
Etapa dois - referências de imagens dinâmicas (a parte divertida)
Em seguida, exclui tudo o que não encontrou em nenhuma das pesquisas.
O caso extremo é que os nomes das imagens que vêm de um servidor não são tratados. Para lidar com isso, incluímos o código do servidor nesta pesquisa.
fonte
Você pode experimentar o FauxPas App for Xcode . É muito bom descobrir as imagens que faltam e muitos outros problemas / violações relacionados ao projeto Xcode.
fonte
Usando as outras respostas, este é um bom exemplo de como ignorar imagens em dois diretórios e não pesquisar ocorrências das imagens nos arquivos pbxproj ou xcassets (cuidado com o ícone do aplicativo e as telas iniciais). Altere o * no --ignore-dir = *. Xcassets para corresponder ao seu diretório:
fonte
Eu usei esta estrutura: -
http://jeffhodnett.github.io/Unused/
Funciona muito bem! Apenas 2 lugares onde vi problemas são quando os nomes das imagens são do servidor e quando o nome do recurso da imagem é diferente do nome da imagem dentro da pasta do recurso ...
fonte
Use http://jeffhodnett.github.io/Unused/ para encontrar as imagens não utilizadas.
fonte
Eu criei um script python para identificar as imagens não utilizadas: 'unused_assets.py' @ gist . Ele pode ser usado assim:
Aqui estão algumas regras para usar o script:
Limitações na primeira versão:
Vou tentar melhorá-lo com o tempo, com base no feedback, mas a primeira versão deve ser boa para a maioria.
Encontre abaixo o código. O código deve ser autoexplicativo, pois adicionei comentários apropriados a cada etapa importante .
fonte
Também recomendo experimentar o FengNiao .
fonte