Что такое инструменты сборки Android SDK, инструменты платформы и инструменты? И какую версию следует использовать?

331

Я знаю, что это очень элементарный вопрос, но, к моему удивлению, я не смог найти никакого документа об инструментах сборки Android SDK. Помимо Android SDK Tools и Android SDK Platform-инструментов, существует множество Android SDK Build-инструментов, как показано на прилагаемом скриншоте. Кто-нибудь может указать на источник, объясняющий их все, и помочь выяснить, как определенная версия Android SDK Build-tools выбрана для использования?

введите описание изображения здесь

Отредактировано (2014-02-27) :

Я до сих пор не до конца понимаю все инструменты. Ниже приведены мои ограниченные знания, основанные на последних документах Google:

  • Инструменты Android SDK Build раньше были компонентами инструментов платформы Android SDK . Они были отделены от инструментов платформы Android SDK, поэтому инструменты сборки можно обновлять независимо от компонентов интегрированной среды разработки (IDE).
  • Инструменты Android SDK Platform настроены для поддержки функций новейшей платформы Android. Они имеют обратную совместимость, поэтому вы всегда используете последние обновления инструментов Android SDK Platform, даже если ваше приложение предназначено для более старых платформ Android.
  • Инструменты SDK не зависят от платформы и требуются независимо от того, на какой платформе Android вы разрабатываете.

Я до сих пор не понимаю смысла использования инструментов Android SDK Build из инструментов Android SDK Platform, которые имеют единственный экземпляр и которыми легко управлять обновлением. Единственная возможная причина, по которой я могу придумать, заключается в том, что для создания некоторых приложений приходится использовать более старые компоненты сборки. Документ Google упоминает об этом, но не объясняет почему. Взглянув на заметки о выпуске, вы заметите, что обновления Android SDK Build-tools предназначены в основном для исправления ошибок или поддержки новых платформ. Единственная причина, по которой я могу подумать, что некоторые приложения используют более старые версии Android SDK Build-tools, заключается в том, что они полагаются на определенные ошибки Android SDK Build-tools, Эти приложения не будут функционировать нормально, если не будут созданы с этими ошибками. Хотелось бы, чтобы Google мог объяснить это лучше, приведя один или два примера, показывающих, почему эти ошибки в инструментах важны для определенных приложений.

Hong
источник

Ответы:

88

О версии Android SDK Build-tools ответ

По умолчанию в Android SDK используется самая последняя загруженная версия инструментов сборки.

Источник

В Eclipse вы можете выбрать конкретную версию, используя sdk.buildtoolsсвойство в project.propertiesфайле.

Кажется, нет официальной страницы, объясняющей все инструменты сборки. Вот что об этом говорит команда Android.

Инструменты [build], такие как aidl, aapt, dexdump и dx, обычно вызываются инструментами сборки Android или инструментами разработки Android (ADT), поэтому вам редко нужно вызывать эти инструменты напрямую. Как правило, вы должны полагаться на инструменты сборки или плагин ADT, чтобы вызывать их по мере необходимости.

Источник

В любом случае, вот синтез различий между инструментами, инструментами платформы и инструментами сборки:

  • Инструменты Android SDK
    • Расположение: $ANDROID_HOME/tools
    • Основные инструменты: ant-скрипты (для создания ваших APK) и ddms(для отладки)
  • Android SDK Платформа-инструменты
    • Расположение: $ANDROID_HOME/platform-tools
    • Основной инструмент: adb(для управления состоянием эмулятора или устройства Android)
  • Android SDK Build-инструменты
    • Расположение: $ANDROID_HOME/build-tools/$VERSION/
    • Документация
    • Основные инструменты: aapt(для создания R.java и неподписанных, неподписанных APK), dx(для преобразования байт-кода Java в байт-код Dalvik) и zipalign(для оптимизации ваших APK)
лактон
источник
Я очень рад, что есть журнал изменений для разных версий инструментов сборки
Ewoks
@lacton Я использовал старый инструмент сборки (версия 17) для своего проекта. Могу ли я восстановить его с помощью новейшего инструмента сборки?
user1156041 20.06.16
Можем ли мы использовать одни и те же инструменты сборки SDK + для Eclipse и Studio?
Мухаммед Бабар
38

Инструменты сборки Android SDK используются для отладки, сборки, запуска и тестирования приложения Android.

Инструменты сборки Android можно использовать для разработки и работы из командной строки или IDE (например, Eclipse или Android Studio).

Также используется для подключения устройств Android и их рутирования (fastboot, adb и др.)

Всегда используйте последнюю версию. (Рекомендуется)

Подробнее об инструментах и ​​командах сборки Android

mipreamble
источник
Спасибо за информацию. Вы имеете в виду, что Android Build Tools «используется для подключения устройств Android и их рутинга»? Adbis часть инструментов платформы Android. Зависит ли adb от функций Android Build Tools? Если да, то как? Я любопытный.
Гонконг
adb может использоваться для извлечения и извлечения файлов из командной строки. (Дополнительные функции.) Fastboot можно использовать для прошивки пользовательских загрузчиков. Однако эти команды бесполезны для разработки под Android, если вы не используете терминал для разработки. Все доступно в самой IDE.
mipreamble
1
Насколько я понимаю, Eclipse использует adb.exe в фоновом режиме.
Гонконг
@mipreamble Так в чем же разница между Android SDK: инструменты, инструменты платформы и инструменты сборки? Я могу собрать и запустить свое приложение без инструментов сборки.
Крекер
1
@ CJBS Да. Придерживаться установленных инструментов для версии будет работать. Инструменты сборки обновляются по мере появления новой версии Android. Вам нужно скомпилировать и протестировать приложение на наличие последних версий Android.
mipreamble
16

Я оставлю обсуждение различий между инструментами сборки, инструментами платформы и инструментами для других. С практической точки зрения вам нужно знать только ответ на второй вопрос:

Какую версию следует использовать?

Ответ: используйте самую последнюю версию.

Для тех, кто использует Android Studio с Gradle, buildToolsVersionего необходимо установить в build.gradleфайле (Module: app).

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"

    ...
}

Где взять последний номер версии инструментов сборки?

Откройте Android SDK Manager.

  • В Android Studio выберите « Инструменты» > « Android» > « Менеджер SDK» > « Внешний вид и поведение» > « Системные настройки» > « Android SDK».
  • Выберите вкладку Инструменты SDK .
  • Выберите Android SDK Build Tools из списка.
  • Проверьте Показать детали пакета .

Последний элемент покажет самую последнюю версию.

введите описание изображения здесь

Убедитесь, что он установлен, а затем запишите этот номер как buildToolsVersionin build.gradle(Модуль: приложение).

Suragch
источник
1
Если существует 24.0.2, почему 24.0.1 и 24 не помечены как устаревшие (автономный менеджер позволяет отображать / скрывать устаревшие пакеты)?
user1803551
3
@ user1803551, не всегда желательно автоматически использовать самую последнюю версию инструментов сборки. Например, скажем, вы уже тщательно протестировали свое приложение с определенной версией инструментов сборки. Если вы обновите свои инструменты сборки, возможно, что изменение там может что-то сломать в вашем приложении. Разрешение разработчикам продолжать использовать старые версии инструментов сборки позволяет им быть уверенными, что их сборка будет работать так, как ожидалось. Если вы посмотрите на шаблон того, что объявлено устаревшим, вы увидите, что 24 и 24.0.1 в конечном итоге будут объявлены устаревшими.
Сурагч
13

Вы можете найти подробную информацию об этом в этом Android - Инструменты командной строки


ТЛ; др:

Инструменты SDK:

  1. Android SDK Manager (sdkmanager)
  2. AVD Manager (avdmanager)
  3. Dalvik Debug Monitor Server (ddms)

Инструменты сборки:

  1. подписавшийся
  2. Proguard
  3. zipalign
  4. jobb

Инструменты платформы:

  1. ADB
  2. aidl, aapt, dexdump и dx
  3. bmgr
  4. LogCat
Suhaib
источник
1
aidl, aapt, dexdump и dx - это компоненты инструментов сборки, а не инструментов платформы
Masum
9

Правильный ответ

Отсоедините специфичные для сборки компоненты Android SDK от компонента platform-tools, чтобы инструменты сборки можно было обновлять независимо от компонентов интегрированной среды разработки (IDE).

ссылка (разверните Редакцию 17)

Крекер
источник
4
Спасибо за информацию. Если более новые версии являются просто улучшенными более старыми версиями, почему Google не имеет только одного Build-tools и продолжает обновлять его, как SDK Tools и Platform-tools? Другими словами, в чем причина наличия более старых версий?
Хун
2
Я просто попытался проголосовать за этот ответ, но оказалось, что я уже проголосовал за него в прошлом году! @ Гонконг, они сохраняют старые инструменты сборки, потому что при обновлении инструментов некоторые функции становятся устаревшими. Но разработчики приложений могут иметь исходный код, который опирается на эти функции, поэтому они сохраняют старые версии доступными для поддержки этих старых баз кода.
Метеор
1
В этом случае они должны иметь список устаревших функций, чтобы разработчики могли точно знать, должны ли они все еще использовать старые версии?
Hong
@Hong: Это именно тот вопрос, который я искал. Теперь ... прочь, чтобы найти ответ :)
DerpyNerd
2

Инструменты сборки Android SDK - это именно то, что говорит само название; инструменты для создания приложений Android. Очень важно использовать последнюю версию инструментов сборки (выбирается автоматически вашей IDE через Android SDK), но причина, по которой старые версии остаются там, заключается в поддержке обратной совместимости, то есть если ваши проекты зависят от старые версии инструментов сборки.

Оджонугва Джуд Очалифу
источник