android - tools - no matching found for package name




O que é o Gradle no Android Studio? (14)

Resposta curta

Gradle é um sistema de construção.

Resposta longa

Antes do Android Studio, você estava usando o Eclipse para fins de desenvolvimento e, provavelmente, não sabia como criar seu APK Android sem o Eclipse.

Você pode fazer isso na linha de comando, mas precisa aprender o que cada ferramenta (dx, aapt) faz no SDK. O Eclipse nos salvou a todos esses detalhes fundamentais, de baixo nível, mas importantes, ao nos fornecer seu próprio sistema de construção.

Agora, você já se perguntou por que a pasta res está no mesmo diretório que sua pasta src ?

É aqui que o sistema de compilação entra em cena. O sistema de compilação automaticamente pega todos os arquivos de origem ( .java ou .xml ), então aplica a ferramenta apropriada (por exemplo, pega arquivos de classe java e os converte em arquivos dex ) e agrupa todos eles em um arquivo compactado, nosso amado APK.

Esse sistema de compilação usa algumas convenções: um exemplo de um é especificar o diretório que contém os arquivos de origem (no Eclipse é a pasta \src ) ou arquivos de recursos (no Eclipse, é a pasta \res ).

Agora, para automatizar todas essas tarefas, tem que haver um script; você pode escrever seu próprio sistema de compilação usando scripts shell em linux ou sintaxe de arquivos em lote no Windows. Consegui?

O Gradle é outro sistema de compilação que utiliza os melhores recursos de outros sistemas de compilação e os combina em um. É melhorado com base em suas deficiências. É um sistema de compilação baseado em JVM , o que significa que você pode escrever seu próprio script em Java, que o Android Studio utiliza.

Uma coisa legal sobre gradle é que é um sistema baseado em plugins . Isto significa que se você tem sua própria linguagem de programação e deseja automatizar a tarefa de construir algum pacote (saída como um JAR para Java) a partir de fontes, então você pode escrever um plugin completo em Java ou Groovy (ou Kotlin, veja here ), e distribuir para o resto do mundo.

Por que o Google usou isso?

O Google viu um dos sistemas de criação mais avançados do mercado e percebeu que você poderia escrever seus próprios scripts com pouca ou nenhuma curva de aprendizado e sem aprender Groovy ou qualquer outro novo idioma. Então eles escreveram o plugin do Android para o Gradle.

Você deve ter visto o (s) arquivo (s) build.gradle em seu projeto. É aí que você pode escrever scripts para automatizar suas tarefas. O código que você viu nesses arquivos é o código Groovy. Se você escrever System.out.println("Hello Gradle!"); então ele será impresso no seu console.

O que você pode fazer em um script de construção?

Um exemplo simples é que você precisa copiar alguns arquivos de um diretório para outro antes que o processo de construção real aconteça. Um script de construção do Gradle pode fazer isso.

Gradle é um pouco confuso para mim e também para o novo desenvolvedor Android. Alguém pode explicar o que gradle no Android Studio é e qual é o seu propósito? Por que o Gradle está incluído no Android Studio?


É a nova ferramenta de criação que o Google deseja usar para o Android. Está sendo usado devido a ser mais extensível e útil que a formiga. Destina-se a melhorar a experiência do desenvolvedor.

Você pode ver uma palestra de Xavier Ducrohet da equipe de desenvolvedores do Android no Google I / O aqui.

Há também outra palestra no Android Studio por Xavier e Tor Norbye, também durante o Google I / O aqui .


Correndo o risco de ser discursivo, acho que por trás disso está a questão de por que a experiência do Android Studio / Gradle é tão ruim.

Experiência típica de Clojure:

  • baixe o projeto com as dependências listadas em project.clj.
  • Leiningen recebe as dependências graças a Clojars e Maven.
  • Compilação de projetos.

Experiência típica do Android Studio / Gradle:

  • "Importar meu projeto Eclipse".
  • Projeto OK importado.
  • Gradle está fazendo isso ... espere ... espere ... espere ... Gradle terminou.
  • Compile ... não pode compilar porque eu não sei o que um X é / não pode encontrar biblioteca Y.

Não tenho certeza se isso é exatamente culpa de Gradle. Mas a "importação do projeto Eclipse" parece bastante esquisita. Para toda a alegada sofisticação de Gradle e as virtudes de um sistema de compilação, o Android Studio simplesmente não parece importar muito bem as dependências de compilação ou o processo de compilação do Eclipse.

Ele não informa quando não foi possível importar um gráfico de dependência completo. O Android Studio não oferece ajuda ou dicas úteis sobre como resolver o problema. Ele não diz onde você pode procurar manualmente nas pastas do Eclipse. Não lhe diz qual biblioteca parece estar faltando. Ou ajude você a pesquisar o Maven etc. para eles.

Em 2016, coisas como Leiningen / Clojars, npm, ou pip do Python, ou o Debian apkg (e tenho certeza que muitos gerenciadores de pacotes similares para outras linguagens e sistemas) funcionam maravilhosamente ... dependências ausentes são coisa do passado.

Exceto com o Android. O Android Studio é agora o único lugar onde ainda pareço experimentar o inferno da falta de dependência.

Estou inclinado a dizer que isso é culpa do Google. Eles quebraram o ecossistema Android (e milhares de projetos / tutoriais on-line existentes do Android) quando decidiram mudar do Eclipse para o Android Studio / Gradle sem produzir um processo de conversão robusto. As pessoas cujos projetos trabalham no Eclipse não estão adaptando-as para o AS (presumivelmente porque é uma dor para elas). E as pessoas que tentam usar esses projetos no AS estão atingindo os mesmos problemas.

E, de qualquer forma, se o Gradle é um sistema de compilação super poderoso, por que ainda estou gerenciando muitas outras dependências no gerenciador do SDK? Por que um projeto que precisa, digamos, o ndk não especifica isso em seu arquivo Gradle para que ele seja automaticamente instalado e construído contra quando necessário? Por que o NDK é especial? Da mesma forma para plataformas de destino? Por que eu estou instalando-os explicitamente no IDE, em vez de apenas verificar o meu projeto contra eles e ter tudo isso organizado para mim nos bastidores?


Gradle é para a linguagem Groovy JVM que formiga é para Java. Basicamente, é a ferramenta de criação do Groovy. Ao contrário do Ant, é baseado na linguagem Groovy completa. Você pode, por exemplo, escrever código de script Groovy no script Gradle para fazer algo em vez de confiar em um idioma de domínio específico.

Eu não sei a integração específica do IntelliJ, mas imagine que você poderia "estender" o Groovy de tal forma que você poderia escrever primitivas de linguagem "build" específicas e elas acabaram se tornando parte da linguagem Groovy. (A metaprogramação do Groovy é toda uma discussão em si mesma.) O IntelliJ / Google poderia usar o Gradle para construir uma linguagem de construção de alto nível, ainda assim, é uma linguagem construída em um padrão aberto e expansível.


Gradle é um tipo de ferramenta de compilação que cria o código-fonte do programa. Portanto, é uma parte importante do Android Studio e precisa ser instalada antes de começar a desenvolver seu aplicativo.

Nós não temos que instalá-lo separadamente, porque o Android Studio faz isso por nós, quando fazemos nosso primeiro projeto.


Gradle é uma ferramenta de construção personalizada e usada para criar APK ou conhecida como kit de pacote de aplicativos.


O Gradle é o que possibilita automatizar a criação de projetos Android complexos que envolvem milhares de linhas de código de várias fontes, projetos, bibliotecas, etc. É possível gerar vários APKs otimizados com base em uma infinidade de especificações de configuração - se você interessados, as outras respostas fornecem mais detalhes sobre esse aspecto do Gradle.

No entanto, se você é novo no desenvolvimento do Android, o Gradle em 99% dos casos é o que interrompe a construção do seu projeto. É um sistema complexo e inescrutável que efetivamente ofusca o processo de criação do Android e essencialmente o torna indisponível para desenvolvedores inexperientes, ou seja, para construir um simples Android de nível de entrada o novato desavisado pode precisar estudar e entender muitas coisas que não negociou tal como:

  • Estrutura e ecossistema do Android APK
  • Estúdio Android
  • Caminhos de Classes e Dependências Java
  • Groovy
  • Scripts de construção Gradle
  • Muitas outras tecnologias complexas e interessantes

Todas essas coisas são interessantes e úteis para os desenvolvedores do Android, mas estão longe de serem fáceis e apresentam uma barreira formidável para a entrada. Eu suspeito que o que inspirou o OP a fazer essa pergunta é a sensação de frustração que inevitavelmente atinge o desenvolvedor neófito depois de passar muito tempo tentando criar um aplicativo simples e sendo continuamente frustrado por Gradle. O problema é perversamente exacerbado pela enorme quantidade de documentação altamente técnica que está disponível para todas essas tecnologias. Também para uma grande quantidade de necessidades de desenvolvimento, o Gradle é um exagero.

Uma alternativa é escrever um script de shell que construa seu projeto automatizando as ferramentas disponíveis no Android SDK. As virtudes dessa abordagem são muitas, pois começar é provavelmente a melhor maneira de estudar e entender o processo de criação e o ecossistema Android, além de permitir que você controle completamente como o aplicativo é criado. No entanto, esta abordagem é mais adequada para técnicos de tecnologia profundamente irredimíveis do que para noobs inexperientes que experimentam o Android.

O que é notável por sua ausência (por favor, informe-me se existe tal coisa) é um IDE de nível de entrada, leve, com um conjunto de recursos reduzido que simplifica simultaneamente o processo de compilação sem obscurecê-lo (portanto, não netbeans ou eclipse) use Gradle (o que havia de errado com Ant). Ele deve facilitar a geração de APKs que estejam em conformidade com algumas configurações comuns e usem uma estrutura de projeto que possa evoluir para um projeto completo do Android Studio caso você decida seguir esse caminho.


O Gradle é um kit de ferramentas de construção automatizado que pode ser integrado em vários ambientes diferentes, não apenas para projetos Android.

Aqui estão algumas coisas que você pode fazer com gradle.

  • Configuração mínima necessária para novos projetos porque o Gradle tem configurações padrão para seus projetos do estúdio do Android.

  • Declaração de Dependência. Você pode declarar arquivos jar de dependência ou arquivos de biblioteca hospedados no servidor local ou remoto.

  • O Gradle gera automaticamente um diretório de teste e um APK de teste a partir da origem do seu projeto.

  • Se você adicionar todas as informações necessárias, como keyPassword e keyAlias , ao seu arquivo de compilação Gradle, poderá usar o Gradle para gerar APKs assinados.

  • O Gradle pode gerar vários APKs com diferentes pacotes e configurações de compilação a partir de um único módulo.


Você pode encontrar tudo o que precisa saber sobre o Gradle aqui: Guia do usuário do Plugin Gradle

Objetivos do novo sistema de compilação

Os objetivos do novo sistema de compilação são:

  • Facilite a reutilização de código e recursos
  • Facilite a criação de várias variantes de uma aplicação, seja para distribuição multi-apk ou para diferentes sabores de uma aplicação
  • Facilite a configuração, estenda e personalize o processo de criação
  • Boa integração com IDE

Por que Gradle?

O Gradle é um sistema de criação avançado, bem como um kit de ferramentas de construção avançado que permite criar lógica de construção personalizada por meio de plug-ins.

Aqui estão algumas de suas características que nos fizeram escolher o Gradle:

  • Linguagem Específica de Domínio (DSL) para descrever e manipular a lógica de compilação
  • Os arquivos de construção são baseados no Groovy e permitem a mistura de elementos declarativos por meio do DSL e o uso de código para manipular os elementos DSL para fornecer lógica customizada.
  • Gerenciamento integrado de dependências através da Maven e / ou Ivy.
  • Muito flexível. Permite usar as melhores práticas, mas não força sua maneira de fazer as coisas.
  • Os plug-ins podem expor suas próprias DSLs e suas próprias APIs para que os arquivos de compilação sejam usados.
  • Boa API de ferramentas que permite integração com IDE

por @Brian Gardner:

Gradle é uma extensa ferramenta de construção e gerenciador de dependências para projetos de programação. Tem uma linguagem específica de domínio baseada no Groovy. Gradle também fornece suporte por convenção para vários tipos de projetos, incluindo Java, Android e Scala.

Recurso de Gradle:

  1. Gerenciamento de Dependência
  2. Usando Ant de Gradle
  3. Plugins Gradle
  4. Plugin Java
  5. Plugin Android
  6. Construções multi-projeto

DEFINIÇÃO :: Gradle pode ser descrito como um mecanismo de construção estruturado onde fornece ao desenvolvedor as ferramentas e a flexibilidade para gerenciar os recursos de um projeto para criar construções de smaller in size , targeting specific requirements para determinados dispositivos de determinadas configurações

CONFIGURAÇÕES BÁSICAS

  1. minimumSdk
  2. maximumSdk
  3. targettedSdk
  4. versionCode
  5. versionName

BIBLIOTECAS :: Nós podemos adicionar bibliotecas android ou quaisquer outras bibliotecas de terceiros, além de requisitos por fácil que foi uma tarefa tediosa anteriormente. Se a biblioteca não se encaixa no projeto existente, é mostrado ao desenvolvedor um log onde a pessoa pode encontrar uma solução apropriada para fazer alterações no projeto, de modo que a biblioteca possa ser adicionada. É apenas uma linha de dependência

GERANDO VARIEDADES DE CONSTRUÇÕES

Combinando tipos de compilação com sabores de compilação para obter variantes de variâncias de compilação

 ====================                         ====================
|     BuildTypes     |                       |   ProductFlavours  |
 --------------------  ====================== --------------------
|  Debug,Production  |      ||       ||      | Paid,Free,Demo,Mock|
 ====================       ||       ||       ==================== 
                            ||       ||
                            VV       VV
 =================================================================
|           DebugPaid, DebugFree, DebugDemo, DebugMock            |
|  ProductionPaid, ProductionFree, ProductionDemo, ProductionMock |
 =================================================================

REDUZIR TAMANHO

Gradle ajuda a reduzir o tamanho da compilação gerada, removendo os recursos não utilizados de itens não utilizados de bibliotecas integradas

GERENCIANDO PERMISSÕES

Podemos especificar determinadas permissões para determinadas compilações adicionando determinadas permissões em determinados cenários com base nos requisitos

CONSTRÓI PARA DETERMINADOS DISPOSITIVOS

Podemos gerenciar a geração de geração para determinados dispositivos que incluem certas densidades e determinados níveis de API. Isso ajuda nas implantações de produtos na loja de aplicativos de acordo com os requisitos em vários tipos de dispositivos

BOA REFERÊNCIA

Tutoriais de Vogella


Eu me refiro a dois tutoriais para escrever a Resposta one , two

Gradel é uma ferramenta de construção declarativa e de propósito geral. É um propósito geral, porque pode ser usado para construir praticamente qualquer coisa que você queira implementar no script de construção. Ele é declarativo, pois você não quer ver muitos códigos no arquivo de construção, o que não é legível e menos sustentável. Assim, enquanto a Gradle fornece a ideia de convenções e uma construção simples e declarativa, ela também torna a ferramenta adaptável e os desenvolvedores a capacidade de estender. Ele também fornece uma maneira fácil de personalizar o comportamento padrão e diferentes ganchos para adicionar recursos de terceiros.

Gradle combina as partes boas de ambas as ferramentas e fornece recursos adicionais e usa o Groovy como uma linguagem específica de domínio (DSL). Ele tem poder e flexibilidade da ferramenta Ant com recursos do Maven, como ciclo de vida de construção e facilidade de uso.

Por que Gradle? Porque agora?

A resposta da ferramenta de compilação é adicionar funcionalidade de script por meio de mecanismos de extensão não padrão. Você acaba misturando código de script com XML ou invocando scripts externos a partir de sua lógica de construção. É fácil imaginar que você precisará adicionar mais e mais código personalizado ao longo do tempo. Como resultado, você inevitavelmente apresenta uma complexidade acidental, e a capacidade de manutenção sai pela janela.

Digamos que você queira copiar um arquivo para um local específico ao criar a versão de lançamento do seu projeto. Para identificar a versão, você verifica uma string nos metadados que descrevem seu projeto. Se corresponder a um esquema de numeração específico (por exemplo, 1.0-RELEASE), você copia o arquivo do ponto A para o ponto B. De uma perspectiva externa, isso pode soar como uma tarefa trivial. Se você tiver que confiar em XML, a linguagem de construção de muitas ferramentas tradicionais, expressando essa lógica simples, se tornará bastante difícil.

Evolução das Ferramentas de Construção Java

A lógica de compilação de Java deve ser descrita em XML. XML é ótimo para descrever dados hierárquicos, mas fica aquém de expressar fluxo de programa e lógica condicional. À medida que um script de construção cresce em complexidade, manter o código de construção se torna um pesadelo.

No Ant , você faz o destino JAR depender do destino da compilação. A Ant não dá nenhuma orientação sobre como estruturar seu projeto. Embora isso permita flexibilidade máxima, o Ant torna cada script de construção exclusivo e difícil de entender. As bibliotecas externas exigidas pelo seu projeto geralmente são verificadas no controle de versão porque não há mecanismo automatizado para extraí-las de um local central.

O Maven 1 , lançado em julho de 2004, tentou facilitar esse processo. Forneceu uma estrutura padronizada de projeto e diretório, bem como gerenciamento de dependências. Infelizmente, a lógica personalizada é difícil de implementar

O Gradle se encaixa nessa geração de ferramentas de construção e satisfaz muitos requisitos de ferramentas de construção modernas (Figura 1). Ele fornece uma DSL expressiva, uma convenção sobre a abordagem de configuração e um poderoso gerenciamento de dependências. Ele faz o movimento certo para abandonar o XML e introduzir a linguagem dinâmica Groovy para definir sua lógica de construção. Soa convincente, não é?

Gradle combina os melhores recursos de outras ferramentas de construção.

Conjunto de recursos convincente de Gradle

Por que construir seus projetos Java com Gradle em vez de Ant ou Maven?

A ferramenta de compilação padrão do Android (e a nova estrela de ferramentas de compilação na JVM) foi desenvolvida para facilitar o script de construções complexas e multilíngues. Você deve mudar para isso, se estiver usando Ant ou Maven?

A chave para desbloquear os recursos de energia do Gradle em seu script de construção é descobrir e aplicar seu modelo de domínio, conforme mostrado na imagem abaixo.

A Gradle não pode conhecer todos os requisitos específicos da sua empresa. Ao expor ganchos nas fases do ciclo de vida, o Gradle permite monitorar e configurar o comportamento de execução do script de construção.

Gradle estabelece um vocabulário para seu modelo, expondo uma DSL implementada no Groovy. Ao lidar com um domínio de problema complexo, neste caso, a tarefa de construir software, sendo capaz de usar uma linguagem comum para expressar sua lógica, pode ser uma ferramenta poderosa.

Outro exemplo é a maneira como você pode expressar dependências para bibliotecas externas, um problema muito comum resolvido por ferramentas de construção. O Gradle pronto para uso fornece dois blocos de configuração para o script de construção que permitem definir as dependências e os repositórios dos quais você deseja recuperá-los. Se os elementos DSL padrão não atenderem às suas necessidades, você pode até mesmo introduzir seu próprio vocabulário através do mecanismo de extensão de Gradle.

Integração com outras ferramentas de compilação

Gradle joga bem com seus antecessores 'Ant, Maven e Ivy, como mostrado na imagem abaixo.

Automatizando seu projeto de construção para implantação

Na imagem: estágios de um pipeline de implantação.

  • Compilando o código

  • Testes de unidade e integração em execução

  • Executando análise de código estático e gerando cobertura de teste

  • Criando a distribuição

  • Provisionando o ambiente de destino

  • Implantando o entregável

  • Realizando testes funcionais de fumaça e automatizados

Eu me refiro a dois tutoriais para escrever a Resposta one , two


Em termos simples, o Gradle é uma ferramenta fornecida pelo Android Studio para implementar dois processos importantes:

  1. Construa nossos projetos
  2. Pacote AndroidManifest.xml, pasta res e código binário em um arquivo zip especialmente formatado chamado APK

Comentário do fórum Gradle = Groovy + Cradle Hans Dockter

A confusão é um pouco desnecessária quando poderia ser chamada de "Build" ou algo no Android Studio.

Gostamos de dificultar as coisas para nós mesmos na comunidade do desenvolvimento.





build-automation