Flutter: генерация apk (Android)
Для того чтобы попробовать получившееся приложение на «реальном» телефоне, а не на эмуляторе, необходимо проделать ряд манипуляций.
Вариант 1: создание не подписанного apk. Не пригодно для размещения в Google Play, но пригодно для того чтобу устанавливать на телефон для «потестить». Этот способ подойдет если нужно «по быстрому» или не планируется распространять приложение через Google Play
Для этого достаточно выполнить в меню: Build -> Flutter -> Build APK. Спустя несколько минут компиляции и сборки, результат можно выловить в папке C:\Users\<пользователь>\AndroidStudioProjects\invent\build\app\outputs\flutter-apk
Вариант 2: создание подписанного apk и публикация в Google Play занимает несколько шагов
- Добавление иконки приложения (launchpad icon)
- Настройка подписи приложения
- Проверка манифеста приложения (AndroidManifest.xml)
- Проверка конфигурации сборки (build.gradle)
- Создание версии приложения для публикации (—release)
- Публиковать в Google Play Store
Добавление иконки приложения
По умолчанию приложение собирается с иконкой Flutter. Чтобы её поменять — нужно заместить эти иконки своими в папке <app dir>/android/app/src/main/res/
Настройка подписи приложения
Для публикации приложения в Play Store необходимо подписать приложение цифровой подписью. Создание ключа:
1 2 3 4 5 6 |
keytool -genkey -v -keystore ~/.keystore \ -keyalg RSA \ -keysize 2048 \ -validity 10000 \ -alias key |
Далее необходимо связать приложение с ключём. Для этого нужно создать файл <app dir>/android/key.properties
1 2 3 4 5 |
storePassword=<пароль> keyPassword=<пароль> keyAlias=key storeFile=<путь к файлу ключа например /home/user/.keystore> |
Сконфигурируем Gradle <app dir>/android/app/build.gradle
- заменить следующее
1 |
android { |
на информацию о файле конфигурации
1 2 3 4 5 6 7 |
def keystoreProperties = new Properties() def keystorePropertiesFile = rootProject.file('key.properties') if (keystorePropertiesFile.exists()) { keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) } android { |
2. Заменить конфигурацию сборки релиза
1 2 3 4 5 6 7 8 |
buildTypes { release { // TODO: Add your own signing config for the release build. // Signing with debug keys for now, // so `flutter run --release` works signingConfig signingConfig.debug } } |
на следующую информацию, содержащую параметры подписи
1 2 3 4 5 6 7 8 9 10 11 12 13 |
signingConfigs { release { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile file(keystoreProperties['storeFile']) storePassword keystoreProperties['storePassword'] } } buildTypes { release { signingConfig signingConfigs.release } } |
Теперь сборка релиза будет подписываться автоматически.
Проверка манифеста приложения
Необходимо убедиться что в файле <app dir>/android/app/src/main
/AndroidManifest.xml
содержится верное наименование приложения, а также установлены верные uses-permissions
Проверим конфигурацию сборки
В <app dir>/android/appbuild.gradle
необходимо выставить идентификатор приложения, имя и номер сборки.