Publicar um app já significou exportar uma pasta com trinta arquivos de ícone. Não mais: as duas plataformas aceitam um quadrado grande e derivam o resto. O que não sumiu foram as regras sobre o que esse quadrado pode conter — e são regras diferentes em cada plataforma, que é onde começa quase todo problema de ícone.
Os dois são quadrados, os dois querem o desenho preenchendo o quadro, e daí em diante divergem bastante.
Duas regras, e as duas são violadas o tempo todo:
Não arredonde os cantos você mesmo. O iOS aplica a própria máscara de quadrado arredondado. Se você já arredondou na exportação, a máscara arredonda o arredondamento e aparece uma borda escura visível onde sua curva e a do sistema não batem. Exporte um quadrado inteiro, até a borda.
Sem transparência. O ícone de 1024 não pode ter canal alfa nenhum. Fundo transparente não vira o papel de parede — normalmente é preenchido de preto, e é por isso que tantos ícones enviados parecem um logo flutuando sobre um ladrilho escuro. Pinte um fundo sólido.
Além disso: nada de capturas do seu próprio app dentro do ícone, e nada de palavras. O ícone aparece na tela inicial a uns 60 pontos. Texto nesse tamanho é textura, não linguagem.
O ícone adaptativo do Android são duas camadas — frente e fundo — de 108 × 108 dp cada. Isso dá 432 × 432 pixels na maior densidade comum.
Aqui está a parte que pega todo mundo. Só o centro é garantidamente visível. Os 18 dp externos de cada lado são reservados: o launcher os mascara e os usa no leve deslocamento de paralaxe quando você desliza a tela. O que fica visível é um círculo de 72 × 72 dp no meio — dois terços da largura.
Então tudo que importa tem que caber nesses dois terços centrais. A falha de sempre é um ícone desenhado para preencher os 108 inteiros, que chega no telefone com as bordas raspadas.
A reserva existe porque cada launcher aplica uma forma. O mesmo ícone vira círculo num aparelho, squircle noutro, quadrado arredondado ou gota em outro. Sua camada de fundo precisa ser cor chapada ou textura simples que sobreviva a qualquer um desses cortes — não uma forma com contorno próprio.
Essa gera um relato de bug quase toda vez que passa despercebida. Um ícone de notificação no Android não é o ícone do seu app. Precisa ser uma silhueta branca pura sobre fundo transparente: o sistema remove toda a cor e usa só o canal alfa.
Entregue um ícone colorido e cada pixel vira branco opaco — a notificação mostra um quadrado branco sem feição. O arquivo é perfeitamente válido, por isso passa na revisão e só aparece quando alguém recebe uma notificação.
Você desenha a 1024. Ele é exibido a uns 60 pontos na tela inicial, e bem menor em listas de ajustes e resultados de busca. É uma redução de cerca de dezessete vezes.
O único teste honesto é olhar em tamanho real numa tela inicial real, ao lado de outros apps. Julgado sozinho a 1024 pixels, quase todo ícone parece bom.
É tentador, afinal os dois são marcas quadradas da mesma identidade. Mas um favicon é desenhado para 16 pixels sem máscara, e um ícone de app é mascarado, arredondado e exibido vinte vezes maior. Um favicon ampliado para 1024 fica tosco; um ícone de app reduzido para 16 vira borrão. São parentes, não o mesmo arquivo.