Политика конфиденциальностиКонтактыО сайтеОтзывыGitHubDonate
© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB

Flutter - Урок 001. Hello world

Android, Flutter, Hello World

Flutter - это свежий фреймворк от компании Google для разработки приложений для Android и iOS. Используемый язык программирования - Dart (также разрабатывается компанией Google).

Разберёмся с запуском нашего первого приложения на Flutter.

Для создания нашего первого приложения, которое запустим под Android, необходимо произвести установку всех необходимых компонентов. Установка данных компонентов будет производиться в ОС Ubuntu Linux.

Скачать Flutter

В официальной документации сначала предлагается скачать сам Flutter, а потом распаковать его.

cd ~/development
tar xf ~/Downloads/flutter_linux_v1.0.0-stable.tar.xz

Проверить наличие необходимых компонентов

Далее предлагают добавить утилиту flutter в пути, чтобы можно было запустить диагностику наличия всех необходимых компонентов в системе.

export PATH=$PATH:`pwd`/flutter/bin

После чего запускается утилита flutter doctor , которая покажет, все ли компоненты имеются в системе

[-] Android toolchain - develop for Android devices
    • Android SDK at /Users/obiwan/Library/Android/sdk
    ✗ Android SDK is missing command line tools; download from https://goo.gl/XxQghQ
    • Try re-installing or updating your Android SDK,
      visit https://flutter.io/setup/#android-setup for detailed instructions.

Указать пути к SDK Flutter

В первую очередь предлагают указать пути к SDK Flutter. Для этого нужно:

  1. Найти директорию, куда был помещён flutter. Если вы следовали инструкции, то путь должен выглядеть так
    /home/user/development/flutter/bin
  2. Открыть или создать файл
    $HOME/.bash_profile
  3. Добавить путь к SDK flutter в данный файл
    export PATH=$PATH:/home/user/development/flutter/bin
  4. Обновить среду bash
    source $HOME/.bash_profile
  5. Можете проверить, что путь добавлен
    echo $PATH

Установка Android Studio

Поскольку это руководство по настройке под Linux, то можно воспользоваться установкой Android Studio через систему snap пакетов. Это действительно проще.

sudo snap install android-studio --classic

Я пропущу стандартную настройку Android Studio, например, установку цветовой схемы. Поскольку самый важный момент - это установка плагинов для работы с Dart и Flutter.

Android Studio Settings

Найдёте эти параметры в настройках File -> Settings

Android Studio Settings

Dart Plugin

Dart plugin

Flutter Plugin

Flutter plugin

Согласие с лицензиями

Вам нужно будет ещё раз запустить flutter foctor --android-licenses , чтобы выполнить согласие со всеми лицензиями

Start a new Flutter project

После чего у вас появится возможность создания Flutter проекта Start a new Flutter project

Start a new Flutter project

Выбираем Flutter application

Flutter application

Указываем Flutter SDK

Указываем домен компании

После чего будет создан Flutter проект

Обратите внимение на структуру проекта. В External Libraries обязательно должны быть все необходимые компоненты:

  1. Dart Packages
  2. Dart SDK
  3. Flutter for Android

Если какие-то из пунктов недоступны, то возможно вам потребуется или заново переустановить Flutter или правильно настроить пути в настройках IDE.

Настройка Dart

Настройка Dart

Настройка Flutter

Настройка Flutter

Подключение Android Смартфона

Далее подключаем к компьютеру Android смартфон, чтобы выполнить последний пункт по необходимым компонентам. Можно конечно использовать эмулятор, но лично я предпочитаю живое устройство. В конце концов Android смартфон в данном случае под рукой долен быть.

И проверяем, что всё в порядке через flutter doctor.

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, v1.0.0, on Linux, locale C.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK 28.0.3)
[✓] Android Studio (version 3.2)
[✓] Connected device (1 available)

• No issues found!

Заключение

После сборки и установки apk на смартфон вы увидите такое приложение.

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Доброго времени суток. В Андроид разработке новичек, посему будут вовросы. Делал все по статье. Но получил следующую картину

rust@Leap15:~/Android/Sdk/tools/bin> flutter doctor -v
[✓] Flutter (Channel stable, v1.0.0, on Linux, locale ru_RU.UTF-8)
    • Flutter version 1.0.0 at /home/rust/develop/flutter
    • Framework revision 5391447fae (6 недель назад), 2018-11-29 19:41:26 -0800
    • Engine revision 7375a0f414
    • Dart version 2.1.0 (build 2.1.0-dev.9.4 f9ebf21297)

⣾Error retrieving device properties for ro.product.cpu.abi:
error: insufficient permissions for device
See [http://developer.android.com/tools/device.html] for more information


[!] Android toolchain - develop for Android devices (Android SDK 28.0.3)
    • Android SDK at /home/rust/Android/Sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • Java binary at: /opt/android-studio/jre/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)
    ✗ Android license status unknown.

[✓] Android Studio (version 3.2)
    • Android Studio at /opt/android-studio
    • Flutter plugin version 31.3.1
    • Dart plugin version 181.5656
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)

[✓] Connected device (1 available)
    • 612HKBR8272WZ • 612HKBR8272WZ • android-arm • Android null (API null)

! Doctor found issues in 1 category.

При попытке обновить лицензии выдает следующе

rust@Leap15:~/Android/Sdk/tools/bin> /home/rust/Android/Sdk/tools/bin/sdkmanager --update
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
        at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156)
        at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)
        at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)
        at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:73)
        at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
        ... 5 more

Подскажите в какую сторону копать.....

Добрый день!

Саму Android Studio запускали? она должна скачать нужные SDK самостоятельно при первом старте. Либо запустите Android-Studio и посмотрите, что может выдать SDK Manager. То есть сделайте без консольных утилит это.

Я поэтому из snap устанавливал, там уже всё нормально настроено.

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
ГК
20 марта 2019 г. 9:01
Геннадий Костоянский

C++ - Тест 002. Константы

  • Результат:0баллов,
  • Очки рейтинга-10
ГК
20 марта 2019 г. 8:46
Геннадий Костоянский

C++ - Тест 002. Константы

  • Результат:25баллов,
  • Очки рейтинга-10
ГК
20 марта 2019 г. 8:00
Геннадий Костоянский

C++ - Тест 001. Первая программа и типы данных

  • Результат:100баллов,
  • Очки рейтинга10
Последние комментарии
MU
20 марта 2019 г. 15:43
Maciej Urmański

It's possible to simply add vote option for non logged users?
20 марта 2019 г. 9:45
Евгений Легоцкой

Добрый день. Поппробуйте домен localhost, а url соответственно http://localhost Возможно, потребуется указать порт. Например, так http://localhost:8000
19 марта 2019 г. 12:57
AlexanderBardin

Добрый день. А проверить работоспособность локально как-то можно не указывая реальнй сайт (еще в разработке)
16 марта 2019 г. 13:55
Дмитрий

Спасибо за статью. Давно итересует следующий вопрос: с помощью переменных QMAKE_TARGET_COMPANYQMAKE_TARGET_PRODUCTQMAKE_TARGET_DESCRIPTIONможно задать свойства компилируемой программы, о...
JS
12 марта 2019 г. 10:19
Jean Stefanovich

Большое спасибо за разъяснения!
Сейчас обсуждают на форуме
20 марта 2019 г. 12:26
Евгений Легоцкой

Лучше стараться избегать этого. Нормального механизма нет. Я просто выдёргиваю из бэкенда перевёденные куски шаблона, если нужно что-то задействовать в JS.
17 марта 2019 г. 22:47
Евгений Легоцкой

Добрый день. Вот, нашлось у меня немного времени. Делается это через шаблон проектирования наблюдатель. GraphKS_mfvSlup.zip
ЧГ
15 марта 2019 г. 21:52
Чарльз Грин

спасибо, попробую, отпишусь
m
15 марта 2019 г. 19:41
mihamuz

Сори догадался)
n
12 марта 2019 г. 16:57
newbie.works.with.QT

Большооооое спасибо!!!!!Не передать как я вам благодарен, спасибо что всегда отзываетесь.Теперь я смогу продолжить работу в QT!!! (пробую писать бота (Я как вы могли догадаться немного не пр...
Присоединяйтесь к нам в социальных сетях

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы