1. Introdução
No trabalho, por vários motivos, é necessário mesclar dois App
projetos executáveis \u200b\u200bindependentemente em um git
armazém, e existem outros módulos em um App
projeto separado Module
.
Se você apenas copiar dois projetos para a mesma pasta, ainda precisará abrir cada projeto separadamente, o que é muito inconveniente.
E o efeito que quero alcançar é Android Studio
abrir a mesma pasta raiz dos dois projetos e, em seguida, os dois projetos podem ser carregados e Android Studio
o projeto pode ser alternado internamente para compilar e executar.
Como mostrado na imagem abaixo, agora temos dois projetos
MyProject1
: Há uma dependênciaMyModule1
dissoLibrary
MyProject2
: É um App separado e não depende de outroLibrary
Em seguida, tomaremos esses dois projetos como exemplo e gradle
os mesclaremos em um projeto por meio da modificação
2. incluir o uso da função
Em primeiro lugar, todos sabemos que em Gralde
, include
as funções podem ser usadas para depender de subprojetos.
Por exemplo, em nosso novo projeto, settings.gradle
haverá tal frase em , que é usada para depender de app
módulos.
include ":app"
Ao clicarmos em include
, podemos constatar include
que na verdade é um método, e o parâmetro é uma variável string, que pode passar nos caminhos de diversos itens, como:app
default void include(String... projectPaths) {
this.include((Iterable)Arrays.asList(projectPaths));
}
E se o projeto precisar estar em um subdiretório?
Aqui :
é usado para dividir o diretório, então o projeto que depende do subdiretório fica :xxxx:yyyy
neste formulário
3. Etapas de implementação
3.1 Criar um novo projeto
Conhecemos include
o uso, então pode ser include
usado para realizar a fusão.
Primeiro, vamos criar um novo projeto, por exemplo MyProjectTest
, e excluir app
o código em sua pasta.
3.2 Copie o projeto para MyProjectTest
Copie MyProject1
e MyProject2
copie paraMyProjectTest
3.3 Modificar configurações.gradle
MyProjectTest
A modificação settings.gradle
foi originalmente duas linhas de código como esta
rootProject.name = "MyProjectTest"
include ':app'
mudar para
rootProject.name = "MyProjectTest"
include ':MyProject1:app'
include ':MyProject1:MyModule1'
include ':MyProject2:app'
Clique no Sync
botão, ele exibirá um erro
porque em MyProject1
, contamos comMyModule1
implementation project(':MyModule1')
Portanto, o prompt aqui não pode ser encontrado e precisa ser modificado para:MyProject1:MyModule1
implementation project(':MyProject1:MyModule1')
Neste momento, clicamos Sync
no botão novamente e podemos descobrir que existem mais duas opções de projeto executáveis
Selecione um projeto, clique para executar e você verá que ele está instalado no telefone normalmente.
4. Otimização adicional
Neste ponto, o objetivo deste artigo está basicamente concluído, realizando a fusão de dois projetos em um só projeto.
No entanto, neste momento, se abrirmos Android Studio
separadamente MyProject1
, descobriremos MyProject1
que o erro de compilação é relatado.
Porque vamos implementation project(':MyModule1')
modificar Para ser acoplado implementation project(':MyProject1:MyModule1')
com . Obviamente, isso não é razoável. Idealmente, depois de mesclar dois projetos, os projetos separados ainda podem ser executados independentemente no . Então o que deveríamos fazer?MyProjectTest
Android Studio
4.1 Especifique o caminho para o projeto
De fato, podemos usar project.projectDir
, para especificar o caminho do subprojeto.
Modificado MyProjectTest
, settings.gradle
especifique MyModule1
o caminho.
rootProject.name = "MyProjectTest"
include ':MyProject1:app'
include ':MyModule1'
include ':MyProject2:app'
project(':MyModule1').projectDir = new File('/MyProject1/MyModule1')
Em seguida, modifique MyProject1
as seguintes dependências . implementation project(':MyProject1:MyModule1')
implementation project(':MyModule1')
Clique Sync
no botão novamente, clique em Executar e descubra que ele ainda pode ser executado.
Além disso, neste momento, ele também pode ser executado sozinho se for Android Studio
aberto MyProject1
sozinho.
4.2 Renomear o subprojeto
Clique em Edit Configurations
, também podemos renomear o subprojeto
Exclua o nome .app
, o efeito final é o seguinte
Até agora, concluímos todas as operações de fusão de dois projetos em um único projeto.
5. Se houver outro projeto que possa ser executado separadamente?
Se MyProject2
existe um subprojeto que pode ser executado de forma independente, como integrá-lo?
Na verdade, é o mesmo, MyProjectTest
no settings.gradle
, adicionar include
dependências.
include ':MyProject2:xxxx'
Aqui xxxx
está o nome deste subprojeto e, em seguida Sync
, clique, você pode ver a entrada em execução separada deste subprojeto.
6. Outro
6.1 Código-fonte deste artigo
Endereço de download do código-fonte: no Android Studio, mescle dois projetos em um projeto