O que são as ferramentas de construção, as ferramentas de plataforma e as ferramentas do SDK do Android? E qual versão deve ser usada?

331

Sei que essa é uma pergunta muito rudimentar, mas, para minha surpresa, não consegui encontrar nenhum documento sobre as ferramentas de compilação do SDK do Android. Além das ferramentas do Android SDK e das ferramentas da plataforma Android SDK, há várias ferramentas de compilação do Android SDK, como mostra a captura de tela em anexo. Alguém poderia apontar para uma fonte que explica todos eles e ajudar a esclarecer como uma determinada versão das ferramentas de compilação do SDK do Android é escolhida para uso?

insira a descrição da imagem aqui

Editado (27-02-2014) :

Eu ainda não entendo completamente todas as ferramentas. A seguir, meu entendimento limitado com base nos documentos mais recentes do Google:

  • As ferramentas de compilação do SDK do Android costumavam ser componentes das ferramentas da plataforma do SDK do Android . Eles foram dissociados das ferramentas da plataforma Android SDK, para que as ferramentas de construção possam ser atualizadas independentemente dos componentes do ambiente de desenvolvimento integrado (IDE).
  • As ferramentas da plataforma SDK do Android são personalizadas para oferecer suporte aos recursos da plataforma Android mais recente. Eles são compatíveis com versões anteriores, para que você sempre use a atualização mais recente das ferramentas da plataforma Android SDK, mesmo que seu aplicativo tenha como alvo plataformas Android mais antigas.
  • As ferramentas do SDK são independentes da plataforma e são necessárias, independentemente da plataforma Android em que você está desenvolvendo.

Ainda não entendo a lógica de remover as ferramentas de compilação do SDK do Android das ferramentas da plataforma do SDK do Android, que possuem uma única instância e são fáceis de gerenciar a atualização. A única razão possível em que consigo pensar é que alguns aplicativos precisam confiar em componentes de construção mais antigos para construí-los. O documento do Google menciona isso, mas não explica o porquê. Observando as notas de versão, você notará que as atualizações das ferramentas de compilação do Android SDK são principalmente para corrigir bugs ou / adicionar suporte para novas plataformas. A única razão pela qual consigo pensar em alguns aplicativos para usar versões mais antigas das ferramentas de compilação do SDK do Android é que eles dependem de certos bugs das ferramentas de compilação do SDK do Android. Esses aplicativos não funcionariam normalmente sem serem criados com esses bugs. Eu gostaria que o Google pudesse explicar melhor isso, dando um ou dois exemplos que mostram por que esses erros nas ferramentas são críticos para certos aplicativos.

Hong
fonte

Respostas:

88

Sobre a versão das ferramentas de compilação do SDK do Android , a resposta é

Por padrão, o Android SDK usa a versão baixada mais recente das Ferramentas de Compilação.

Fonte

No Eclipse, você pode escolher uma versão específica usando a sdk.buildtoolspropriedade no project.propertiesarquivo

Parece não haver uma página oficial explicando todas as ferramentas de construção. Aqui está o que a equipe do Android diz sobre isso.

As ferramentas [build], como aidl, aapt, dexdump e dx, geralmente são chamadas pelas ferramentas de construção do Android ou pelas Ferramentas de Desenvolvimento do Android (ADT), portanto, você raramente precisa invocá-las diretamente. Como regra geral, você deve confiar nas ferramentas de construção ou no plug-in ADT para chamá-los conforme necessário.

Fonte

Enfim, aqui está uma síntese das diferenças entre ferramentas, ferramentas de plataforma e ferramentas de construção:

  • Ferramentas do SDK para Android
    • Localização: $ANDROID_HOME/tools
    • Ferramentas principais: scripts ant (para criar seus APKs) e ddms(para depuração)
  • Ferramentas da plataforma SDK para Android
    • Localização: $ANDROID_HOME/platform-tools
    • Ferramenta principal: adb(para gerenciar o estado de um emulador ou dispositivo Android)
  • Ferramentas de compilação do SDK do Android
    • Localização: $ANDROID_HOME/build-tools/$VERSION/
    • Documentação
    • Ferramentas principais: aapt(para gerar R.java e APKs não assinados e não alinhados), dx(para converter bytecode Java em Dalvik bytecode) e zipalign(para otimizar seus APKs)
lacton
fonte
Estou muito contente que não há registro de alterações de diferentes versões das ferramentas de construção
Ewoks
@lacton Eu usei a ferramenta de compilação antiga (versão 17) para o meu projeto. Posso reconstruí-lo com a ferramenta de compilação mais recente?
user1156041
Podemos usar as mesmas ferramentas de compilação sdk + para eclipse e studio?
Muhammad Babar 31/07
38

As ferramentas de compilação do SDK do Android são usadas para depurar, criar, executar e testar um aplicativo Android.

As ferramentas de compilação do Android podem ser usadas para desenvolver e trabalhar na linha de comando ou IDE (por exemplo, Eclipse ou Android Studio).

Também usado para conectar dispositivos Android e fazer root neles (fastboot, adb e mais ..)

Sempre use o mais recente. (Recomendado)

Mais informações sobre ferramentas e comandos do Android Build

mipreamble
fonte
Obrigado pela informação. Você quer dizer que o Android Build Tools é "usado para conectar dispositivos Android e enraizá-los"? adbis uma parte das ferramentas da plataforma Android. O adb depende do Android Build Tools para funcionar? Se sim, como? Estou curioso.
Hong
O adb pode ser usado para enviar e receber arquivos da linha de comando. (Mais funcionalidades.) O fastboot pode ser usado para atualizar os gerenciadores de inicialização personalizados. No entanto, esses comandos não são úteis para o desenvolvimento do Android, a menos que você use o terminal para o desenvolvimento. Tudo está disponível no próprio IDE.
mipreamble
1
Meu entendimento é que o Eclipse usa adb.exe em segundo plano.
Hong
@mipreamble, então qual é a diferença entre o Android SDK: ferramentas, ferramentas de plataforma e ferramentas de construção? Posso criar e executar meu aplicativo sem ferramentas de construção.
kreker
1
@CJBS Sim. Aderir às ferramentas definidas para uma versão funcionará. As ferramentas de construção são atualizadas quando a nova versão do Android chega. Você deseja compilar e testar o aplicativo para obter as versões mais recentes do Android.
mipreamble
16

Deixarei a discussão da diferença entre Ferramentas de Construção, Ferramentas de Plataforma e Ferramentas para outras pessoas. Do ponto de vista prático, você só precisa saber a resposta para sua segunda pergunta:

Qual versão deve ser usada?

Resposta: Use a versão mais recente.

Para aqueles que usam o Android Studio com Gradle, buildToolsVersionisso deve ser definido no build.gradlearquivo (Módulo: aplicativo).

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"

    ...
}

Onde obtenho o número da versão mais recente das Ferramentas de Compilação?

Abra o Android SDK Manager.

  • No Android Studio, vá para Ferramentas > Android > Gerenciador de SDK > Aparência e comportamento > Configurações do sistema > Android SDK
  • Escolha as ferramentas do SDK guia .
  • Selecionar ferramentas de compilação do SDK do Android na lista
  • Marque Mostrar detalhes do pacote .

O último item mostrará a versão mais recente.

insira a descrição da imagem aqui

Verifique se ele está instalado e, em seguida, escreva esse número como buildToolsVersionno build.gradle(Módulo: aplicativo).

Suragch
fonte
1
Se houver 24.0.2, por que 24.0.1 e 24 não estão marcados como obsoletos (o gerenciador independente permite mostrar / ocultar pacotes obsoletos)?
user1803551
3
@ user1803551, nem sempre é desejável usar automaticamente a versão mais recente das ferramentas de construção. Por exemplo, digamos que você já testou completamente seu aplicativo com uma versão específica das ferramentas de compilação. Se você atualizar suas ferramentas de criação, é possível que uma alteração possa danificar algo no seu aplicativo. Permitir que os desenvolvedores continuem usando versões antigas das ferramentas de compilação permite que eles tenham certeza de que a compilação continuará funcionando conforme o esperado. Se você observar o padrão declarado obsoleto, poderá ver que 24 e 24.0.1 serão declarados obsoletos.
18896 Suragch
13

Você pode encontrar detalhes sobre isso neste Android - Ferramentas de linha de comando


tl; dr:

Ferramentas do SDK:

  1. Gerenciador de SDK do Android (sdkmanager)
  2. Gerenciador AVD (avdmanager)
  3. Servidor de Monitor de Depuração Dalvik (ddms)

Ferramentas de compilação:

  1. signatário
  2. proGuard
  3. zipalign
  4. jobb

Ferramentas da plataforma:

  1. adb
  2. aidl, aapt, dexdump e dx
  3. bmgr
  4. logcat
Suhaib
fonte
1
AIDL, aapt, dexdump, e DX estes são componentes de ferramentas de compilação não ferramentas da plataforma
Masum
9

A resposta certa é

Separou os componentes específicos de compilação do SDK do Android do componente de ferramentas de plataforma, para que as ferramentas de compilação possam ser atualizadas independentemente dos componentes do ambiente de desenvolvimento integrado (IDE).

link (expandir Revisão 17)

kreker
fonte
4
Obrigado pela informação. Se versões mais recentes são apenas versões antigas aprimoradas, por que o Google não tem apenas uma ferramenta de construção e a atualiza como as ferramentas SDK e plataforma? Em outras palavras, qual é o motivo de ter versões mais antigas lá?
Hong
2
Eu apenas tentei aprovar esta resposta, mas acontece que eu já a votei no ano passado! @Hong, eles mantêm as ferramentas antigas de compilação porque, à medida que atualizam as ferramentas, alguns recursos ficam obsoletos. Mas os desenvolvedores de aplicativos podem ter um código-fonte que se baseia nesses recursos, para manter as versões antigas disponíveis para suportar essas bases de códigos antigas.
Mateus9
1
Nesse caso, eles devem ter uma lista de recursos descontinuados para que os desenvolvedores possam saber exatamente se ainda precisam usar versões antigas?
Hong
@ Hong: Essa é exatamente a pergunta que eu estava procurando. Agora ...
vamos
2

As ferramentas de compilação do SDK do Android são exatamente o que o nome diz; É muito importante usar a versão mais recente das ferramentas de compilação (selecionada automaticamente pelo seu IDE por meio do SDK do Android), mas o motivo pelo qual as versões antigas são deixadas é para oferecer suporte à compatibilidade com versões anteriores, ou seja, se seus projetos dependem versões mais antigas das ferramentas de compilação.

Ojonugwa Jude Ochalifu
fonte