Todos os anos, a Apple lança um novo iPhone, aumentando gradativamente o tamanho da RAM e da memória principal, adicionando potência ao chip. Hoje, no iPhone 15, você já pode rodar jogos de console como “Resident Evil 4”. E uma pergunta lógica pode surgir – devo otimizar o tamanho do meu aplicativo ou não posso dedicar mais tempo a ele? Resumindo, ainda vale a pena otimizar o tamanho. Neste artigo, reuni os motivos pelos quais é essencial fazer isso e forneci alguns métodos úteis de otimização. Problemas e Definições Então, vamos começar com a resposta mais banal à pergunta “Por que o tamanho é importante?” - As limitações da App Store. O App Store Connect simplesmente não permite que você baixe um arquivo que exceda o limite de tamanho especificado. Para aplicativos iOS e tvOS, verifique se seu aplicativo não excede os tamanhos máximos de arquivo nos sistemas operacionais compatíveis. O tamanho total descompactado do seu aplicativo deve ser inferior a 4 GB. Os aplicativos Apple Watch devem ter menos de 75 MB. Além disso, cada arquivo executável do Mach-O — por exemplo, app_name.app/app_name — não deve exceder esses tamanhos máximos de arquivo. Link Os arquivos específicos aos quais eles se referem podem ser um pouco confusos. Para entender melhor isso, vamos percorrer o processo de envio de sua inscrição ao App Store Connect. .xcarchive O primeiro passo é criar um arquivo. Este arquivo armazena uma coleção de artefatos de construção e informações relacionadas para um aplicativo iOS, macOS, watchOS ou tvOS. Temos a oportunidade de analisar o que exatamente e de que forma está incluído no arquivo. Entre os principais arquivos você encontrará: Pasta de produtos com seu App; dSYMs, (abreviação de “símbolos de depuração”), arquivos especiais gerados pelo Xcode com as informações necessárias para depuração, enfim, crash logs; Info.plist; Aliás, o arquivo do Aplicativo também pode ser aberto por “Mostrar conteúdo do pacote”, e entre os arquivos você encontrará o executável e o CodeResources, resultado da assinatura do código; ele monitora as assinaturas digitais de vários recursos do aplicativo (imagens, etc.). .ipa Voltando ao Xcode, após gerar o Archive, o botão fica disponível para você. Nesta fase, se transforma em . Distribute App .xcarchive .ipa Um arquivo pode ser considerado um pacote compactado que inclui uma pasta “Payload”. Dentro desta pasta “Payload”, está o pacote essencial “YourApp.app”. Dentro do pacote ".app", você encontrará todos os componentes críticos do seu aplicativo, incluindo recursos como .ipa imagens; arquivos plist; arquivos nib compactados; ; o arquivo executável Além disso, abriga recursos de assinatura de código para garantir a integridade e segurança do aplicativo. Para ver o interior do seu , clique em após distribuição, converta o tipo de para e apenas extraia. .ipa Export .ipa .zip Em resumo, o arquivo é o aplicativo empacotado que os usuários finais instalam em seus dispositivos iOS, enquanto o é um arquivo focado no desenvolvedor que contém vários ativos e informações de construção para o aplicativo. .ipa .xcarchive O é usado para distribuição, enquanto o é usado para depuração, arquivamento e fins de desenvolvimento adicional. Já o executável é o código central que executa as funções do aplicativo e está contido no pacote . .ipa .xcarchive .ipa Assim, as limitações da AppStore podem ser ilustradas da seguinte forma. Versão do sistema operacional Tamanho .ipa .ipa -> Carga útil -> Aplicativo -> tamanho do exe iOS 9.0 e posteriortvOS 9.0 e posterior 4GB 500MB iOS 7.X até iOS 8.X 2GB 60MB Porém, para estimar o tamanho da sua aplicação final, ou seja, quantos bytes um determinado usuário terá que instalar em seu dispositivo, serão necessárias ações adicionais, ou seja, gerar um relatório de tamanho da aplicação. A documentação descreve bem o procedimento para criá-lo, então deixarei um aqui. link O próximo motivo para pensar no tamanho do seu aplicativo é… a AppStore de novo, mas agora não estamos falando de restrições do sistema, mas sim da . Tudo é evidente aqui - quanto menor o tamanho, maior a taxa. velocidade de download Além disso, há um limite de 200 MB, atingindo o qual os usuários precisam se conectar a uma rede Wi-Fi para instalar o aplicativo. O atraso pode desencorajar os utilizadores e levar a taxas de abandono mais elevadas. Os algoritmos de busca e descoberta da App Store da Apple geralmente favorecem aplicativos menores, pois são mais fáceis para os usuários baixarem e experimentarem. Tamanhos menores de aplicativos podem melhorar potencialmente a visibilidade do seu aplicativo nos resultados de pesquisa e nas recomendações. Depois que o aplicativo estiver no dispositivo, seu tamanho ainda será importante. Aplicativos menores são iniciados mais rapidamente, proporcionando uma melhor experiência ao usuário. Quando um aplicativo otimiza o armazenamento, ele contribui para prolongar a vida útil da bateria, reduzir o espaço ocupado pelo aplicativo e melhorar a integridade do dispositivo. Como resultado, quanto mais pessoas estiverem satisfeitas com o iPhone, mais usuários em potencial você terá. Soluções Existem algumas dicas simples para evitar aumentar desnecessariamente o tamanho da sua aplicação durante o desenvolvimento. O primeiro deles é o trabalho consciente com imagens. Imagens Primeiro, escolha em vez de JPEG. HEIC fornece arquivos 50% menores em comparação com JPEG, ao mesmo tempo que mantém qualidade de imagem semelhante. Isso resulta em espaço de armazenamento reduzido no seu dispositivo. Arquivos menores são mais fáceis de transferir entre redes, bem como carregar e salvar em disco mais rapidamente. HEIC HEICs suportam transparência de imagem e capacidade de armazenar imagens suplementares contendo informações de profundidade e disparidade. Ele suporta compactação sem perdas e permite armazenar várias imagens em um único contêiner. Em segundo lugar, tente adotar (um formato de imagem vetorial baseado em XML usado para exibir gráficos vetoriais bidimensionais) em vez de PDF e PNG. Em contraste com as imagens raster, os gráficos vetoriais normalmente exibem tamanhos de arquivo menores, porque são caracterizados por equações matemáticas que definem formas e curvas, em vez de armazenar pixels individuais. SVG Inicialmente foi necessário adicionar 3 imagens com prefixos (para cada densidade de pixels). Depois foi adicionado suporte a PNG (= imagem vetorial com um determinado tamanho), mas ainda funcionou no nível de “cortar 3 PNGs do PDF quando montamos o projeto”. E só então foi possível usar SVG + incluir a caixa de seleção “usar data do vetor” no catálogo de ativos, reduzindo realmente o tamanho das imagens utilizadas + acrescentando a possibilidade de escala infinita, sem perda de qualidade. Em terceiro lugar, aproveite ao máximo os recursos dos . Os Catálogos de Ativos fornecem um armazenamento fácil de usar para múltiplas resoluções da mesma imagem. Além disso, os catálogos armazenam todos os ativos de imagem em um único formato otimizado com metadados em vez de arquivos individuais. Catálogos de Ativos Ele permite que a App Store forneça apenas os recursos necessários para seu dispositivo específico. Isso leva ao aumento da velocidade de download e já sabemos que os usuários não gostam de esperar. É possível configurar “sob demanda” no recurso, ou seja, o recurso será baixado no aparelho apenas se necessário, e após algum tempo de desuso, será removido. Link Não se esqueça que você tem um enorme catálogo de imagens “gratuitas” - . A Apple está constantemente trabalhando no aumento dos personagens, adicionando a capacidade de personalizar cores e até animações. Símbolos SF Assim, com fotos e outros recursos gráficos, tudo parece claro - usamos os formatos corretos e adicionamos um catálogo através do Assets. Sempre existe a oportunidade de não incluir grandes recursos na montagem final, mas simplesmente fazer upload da Internet quando necessário. Agora vamos falar sobre o código e o uso de bibliotecas. Gerenciamento de Estruturas Deixe-me lembrá-lo rapidamente sobre o Linking. Existem dois tipos: estático e dinâmico. Estático Dinâmico Quando ocorre a vinculação Tempo de construção Tempo de execução Onde as dependências são armazenadas No arquivo executável final Em bibliotecas dinâmicas separadas Como as dependências são compartilhadas A mesma cópia é usada por todas as instâncias do aplicativo Cada instância do aplicativo tem sua própria cópia Como as atualizações nas dependências são tratadas Reconstrua o aplicativo Atualizar a biblioteca dinâmica De acordo com o tema deste artigo, o armazenamento de dependências é especialmente importante para nós, e a vinculação dinâmica parece ser a nossa favorita. Bibliotecas dinâmicas não são vinculadas estaticamente a aplicativos clientes; eles não se tornam parte do arquivo executável. Em vez disso, bibliotecas dinâmicas podem ser carregadas (e vinculadas) em um aplicativo quando o aplicativo é iniciado ou durante a execução. Link Resumindo, optar por em vez de bibliotecas estáticas resulta em tamanhos menores de arquivos de aplicativos e menor uso inicial de memória. No entanto, ainda é importante encontrar um equilíbrio e evitar o uso excessivo de bibliotecas dinâmicas, pois isso pode criar um atraso no desempenho durante a inicialização do aplicativo. bibliotecas dinâmicas A Apple também recomenda a criação de uma base de código modular ( ) em seu aplicativo, o que pode ser útil ao compartilhar código com outros alvos, App Clipps, por exemplo. SPM O Swift Package Manager oferece uma maneira simplificada e nativa de gerenciar dependências em seus projetos Swift. Excesso de arquivos Uma das maneiras mais eficazes de reduzir o tamanho do seu aplicativo é remover todos os arquivos desnecessários. Esses arquivos extras podem ser, por exemplo, Read.me ou imagens restantes. Na verdade, logo no início do artigo, onde descobrimos o que é um .ipa, já aprendemos como encontrar todos os arquivos que irão para a AppStore: .ipa -> .zip -> App -> show package conteúdo. Descubra todos os recursos que você não precisa e los do seu aplicativo. fique à vontade para excluí- Conclusão Apenas para resumir isso. Ainda existem alguns motivos importantes pelos quais devemos ficar de olho no tamanho do nosso aplicativo: Limites da App Store; Velocidades de download e inicialização; Influência na vida útil da bateria do dispositivo; E existem alguns métodos para reduzir o tamanho do aplicativo: Formatos HEIC e SVG para imagens; Catálogos de Ativos; Vinculação dinâmica; Filtrando arquivos em excesso; Então só não se esqueça disso durante o desenvolvimento da sua rotina; torne-se mais inteligente a cada dia 🙃