#Приложение Checker.

Для запуска необходимо установить [Dart](https://www.dartlang.org/install) - язык программирования и
 [flutter](https://flutter.io/setup/) - фреймворк для создания кроссплатформенных мобильных приложений на этом языке.

Для сборки и запуска приложения используются команды flutter run (собирает debug apk, устанавливает его на устройство) и
flutter build (собирает release apk, не устанавливает на устройство).

Команды run и build необходимо выполнять с опцией --flavor, чтобы apk файл собирался с необходимыми ресурсами и настройками.
Название конкретной flavor передается в аргументе. Все flavors перечислены в файле android/app/build.gradle.

#Добавление брендированного приложения

Для добавления брендированного приложения с названием %name% необходимо:

1) В каталог assets/ положить изображения %name%_logo.png и %name%_splash.png
    В качестве splash очень желательно использовать квадрат белого цвета 100x100.

2) В файл pubscpec.yaml в раздел assets/ добавить пути этих изображений.

3) В файл lib/resources.dart в методы ```getPrimaryColor``` и ```getButtonsColor```
   добавить цвета необходимые цвета.

4) В файл android/app/build.gradle в раздел productFlavors добавить блок следующего вида:
```
%name% {
    applicationId 'com.dinect.autobonus'
    buildConfigField "String", "locale", "\"ru\""
    buildConfigField "String", "flavor", "\"%name%\""
    buildConfigField "int", "currency", "643"
    buildConfigField "String", "supportPhone", "\"8-800-234-6064\""
    buildConfigField "String", "supportUrl", "\"https://www.auto-club.biz\""
    buildConfigField "String", "endpoint", "\"https://pos-api-int.dinect.com/20130701/\""
    buildConfigField "String", "appToken", "\"9fec83cdca38c357e6b65dbb17514cdd36bf2a08\""
}
```

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

6) В каталог android/app/src/ добавить каталоги %name%/res в которых воссоздать структуру ресурсов аналогичную представленной в каталоге android/app/src/pip/res/:
Каталоги mipmap должны содержать иконки, каталоги values должны содержать .xml файлы с названием приложения в следующем формате:
```
<resources>
    <string name="app_name">%name%</string>
</resources>
```

Иконки проще всего нарезать тут:
https://romannurik.github.io/AndroidAssetStudio/icons-launcher.html

В качестве Foreground выбрать иконку приложения размером 512x512, выставить необходимые параметры и скачать архив с нарещанными иконками.

После выполнения всех этих пунктов появится возможность собирать приложение
как описано выше(flutter run --flavor %name% либо flutter build apk --flavor %name%).

#Добавление локализации приложения

1) В каталог lib/i18n добавить файл messages_%locale%.dart.
Файл делать по аналогии с messages_en.dart. Либо с messages_ru.dart.

2) В каталог android/app/src/main/res добавить каталог values-%locale% с единственным файлом strings.xml.
Файл должен иметь структуру полностью аналогичную файлу android/app/src/main/res/values/strings.xml, измениться должны только значения для строк.

#IOS
0) Установите flutter https://flutter.io/setup-macos/
1) В Xcode создать target аналогично существующим (Autobonus, Develop, PIP, Dinect). Лучше делать путем дублирования существующих
2) При создании таргета автоматически создается build scheme с таким же именем и привязывается к нему
3) В настройках созданного target прописать bundleId (например com.dinect.something)
4) В файле ios/Runner/AppDelegate.m определить словарь настроек аналогично существующим
5) Для того чтобы сбилдить нужный брэнд в Xcode указать нужную схему

Регламент сборки
1. Четко фиксируем версию Flutter
2. Четкая фиксация версии библиотек зависимостей андройд и iOS
3. При обновлении версий библиотек и flutter разработка в отдельной ветке. (default всегда должен собираться)
4. Разработка новых фич в отдельных ветках
5. Настройка CI для Андройд до 
6. Настройка Hg Ignore корректно 22.06
