Operação Android Gradle, mesclar dois projetos em um projeto

1. Introdução

No trabalho, por vários motivos, é necessário mesclar dois Appprojetos executáveis ​​\u200b\u200bindependentemente em um gitarmazém, e existem outros módulos em um Appprojeto 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 Studioabrir a mesma pasta raiz dos dois projetos e, em seguida, os dois projetos podem ser carregados e Android Studioo projeto pode ser alternado internamente para compilar e executar.

Como mostrado na imagem abaixo, agora temos dois projetos

  • MyProject1: Há uma dependência MyModule1dissoLibrary
  • MyProject2: É um App separado e não depende de outroLibrary

Em seguida, tomaremos esses dois projetos como exemplo e gradleos mesclaremos em um projeto por meio da modificação

insira a descrição da imagem aqui

2. incluir o uso da função

Em primeiro lugar, todos sabemos que em Gralde, includeas funções podem ser usadas para depender de subprojetos.
Por exemplo, em nosso novo projeto, settings.gradlehaverá tal frase em , que é usada para depender de appmódulos.

include ":app"

Ao clicarmos em include, podemos constatar includeque 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:yyyyneste formulário

3. Etapas de implementação

3.1 Criar um novo projeto

Conhecemos includeo uso, então pode ser includeusado para realizar a fusão.
Primeiro, vamos criar um novo projeto, por exemplo MyProjectTest, e excluir appo código em sua pasta.

insira a descrição da imagem aqui

3.2 Copie o projeto para MyProjectTest

Copie MyProject1e MyProject2copie paraMyProjectTest
insira a descrição da imagem aqui

3.3 Modificar configurações.gradle

MyProjectTestA 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 Syncbotão, ele exibirá um erro
insira a descrição da imagem aqui
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 Syncno botão novamente e podemos descobrir que existem mais duas opções de projeto executáveis

insira a descrição da imagem aqui
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 Studioseparadamente MyProject1, descobriremos MyProject1que 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.gradleespecifique MyModule1o caminho.

rootProject.name = "MyProjectTest"

include ':MyProject1:app'
include ':MyModule1'
include ':MyProject2:app'

project(':MyModule1').projectDir = new File('/MyProject1/MyModule1')

Em seguida, modifique MyProject1as seguintes dependências . implementation project(':MyProject1:MyModule1')implementation project(':MyModule1')

Clique Syncno 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 Studioaberto MyProject1sozinho.

4.2 Renomear o subprojeto

insira a descrição da imagem aqui

Clique em Edit Configurations, também podemos renomear o subprojeto

insira a descrição da imagem aqui
Exclua o nome .app, o efeito final é o seguinte

insira a descrição da imagem aqui
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 MyProject2existe um subprojeto que pode ser executado de forma independente, como integrá-lo?
Na verdade, é o mesmo, MyProjectTestno settings.gradle, adicionar includedependências.

include ':MyProject2:xxxx'

Aqui xxxxestá 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

6.2 Referência

[Android Gradle plugin] arquivo de configuração settings.gradle (função básica de configuração | incluir uso de função | configuração de nível de diretório | modificar o nome do script de compilação do módulo do módulo) _setting.gradle compilar configurações de vários projetos compilar o nome do pacote

Acho que você gosta

Origin blog.csdn.net/EthanCo/article/details/132056793
Recomendado
Clasificación