Como evitar que recursos e códigos não utilizados de um Projeto da Biblioteca do Android entrem no meu APK?

9

Eu tenho um projeto de biblioteca do Android no meu espaço de trabalho do Eclipse, que eu uso como uma caixa de ferramentas exclusiva. Por acaso (1), acabei de descobrir que os recursos da biblioteca (animações xml, layouts XML, até mesmo drawables !!!) são colocados nos APKs dos projetos que usam a biblioteca, mesmo que eu não os use. / p>

Depois de ler O Android sempre empacota recursos não utilizados? Eu me pergunto se é normal. Como posso evitar isso? É a única maneira de ter projetos de bibliotecas diferentes?

EDIT : Eu encontrei, descompilando o .dex, esse código não usado também o transforma no apk.

(1) Eu estava tentando testar um novo ícone para meu aplicativo, /res/drawable/icon.png , mas o ícone padrão continuaria aparecendo. Eu removi a imagem e continuei mostrando o ícone padrão! Tinha que ser o /res/drawable-mdpi/icon.png da biblioteca .

    
por bigstones 06.04.2011 в 02:59
fonte

3 respostas

2

O novo sistema de compilação do Android tem um mecanismo de remoção de recursos incorporado nesse pode ser executado como uma etapa final no processo de criação. Use-o além de remover recursos que o lint identifica.

Note que o mecanismo de remoção de recursos é particularmente útil em conjunto com o Proguard (também fornecido com o sistema de compilação) e quando você está usando bibliotecas em seu projeto. A ideia é:

  • O Proguard remove as classes que você não está usando, incluindo aquelas que vieram de bibliotecas.
  • O processo acima pode excluir referências de código para recursos incluídos nessas bibliotecas.
  • Esses recursos não referenciados podem ser removidos do APK, porque não há mais código que os use.

A remoção de recursos não utilizados que o lint identifica ainda é útil porque os remove:

  • Acelera sua construção
  • Reduz a carga de manutenção do seu projeto.
por Fabian Tamp 16.07.2015 / 00:15
fonte
2

Proguard pode remover códigos não utilizados.

Mas não fará nada sobre recursos não utilizados e também ofuscará seu código. Você tem que pensar um pouco antes de usá-lo.

    
por f4. 06.04.2011 / 14:11
fonte
1

Como alguém disse antes, o Proguard pode remover o código não utilizado.

Para remover recursos não utilizados, você pode usar a ferramenta Android Lint do ADT 16. Ele ajudará você não apenas a remover os recursos não utilizados. recursos, mas também para encontrar possíveis bugs. Esta citação é de seu site oficial:

  

Aqui estão alguns exemplos dos tipos de erros que ele procura:

     
  • Traduções ausentes (e traduções não utilizadas)
  •   
  • Problemas de desempenho de layout (todos os problemas que a antiga ferramenta layoutopt costumava encontrar e muito mais)
  •   
  • Recursos não utilizados
  •   
  • Tamanhos de matriz inconsistentes (quando as matrizes são definidas em várias configurações)
  •   
  • Problemas de acessibilidade e internacionalização (sequências codificadas, falta de conteúdoDescrição, etc)
  •   
  • Problemas de ícones (como densidades ausentes, ícones duplicados, tamanhos errados, etc.)
  •   
  • Problemas de usabilidade (como não especificar um tipo de entrada em um campo de texto)
  •   
  • Erros de manifesto e muito mais.
  •   
    
por Andrei Buneyeu 14.12.2011 / 18:04
fonte