Для сборки и публикация приложения в Google Play нам необходимы, в первую очередь, система Windows и родная среда сборки и разработки Android Studio для Android и Visual Code с плагином для Flutter. Ну, будем пользоваться bash terminal-ом в Visual Code.В данной статье используется система Windows, но подойдет и любая другая, которая находится в списке возможных инсталлируемых по ссылке.
Установка и настройка Flutter
Для устанвоки и настройки Flutter можно воспользовтаься официальной документацией для Windows по ссылке. Тут покажем основные шаги
- Скачиваем последний архив SDK по ссылке
- Извлеките zip-файл и поместите содержащийся в нем файл flutter в нужное место установки Flutter SDK (например,
C:\Users\<ваше-имя-пользователя>\Documents
).
Предупреждение: не устанавливайте Flutter в такой каталог, как C:\Program Files\
, для которого требуются повышенные привилегии.
Если вы не хотите устанавливать фиксированную версию пакета установки, вы можете пропустить шаги 1 и 2. Вместо этого получите исходный код из репозитория Flutter на GitHub и при необходимости измените ветки или теги. Например:
$ git clone https://github.com/flutter/flutter.git -b stable
3. После этого указываем в PATH путь к бианрнику Flutter из папки SDK.
В строке поиска «Пуск» введите «env» и выберите «Изменить переменные среды» для своей учетной записи. В разделе «Пользовательские переменные» проверьте, есть ли запись с именем «Path»:
- если запись существует, добавьте полный путь к
flutter\bin
, используя;
как разделитель от существующих значений. - если запись не существует, создайте новую пользовательскую переменную с именем Path с полным путем к
flutter\bin
в качестве значения.
4. Делаем проверку
$ flutter doctor
Данная команда выведет всю информацию о наличии и потребностях в сторонних ПО.
Но для нас самое гславное, чтобы пункты Android toolchain и Android Studio былы актуальным, т.е., чтобы он был установлен заранее
Генерация ключей
В отличии от iOS для публикации Android приложения необходимо самому подписывать приложение, хотя есть втоподписка при помощи Android Studio. Но, чтобы наглядно с этим познакомиться, на мой взгляд, лучще самому сгенерировать ключ и подписать приложение не прибегая к Android Studio. Чтобы подробно ознакомиться с эатапами подписки есть хорошая статься от Flutter, в котором подробно описаны все инструкции.
Если кратко, то нам необходим инструмент генерации keytool, который входит в JDK и в командной строке bash выполняем команду
$ keytool -genkey -v -keystore c:\Users\USER_NAME\upload-keystore.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias upload
далее командная строка запросит ваши данные и данные организации. Можно их заполнять, а можно не заполнять и в конце потребует задать пароль. Запоминаем пароль и место, где хранится сгенерированный файл с расширением *.jks.Файл ключей пожно перемешать и хранить где угодно, но очень важно не потерять, иначе невозможно будет обновлять новые версии приложения с одним и тем же идентификатором и потребуется заново генерировать и опубликовать, как новое приложение.
Далее создаем файл с именем [project]/android/key.properties
, содержащий ссылку на ваше хранилище ключей
storePassword=<пароль к ключам>
keyPassword=<пароль к ключам>
keyAlias=upload
storeFile=c:\\Users\\USER_NAME\\upload-keystore.jks
важно, чтобы этот файл был добавлен в .gitignore
, чтобы данные не попали в ненужные руки.
Настройте Gradle для использования вашего ключа загрузки при создании приложения в режиме выпуска, отредактировав файл [project]/android/app/build.gradle
Добавьте информацию о хранилище ключей из файла свойств перед блоком android:
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
android {
...
}
Найдите блок buildTypes
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now,
// so `flutter run --release` works.
signingConfig signingConfigs.debug
}
}
И замените его следующей информацией о конфигурации подписи:
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
Релизные сборки вашего приложения теперь будут подписываться автоматически из командной строки и даже из Android Studio.Примечание. Возможно, вам придется запустить flutter clean
после изменения файла gradle. Это предотвращает влияние кэшированных сборок на процесс подписания.
Построение подписанного бандла
Для сборки подписанного и оптимизированного проекта Android нужно выполнить команду
$ flutter build appbundle
Данная команда в итоге подпишет и выложит результат сборки в папку [проект flutter]\build\app\outputs\bundle\release\app-release.aab
, который далее нужно уже загрузить в магазин Google Play для заране еоформленного проекта во вкладке Рабочая версия
, нажав на кнопку Создать новый выпуск
, если проект уже размещен или просто выбрав собранный релиз, если предполагается первый выпуск