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 на смартфон вы увидите такое приложение.

Возврат 10% от суммы заказа отеля на Booking
Возврат 10% от суммы заказа отеля на Booking
Предлагаем ссылку с 10% возвратом от суммы заказа при бронировании отеля через Booking
Поддержать автора Donate

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

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 устанавливал, там уже всё нормально настроено.

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
22 июля 2019 г. 7:26
Pavel K.

Qt - Тест 001. Сигналы и слоты

  • Результат:68баллов,
  • Очки рейтинга-1
o
22 июля 2019 г. 6:26
oksik193

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

  • Результат:80баллов,
  • Очки рейтинга4
ВД
21 июля 2019 г. 23:33
Влад Долгов

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

  • Результат:40баллов,
  • Очки рейтинга-8
Последние комментарии
21 июля 2019 г. 6:03
Евгений Легоцкой

да, наверное, 32-х разрядную поддержку уже давно поа было выкинуть. К слову, у вас много проектов под Android? Часто много где вижу вопросы о том, пишет ли кто-то вообще на Qt под мобильные сист…
20 июля 2019 г. 14:41
Андрей Янкович

Очень полезная информация, увы уже выкинул поддержку 32 битных бедняг.
20 июля 2019 г. 9:31
Михаиллл

Вот так qDebug()<<"position:"<<event->scenePos();
20 июля 2019 г. 8:49
Михаиллл

Добрый день. Как можно узнать координату на графической сцене при отпускании клавиши мыши?
Сейчас обсуждают на форуме
22 июля 2019 г. 8:41
BlinCT

Вот только что нашел в инете, у человека такая же ошибка. Вроде бы таже самая проблема https://stackoverflow.com/questions/37633709/how-to-create-qtquick-window-outside-the-main-thread…
22 июля 2019 г. 3:58
Евгений Легоцкой

Добрый день! Нужен совет сообщества по разработке функционала проверки орфографии. Одна из идей - добавить проверку орфографии при наборе текста статей. Полагаю, что наиболее аде…
22 июля 2019 г. 3:01
Евгений Легоцкой

Возможно, если при сохранении файла установить права доступа на файл. Что-то такое должно быть у QFile
22 июля 2019 г. 3:01
Евгений Легоцкой

Я отрисовываю квадрат в его локальной системе координат от верхнего левого угла (-30,-30) до его правого нижнего угла (30,30). Поэтому мне нужно указать размеры объекта через boundingRect()…
20 июля 2019 г. 11:04
Михаиллл

Так и с ресурсами работает QImage image(":/Images/Images/1.png");
Ищу работу?
5,000.00 руб. - 15,000.00 руб.
Дизайнер
Moskovskiy, Moscow, Russia
25,000.00 руб. - 30,000.00 руб.
Разработчик Qt/C++
Barnaul, Altai Krai, Russia

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

EVILEG
О нас
Услуги
Присоединяйтесь к нам
© EVILEG 2015-2019
Рекомендует хостинг TIMEWEB