Android SDK tools + Flutter: правильная структура каталогов и переменные среды - PullRequest
1 голос
/ 05 августа 2020

У меня чертовски много времени, чтобы получить Flutter , чтобы найти инструменты командной строки SDK . Я пытаюсь установить последний, скачав zip-архив по этой ссылке и распаковав его, скажем, ${HOME}/Android. Это создает каталог tools, и если я запускаю исполняемый файл

${HOME}/Android/tools/bin/sdkmanager

напрямую (с любым количеством параметров и т. Д. c.), Я всегда получаю ошибку, как описано в this other пост . Рекомендуемое там решение действительно работает: переместите каталог tools дальше по дереву, чтобы получить путь

${HOME}/Android/cmdline-tools/tools/bin/sdkmanager

Этот новый промежуточный каталог должен называться cmdline-tools; Я пробовал другие вещи (Sdk, sdk_manager, и c.), Но безрезультатно: возникают те же ошибки.

Теперь, ковыряясь в клонированном репозитории Flutter , я вижу в файл dev/bots/download_android_sdk.sh, который должен иметь исполняемый файл

$ANDROID_SDK_ROOT/tools/bin/sdkmanager

Это подсказывает мне, что в моей настройке мне нужно

ANDROID_SDK_ROOT=${HOME}/Android/cmdline-tools

экспортировать это и запускать кучу sdkmanager команд установки (например,

$ANDROID_SDK_ROOT/tools/bin/sdkmanager platform-tools

и т.п.) Я вижу что мой каталог ${HOME}/Android начинает заполняться соответствующими каталогами platform-tools, build-tools, et c. Таким образом, эти недавно установленные каталоги живут на том же уровне, что и мой $ANDROID_SDK_ROOT, который помню, что когда я это делаю, он установлен на $HOME/Android/cmdline-tools.

С другой стороны, когда я затем go посмотрите (в том же репозитории Flutter) в файле

packages/flutter_tools/lib/src/android/android_sdk.dart

Я вижу, что у меня должен быть каталог $ANDROID_SDK_ROOT/build-tools. Это находится в прямом противоречии с предыдущим наблюдением, что build-tools и подобные должны быть на том же уровне, что и $ANDROID_SDK_ROOT, а не под it.

Моя проблема в том, что я не знаю, как разрешить это очевидное противоречие в кодовой базе Flutter. Что это? В моей настройке ANDROID_SDK_ROOT должно быть $HOME/Android или $HOME/Android/cmdline-tools?

PS

Я понимаю , что $ANDROID_SDK_ROOT должен быть «каталогом установки SDK», но в этом контексте это мне ничего не говорит: в конце концов , установка SDK - это именно то, что я пытаюсь сделать.

1 Ответ

1 голос
/ 12 августа 2020

У вас также есть пара комментариев к GitHub, но имейте в виду, что файлы в папке dev/ в репозитории Flutter в основном предназначены для целей CI и для людей, которые разрабатывают сам фреймворк Flutter.

Скрипты, на которые вы указываете, на самом деле являются устаревшими файлами, которые использовались для настройки некоторых тестов, которые мы запускали на CI. Теперь мы настроили эти тесты по-другому, но забыли удалить файлы - так что спасибо, что указали на это, они скоро исчезнут!

Лучший способ настроить Android SDK - это следовать инструкция на сайте Android Studio. Вы можете использовать Studio для этого или просто загрузить сами пакеты SDK.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...