Я прошёл всё, чтобы вам не пришлось

Привет. Если вы заинтересовались данной статьёй, то скорее всего вы уже знаете о Flutter/Dart всю необходимую информацию и интересуетесь Linux. В данной статье я расскажу как правильно настроить flutter sdk и загрузить все необходимые приложения.

Установка Flutter sdk

Вам не придётся устанавливать Dart, так как он идёт в комплекте с Flutter.

  • Для пользователей Ubuntu можно скачать Flutter через snap:

sudo snap install flutter --classic
  • Для остальных пользователей Linux:

    • С официального сайта Flutter скачиваем tar.xz-архив.

    • Распаковываем его в любую папку. Желательно создать новую, чтобы было удобнее и более структурировано. К примеру, у меня папка Flutter находится по пути /home/user/sdk/.

    • Далее мы должны указать системе путь до flutter. Изменяем файл ~/.bashrc (по умолчанию он скрыт и чтобы показать его в файловом менеджере нужно в Домашней папке нажать Ctrl+h). Изменить его мы можем как графически, так и через терминал. Записываем в .bashrc следующую команду. Также записываем ту же команду в терминале.

    • export PATH="$PATH:путь_до_папки_flutter/flutter/bin"

    • Теперь мы можем запустить команду flutter doctor. Она покажет нам чего не хватает в нашей системе для работы с flutter. Если команда не сработала перезагрузите систему.

    • Поздравляю, Flutter установлен.

Установка необходимых приложений и зависимостей.

Все программы мы устанавливаем либо с архивов, либо из встроенных репозиториев. Скачивать flatpak версии не рекомендуется, так как приложения flatpak работают каждый в своей песочнице. Это значит они не будут иметь доступ к системе и запускать Flutter приложения в них будет затруднительно.

  • Android Studio:

    • Скачаем архив с Android Studio;

    • Распакуем его в отдельную папку. Как упоминалось ранее, распаковать можно в любую удобную для вас папку.

    • Теперь нам нужно запустить исполняемый файл studio.sh. Сделать это можно двумя способами. Через дополнительное меню файла или через терминал.

      Если у вас нет пункта "Запустить как приложение" зайдите в терминал. Там перейдите в папку, где находится этот исполняемый файл:

      cd полный_путь_до_папки_android-studio/android-studio/bin/

    • Когда вы перешли в эту папку напишите данную команду:

      ./studio.sh.

    • Загрузите плагин flutter.

    • Установите иконку для запуска этого приложения в меню. Найдите в меню tools пункт `create desktop entry`.

    • Дальнейшая настройка будет соответствовать аналогичным настройкам из windows.

  • Intellij Idea

    • Вы можете следовать инструкции Android Studio в точности. Все шаги одинаковы.

    • Вот ссылка.

  • VSCode:

    • Загрузите deb/rpm пакет с официального сайта.

    • Установите его.

    • Скачайте расширение flutter. Данное расширение также скачает другие дополнительные расширения.

  • Браузер:

    • Загрузите через пакетный менеджер любой браузер:
      sudo apt install chromium
      sudo dnf install chromium

    • Узнайте путь до исполняемого файла браузера.
      which chromium-browser

    • Введите команду ниже в .bashrc и в терминал.
      export CHROME_EXECUTABLE=/usr/bin/chromium-browser
      Данная команда укажет, flutter, где находится браузер.

    • Перезагрузитесь.

  • Linux зависимости:

    Здесь всё зависит от дистрибутива. Команда flutter doctor укажет каких пакетов не хватает. Просто загрузите их в терминале. Пример для Fedora linux:
    sudo dnf install clang cmake ninja-build gtk3-devel
    После перезагрузитесь.

Возможные проблемы

У пользователей Ubuntu и дистрибутивов, основанных на нём, при запуске на Linux может выйти ошибка:

CMake Error at /usr/share/cmake-3.22/Modules/CMakeTestCXXCompiler.cmake:62 (message): The C++ compiler

"/usr/bin/clang++"

is not able to compile a simple test program.

It fails with the following output:

Change Dir: /home/akyl/StudioProjects/untitled/build/linux/x64/debug/CMakeFiles/CMakeTmp

Run Build Command(s):/usr/bin/ninja cmTC_05dec && [1/2] Building CXX object CMakeFiles/cmTC_05dec.dir/testCXXCompiler.cxx.o
[2/2] Linking CXX executable cmTC_05dec
FAILED: cmTC_05dec 
: && /usr/bin/clang++   CMakeFiles/cmTC_05dec.dir/testCXXCompiler.cxx.o -o cmTC_05dec   && :
/usr/bin/ld: невозможно найти -lstdc++: Нет такого файла или каталога
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.

CMake will not be able to correctly generate this project. Call Stack (most recent call first): CMakeLists.txt:3 (project)

Ошибка выходит когда flutter не может найти путь до компилятора C (clang или g++).

Для решения этой проблемы следуйте следующим шагам:

  • При каждом перезапуске программы удаляйте папку build.

  • В папке linux найдите файл CMakeLists.txt:

  • Найдите строку project(...). Перед ней вставьте set(CMAKE_CXX_COMPILER "/usr/bin/clang++"). Перезапустите проект.

  • Если вышла ошибка, загрузите g++.

    sudo apt install g++

    Повторите все шаги выше, только поменяйте clang++ на g++.

    В конечном итоге, в  CMakeLists.txt должно быть что-то такое.
    В конечном итоге, в CMakeLists.txt должно быть что-то такое.
  • Если программа успешно запустилась, можно не удалять при запуске папку build.

Заключение

В процессе написания данного блога на самом деле я искал способы, как обойти ограничения flatpak. Изначально этот блог должен был быть вопросом к сообществу, как настроить flatpak версии вышеперечисленных приложений, который превратился в гайд для новичков. Тем не менее я всё ещё ищу ответ на вопрос как из песочницы flatpak-приложения взаимодействовать с системой. Я надеюсь, что в скором времени найду ответ.

Надеюсь ваше программирование на линуксе будет лёгким и продуктивным.

Комментарии (2)


  1. Testman2023
    13.06.2023 05:24

    Не тестировали такой комбайн на Linux: Flutter, VS Code(Flutter Extension on VS Code) и Android Studio?
    Мне удобней работать в google-chrome:

    wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
    sudo apt install ./google-chrome-stable_current_amd64.deb


    1. Cosmosiai Автор
      13.06.2023 05:24

      Привет. Да, такой комбайн можно использовать. Они все будут прекрасно работать (даже параллельно).

      Насчёт, deb пакета chrome. После его установки надо в консоль написать which google-chrome, а далее следовать инструкции.