- Вопрос или проблема
- Что я пробовал
- Проблема по-прежнему осталась
- Вопрос
- Ответ или решение
- 1. Проверьте структуру каталога Android SDK
- 2. Установка платформ Android SDK
- 3. Обновление переменных окружения
- 4. Проверка конфигурации Flutter
- 5. Установка Android Studio и проверка
- 6. Расширенное устранение неполадок
- Заключение
Вопрос или проблема
Запуск flutter doctor -v
на моей установке ubuntu 24.04.1 сообщает о следующих проблемах
- Не удалось найти Android SDK
- Не обнаружены действительные платформы Android SDK в
/usr/local/android-sdk/platforms
. Директория была пустой. - Не удалось определить версию Android Studio
Что я пробовал
Запуск ./sdkmanager --list_installed
вернул
$ cd /usr/local/android-sdk/cmdline-tools/latest/bin
$ ./sdkmanager --list_installed
[=======================================] 100% Получение удаленного репозитория...
Установленные пакеты:
Путь | Версия | Описание | Локация
------- | ------- | ------- | -------
platform-tools | 35.0.2 | Платформа инструментов SDK Android 35.0.2 | platform-tools
Так что я также запустил
$ cd /usr/local/android-sdk/cmdline-tools/latest/bin
$ sudo ./sdkmanager "emulator"
$ sudo ./sdkmanager "build-tools;35.0.0"
$ sudo ./sdkmanager "cmdline-tools;latest"
Теперь ./sdkmanager --list_installed
возвращает
/usr/local/android-sdk/cmdline-tools/latest/bin$ ./sdkmanager --list_installed
[=======================================] 100% Получение удаленного репозитория...
Установленные пакеты:
Путь | Версия | Описание | Локация
------- | ------- | ------- | -------
build-tools;35.0.0| 35.0.0 | Инструменты сборки SDK 35 | build-tools/35.0.0
cmdline-tools;latest| 16.0 | Командные инструменты SDK | cmdline-tools/latest
emulator | 35.2.10 | Эмулятор | emulator
platform-tools | 35.0.2 | Платформа инструментов SDK 35.0.2 | platform-tools
Последние строки моего ~/.bashrc
следующие
export ANDROID_HOME=/usr/local/android-sdk
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
Запуск tree -dL 2 /usr/local/android-sdk
возвращает
/usr/local/android-sdk
├── build-tools
│ └── 35.0.0
├── cmdline-tools
│ └── latest
├── emulator
│ ├── bin64
│ ├── include
│ ├── lib
│ ├── lib64
│ ├── qemu
│ └── resources
├── licenses
└── platform-tools
└── lib64
Проблема по-прежнему осталась
Это вывод flutter doctor -v
[!] Android toolchain - разработка для устройств Android
• Android SDK по адресу /usr/local/android-sdk
✗ Не удалось найти Android SDK.
Установите Android Studio с: https://developer.android.com/studio/index.html
При первом запуске она поможет вам установить компоненты Android SDK.
(или посетите https://flutter.dev/to/linux-android-setup для подробных инструкций).
Если Android SDK был установлен в пользовательское местоположение, используйте
`flutter config --android-sdk`, чтобы обновить его до этого местоположения.
• ANDROID_HOME = /usr/local/android-sdk
✗ Не обнаружены действительные платформы Android SDK в /usr/local/android-sdk/platforms. Директория была пустой.
• Попробуйте переустановить или обновить Android SDK,
посетите https://flutter.dev/to/linux-android-setup для подробных инструкций.
[!] Android Studio (версия неизвестна)
• Android Studio по адресу /opt/android-studio
• Плагин Flutter можно установить с:
🔨 https://plugins.jetbrains.com/plugin/9212-flutter
• Плагин Dart можно установить с:
🔨 https://plugins.jetbrains.com/plugin/6351-dart
✗ Не удалось определить версию Android Studio.
• Версия Java OpenJDK Runtime Environment (build 17.0.11+0-17.0.11b1207.24-11852314)
Вопрос
Что еще я могу сделать, чтобы исправить
- Не удалось найти Android SDK
- Не обнаружены действительные платформы Android SDK в /usr/local/android-sdk/platforms
Ответ или решение
Для решения проблемы с сообщениями "Unable to locate Android SDK" и "No valid Android SDK platforms found in /usr/local/android-sdk/platforms" в вашем окружении Ubuntu 24.04.1, необходимо учесть несколько важных моментов.
1. Проверьте структуру каталога Android SDK
Сначала убедитесь, что структура каталогов вашего Android SDK верна. На основании предоставленной вами информации, директорий platforms
не существует, поэтому Flutter не может обнаружить валидные платформы Android. Чтобы это исправить, вам нужно установить соответствующие платформы.
2. Установка платформ Android SDK
Вам нужно использовать инструмент sdkmanager
, который уже установлен у вас. Для этого выполните следующие команды:
cd /usr/local/android-sdk/cmdline-tools/latest/bin
sudo ./sdkmanager "platforms;android-31"
Вместо android-31
вы можете указать другую версию платформы, если необходимо. После установки, проверьте, что директория platforms
наполнена содержимым:
tree -dL 2 /usr/local/android-sdk
3. Обновление переменных окружения
Убедитесь, что переменные окружения правильно настроены. Откройте файл ~/.bashrc
, и убедитесь, что у вас есть следующее:
export ANDROID_HOME=/usr/local/android-sdk
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$ANDROID_HOME/cmdline-tools/latest/bin
После внесения изменений, не забудьте обновить вашу среду:
source ~/.bashrc
4. Проверка конфигурации Flutter
Запустите команду для указания пути к вашему Android SDK:
flutter config --android-sdk /usr/local/android-sdk
Затем проверьте состояние с помощью:
flutter doctor -v
5. Установка Android Studio и проверка
Если проблемы все еще сохраняются, убедитесь, что Android Studio установлена правильно. Вы можете скачать и установить Android Studio с официального сайта: Android Studio. После установки откройте Android Studio, и следуйте инструкциям по настройке SDK.
6. Расширенное устранение неполадок
- Убедитесь, что у вас установлены необходимые разрешения для каталога SDK. Вы можете проверить и установить необходимые разрешения командой:
sudo chown -R $(whoami):$(whoami) /usr/local/android-sdk
- Убедитесь, что ваш Java JDK установлен и настроен правильно, так как он необходим для работы Android SDK.
Заключение
После выполнения всех указанных шагов, вы должны быть в состоянии успешно запустить flutter doctor -v
без ошибок, связанных с отсутствием Android SDK или платформ. Если проблемы продолжаются, дайте знать, предоставив дополнительную информацию о том, что было выполнено, чтобы мы могли дальше помочь вам в решении этой проблемы.