-
タイトル:
Configuring Generated Tasks
-
概説:
-
Digamos que queiramos mudar
um sinalizador de compilação no projeto Java.
-
Podemos apenas adicionar configuração
à tarefa compile Java.
-
No entanto, diferente de projetos Java simples
-
que têm um conjunto finito de tarefas
como, compile Java, jar, test etc.
-
Projetos Android podem ter
um número indeterminado de tarefas,
-
dependendo dos tipos de compilação
e sabores do produto que declaramos.
-
Além disso, os nomes dessas
tarefas são gerados e são baseados
-
no nome da variante específica
para qual é a tarefa.
-
Além disso, essas tarefas são
criadas muito mais tarde no ciclo de vida
-
da configuração do projeto.
-
O que significa, na maioria dos casos,
-
que não podemos fazer
referência direta a elas em nosso script de compilação.
-
Basicamente, precisamos
resolver dois problemas.
-
Primeiro, precisamos de um modo de fazer
referência a cada tarefa usada na compilação
-
de determinada variante sem ter
de saber o nome real da tarefa.
-
Simplesmente queremos configurar
todas as tarefas de determinado tipo
-
para todas as variantes.
-
Depois, precisamos de um modo
de adiar a configuração da tarefa
-
até depois da criação de todas
as variantes da compilação.
-
O que significa que não podemos
configurar a tarefa até que ela exista.
-
O primeiro problema é resolvido
pelo próprio plugin Gradle do Android,
-
que agrupa todas as informações
para incluir as tarefas
-
associadas a qualquer variante
em um objeto único.
-
Há 3 tipos principais desses objetos,
Variante de aplicativo,
-
Variante de biblioteca e o Variante de teste.
-
O tipo de variante que precisamos depende
do tipo de projeto que estamos compilando.
-
Variantes de aplicativo e
-
Variantes de biblioteca são criadas para
Aplicativos ou bibliotecas do Android respectivamente.
-
E as Variantes de teste são criadas
para APK de teste de dispositivo.
-
Cada uma tem suas propriedades
específicas mas todas tem tarefas
-
comuns, como compilação de Java,
mescla de recursos etc.
-
O plugin do Android Griddle é
muito legal e agrupa de modo ordenado todas
-
as informações sobre uma variante para nós,
-
mas o problema continua, como
fazemos referência a esses objetos de variante?
-
O problema é resolvido por aquilo
que o Gradle chama de coleções ativas.
-
Basicamente, como o plugin do
Android cria variantes,
-
elas são adicionadas a
um tipo especial de coleção.
-
Essas coleções nos permitem
definir configurações para
-
objetos que ainda não existem.
-
Em vez disso, Gradle lembra
da configuração e a executa
-
quando um novo objeto é adicionado.
-
Especificamos essa configuração
chamando o método all
-
em nossa coleção de variantes.
-
Por exemplo, se quisermos configurar
todas as tarefas de compilação Java para
-
nossas variantes de aplicação
adicionarem um argumento de compilador,
-
fazemos algo deste tipo.
-
Isso vai configurar cada tarefa Java.compile
para cada tipo de compilação debug,
-
independente de quantos
sabores de produto tivemos configurado.
-
Além disso, você não precisa
-
tentar adivinhar qual deve ser
os nomes finais de cada uma das tarefas.