O que são arquivos iml no Android Studio?

186

O que são arquivos iml no projeto Android Studio? Eu li que é um arquivo de configuração para módulos. Não entendo como ele funciona e não posso apenas usar scripts gradle para integrar-se aos módulos externos que você adiciona ao seu projeto.

Além disso, na maioria das vezes, o AS os gera, então não posso controlar o comportamento do projeto. Se eu tenho uma equipe que trabalha em diferentes IDEs, como Eclipse e AS, é possível configurar o meu projeto para que ele seja independente do IDE?

Não entendo completamente como esse sistema funciona.

shadox
fonte

Respostas:

172

O que são arquivos iml no projeto Android Studio?

Uma pesquisa no Google iml fileaparece:

IML é um arquivo de módulo criado pelo IntelliJ IDEA, um IDE usado para desenvolver aplicativos Java. Ele armazena informações sobre um módulo de desenvolvimento, que pode ser um componente Java, Plugin, Android ou Maven; salva os caminhos, dependências e outras configurações do módulo.

( desta página )

por que não usar scripts gradle para integrar-se a módulos externos adicionados ao seu projeto.

Você "usa scripts gradle para integrar-se a módulos externos" ou seus próprios módulos.

No entanto, Gradle não é o modelo de projeto nativo do IntelliJ IDEA - que é separado, mantido em .imlarquivos e os metadados em .idea/diretórios. No Android Studio, esse material é amplamente gerado a partir dos scripts de construção do Gradle, e é por isso que às vezes você é solicitado a "sincronizar o projeto com os arquivos do Gradle" quando altera arquivos como esse build.gradle. É também por isso que você não se incomoda em colocar .imlarquivos ou .idea/no controle de versão, pois seu conteúdo será regenerado.

Se eu tiver uma equipe que trabalhe com diferentes IDEs, como Eclipse e AS, como tornar o IDE independente de projeto?

Em grande medida, você não pode.

Você pode ter um projeto Android que use a estrutura de diretórios no estilo Eclipse (por exemplo, recursos e manifesto no diretório raiz do projeto). Você pode ensinar a Gradle, via build.gradle, como encontrar arquivos nessa estrutura. No entanto, outros metadados ( compileSdkVersion, dependências etc.) não serão tão facilmente replicados.

Outras alternativas incluem:

  • Mova todos para outro sistema de compilação, como o Maven, igualmente integrado (ou não, dependendo da sua perspectiva) para o Eclipse e o Android Studio

  • Espero que Andmore decole em breve, para que talvez você possa ter um IDE Eclipse capaz de criar projetos Android a partir de scripts de construção Gradle

  • Todos usam um IDE

CommonsWare
fonte
1
o que acontece se eu remover o arquivo iml? vai ficar tudo bem?
E-Place
1
@ E-Place: se você estiver usando o Android Studio, será necessário que o Android Studio o gere novamente, normalmente importando o projeto. O Android Studio não pode funcionar sem ele.
CommonsWare
como o iml pode ser criado? eu tenho mais de 4 arquivos iml #
-E-Place
@ E-Place: Normalmente, você terá um .imlarquivo na raiz do projeto, mais um .imlarquivo em cada diretório de módulo (por exemplo, app/). Você pode tentar Ferramentas> Android> Sincronizar projeto com arquivos Gradle. Caso contrário, pode ser necessário reimportar o projeto. Se você tiver outras preocupações nessa área, faça uma nova pergunta sobre estouro de pilha.
CommonsWare
1
Você pode ter todos usam o mesmo IDE, pelo menos em relação aos *.imlarquivos e .idea/diretórios, supondo que você está distribuindo / sincronizar os arquivos usando gitou similar. Por exemplo git, verifique se os arquivos que você não deseja sincronizar estão mencionados no .gitignorearquivo, como sugere @Pavel Synek, abaixo. Você precisará excluí-los a partir do repositório e regenerar / restaurá-los localmente, mas isso é apenas mv, git commite mv.
Sarah Messer
76

Adicionar .ideae *.imlpara .gitignore, você não precisa desses arquivos para importar e compilar o projeto com sucesso.

Pavel Synek
fonte
16
Ok, mas o que são? Como eles funcionam e qual impacto eles têm? Estou pesquisando a fonte de outro projeto e há um módulo no arquivo iml que está presente apenas lá, por gigya, por exemplo, e não o vejo em nenhum outro lugar, exceto no manifesto. Então, esse módulo está presente no projeto ou não?
Shadox
3
.ideacomo um todo nunca deve ser ignorado. Ele contém vários arquivos, como regras de fiapos e dicionários personalizados, que uma equipe absolutamente deseja verificar no controle de versão.
M-Pixel
2
Isso nem tenta responder à pergunta.
daisy
12

São arquivos de projeto, que contêm as informações e os metadados do módulo.

Basta adicionar *.imla .gitignore.

No Android Studio: pressione CTRL+ F9para reconstruir seu projeto. Os *.imlarquivos ausentes serão gerados.

Lobo vermelho
fonte
2

Esses arquivos são criados e usados ​​pelo editor do Android Studio.

Você não precisa fazer check-in desses arquivos para controlar a versão.

O Git usa o arquivo .gitignore, que contém a lista de arquivos e diretórios, para saber a lista de arquivos e diretórios que não precisam ser registrados.

O Android studio cria automaticamente arquivos .gitingnore que listam todos os arquivos e diretórios que não precisam ser registrados em nenhum controle de versão.

Arnav Rao
fonte