Eu tenho um projeto de amostra, com a seguinte configuração:
/root
+ Pure Java Lib
+ Android Test Lib
+ Android Test Project
Onde o ' Test Project ' depende da ' Test Lib ', e o último depende da ' Pure Java Lib ' A compilação do projeto e o lançamento dessa configuração funcionam perfeitamente.
Agora estou pensando em importar meu espaço de trabalho anterior do Eclipse e trabalhar com o Android studio, o problema é que a configuração do projeto é diferente e gostaria de mantê-lo dessa maneira.
por exemplo, se usar o exemplo anterior:
/root
+ Android Test Lib
+ Android Test Project
/Some Other folder (another repository for example)
+ Pure Java Lib
Eu tentei muitas configurações, mas não encontrei uma maneira de fazer referência a um projeto fora do escopo da pasta pai (' root ' no caso de exemplo).
Em muitas plataformas / módulos, você pode usar o '..' para subir nas pastas, mas isso não funcionou para mim, talvez eu tenha usado errado.
Alguém sabe como isso pode ser alcançado com Gradle?
ATUALIZAR
Vou tentar ser mais genérico:
/C:/
/Project A
+ Module 1 - Pure Java
+ Module 2 - Android Test Lib
+ Module 3 - Android Test Project
/Project B
+ Module 1 - Pure Java
+ Module 2 - Pure Java
+ Module 3 - Pure Java
Eu gostaria de usar o Módulo 1 do projeto B , no projeto A .
ATUALIZAÇÃO: 09-03-19
Eu vi isso agora e preciso atualizar ... depois de quase 6 anos, hoje sou mais sábio e posso dizer com certeza que o problema foi eu ter entendido mal o conceito de "Fonte da verdade".
Embora ter uma referência a uma biblioteca seja um bom conceito, e possa parecer a "Fonte da verdade", a REAL "Fonte da verdade" seria a versão do código que cada projeto está usando dessa biblioteca, pois a biblioteca por si só tem versões .. muitas versões e a "Fonte da verdade" é relativa ao projeto que está usando a biblioteca.
A maneira correta seria usar o que a maioria dos desenvolvedores não gosta, ou seja, sub-módulos git, e sim duplicar as fontes em cada projeto, pois há mais chances de que cada projeto use uma versão diferente do código.
Você precisaria, no entanto, apontar para todos os seus projetos para usar a versão mais recente e melhor de todas as suas bibliotecas. O que é um desafio por si só
A razão pela qual essa é a maneira correta de desenvolver um projeto com fontes de biblioteca é que isso pode ser dimensionado ... você pode ter centenas de projetos, cada um com sua própria configuração de biblioteca.
fonte
Respostas:
Supondo que Some Other Folder seja um projeto gradle, você pode adicionar algo como o seguinte ao seu arquivo settings.gradle:
fonte
Você precisa colocar em seu arquivo settings.gradle estas linhas:
Então você deve adicionar seu builde.gradle (Module: app) no diretório árvore de dependências , esta linha:
ou acesse Estrutura do projeto > aplicativo > Dependências , clique em Adicionar , escolha 3 Dependências do módulo e selecione seu módulo
fonte
compile project(path: ':library', configuration: 'variant')
. Aqui,variant
consiste emflavor
ebuildType
como definido pelobuild.gradle
arquivo da biblioteca . Por exemplo, se você desejarelease
criar o tipo da biblioteca em umdevelop
sabor, entãovariant
édevelopRelease
.Com o Gradle 1.10 (não sei para que outras versões isso será válido), foi o que eu criei com base em uma resposta dada aqui http://forums.gradle.org/gradle/topics/reference_external_project_as_dependancy
Eu tenho um projeto de biblioteca API, um projeto de biblioteca comum e o projeto principal do aplicativo. Cada um é um projeto de desenvolvimento independente e as duas bibliotecas devem ser compartilhadas entre vários aplicativos.
Em settings.gradle para o projeto comum:
Em seguida, nas configurações principais do projeto do aplicativo.gradle:
Em cada um dos respectivos arquivos build.gradle, basta referenciá-los pelo nome que você forneceu em settings.createProjectDescriptor, como faria com qualquer outra dependência do projeto:
Isso parece funcionar. Ele nem sequer gerou um erro para vários arquivos DEX que definem a biblioteca da API, suspeito porque era tudo parte do mesmo processo de compilação e Gradle era inteligente o suficiente para descobrir tudo.
fonte
Clique com o botão direito do mouse no projeto - Selecione "Abrir configurações do módulo" - Selecione "Módulos" no painel esquerdo - Clique no símbolo "+" na parte superior - Escolha "Importar módulo".
Após a importação do módulo. Você precisa adicioná-lo como uma dependência para o seu projeto atual.
Mantenha "Módulos" selecionados no painel esquerdo e clique no seu projeto - Agora vá na guia dependências e clique no símbolo "+" localizado na parte inferior - Escolha a terceira opção "Dependências do módulo" e, se você importou seu projeto corretamente, ele será mostre a você todo o módulo disponível que pode ser adicionado como uma dependência ao seu projeto atual.
fonte
Faço novamente esta pergunta de uma maneira que implique as intenções dos pôsteres originais em Como referenciamos as bibliotecas Android e Java personalizadas que vivem fora do diretório do nosso Projeto Android principal?
Lá eu respondo minha própria pergunta. No núcleo, minha resposta usa o insight de codificação gradle @ Ethan (o autor da resposta escolhida no segmento atual). Mas minha resposta também aborda outras dicas e fornece um exemplo detalhado passo a passo.
fonte
Como Ethan disse, se você adicionar isso ao seu settings.gradle, ele adicionará um projeto externo ao Android Studio (neste exemplo, ele está na pasta pai):
Em seguida, para adicioná-lo como uma dependência de um de seus projetos, basta adicioná-lo no build.gradle desse projeto como outra dependência como esta (você também pode fazê-lo graficamente como aqui ):
fonte