& Eclipse) • Ant (XML) • Manutenção de dois build systems é custoso • O Ant não tem suporte a “artefatos” externos (por exemplo, bibliotecas) e gestão das mesmas • Integração com o Maven é limitada
de APIs, substituindo o Ant (XML) e o Eclipse • Suporte a “artefatos” externos e gestão dos mesmos • Fácil integração com IDEs do que o Ant • Free / Open Source • Convention over configuration • Suporte a Plugins
de distribuição: ◦ Google ◦ Amazon ◦ etc • Customização de um app para vários clientes (B2B) • Suportar um app para diferentes tipos de devices • Suportar um app que faz parte de um grande sistema (app & backend) • Vários app com código comum, resources, e libs em comum • O Gradle e a nova estrutura de pastas permitem que isso ocorra
arquivos fonte o qual são compilados e executados juntos." • Diferentes source sets de acordo com a necessidade: ◦ Produção versus staging ◦ Interface versus implementação ◦ etc • A nova estrutura assume a existência de um source set, geralmente a main
resultado do processo de build • Dois build types padrões: ◦ debug ◦ release • Com o Eclipse e o Ant, esses eram os únicos tipos de build types somente • Diferentes configurações para cada build type: ◦ flag de debuggable ◦ ProGuard ◦ signing configuration ◦ Sobreposição de arquivos • Cuidado com a ordem de precedência!
do build type para variar o resultado do processo de build • Designado para cenários onde é necessários diferentes apks: ◦ Play Store versus Amazon AppStore ◦ Configuração diferenciado por cliente • A definição de product flavor são opcionais. Se não declarado, assume-se o default.
build types e product flavor. • Em um projeto com buid type debug e release, e product flavors google e amazon, teríamos: ◦ debug + google ◦ debug + amazon ◦ release + google ◦ release + amazon • Tarefas: ◦ assembleDebugGoogle ◦ assembleDebugAmazon ◦ assembleReleaseGoogle ◦ assembleReleaseAmazon
• Alguns exemplos no caso do Gradle Android: ◦ Arquivos JAR locais ◦ Arquivos .so locais no caso do NDK ◦ Projetos Android locais ◦ Sub-projetos ◦ Artefatos obtidos de repositórios como o Maven Central • Novo formato para projetos android (AAR) substituto do apklib com suporte: ◦ ProGuard ◦ Assets ◦ Regras do Lint Customizadas
dependências daquele artefatos e demais informações. Geralmente identificados por três informações: ◦ Um grupo: com.android.tools.build:gradle:0.8.0 ◦ Um ID do artefato: com.android.tools.build:gradle:0.8.0 ◦ Um número de versão: com.android.tools.build:gradle:0.8.0 • Um repositório é uma coleção de artefatos, locais ou remotos • Nem todos os artefatos estão localizados no Maven Central
Support Repository e o Google Repository • Alguns artefatos desses repositórios: ◦ com.android.support:support-v4:19.0.0 ◦ com.android.support:support-v13:19.0.0 ◦ com.android.support:appcompat-v7:19.0.0 ◦ com.android.support:gridlayout-v7:19.0.0 ◦ com.google.android.gms:play-services:4.0.30
◦ androidTestCompile ◦ androidTestGoogleCompile • Próprio AndroidManifest.xml • Apenas um Build Type é testado • Todos os testes são executados em paralelo em diferentes dispositivos e emuladores disponíveis • Após os testes tudo é limpo e o apk de teste desinstalado • Suporte a API de testes em servidores • Suporte a Testes remoto
{ testPackageName "com.test.foo" // ou usar o padrão gerado pelo Android studio testInstrumentationRunner "android.test.InstrumentationTestRunner" //default } }