Создание 2 мобильных приложений: от 0 до запуска за 6 дней [День 6 — ДЕНЬ ЗАПУСКА]

Подготовка к мягкому запуску

Прежде всего, приложение №1, Jet Tag.

Создание производственной сборки

Я запустил это в каталоге проекта на терминале:

ionic cordova build android --prod --release

К сожалению, я получил ошибку.

⚠️ Сегодняшний выпуск

То, что работало в версии эмулятора, не помогло в производственной сборке.

> ionic-app-scripts build --prod --target cordova --platform android
[18:08:36]  ionic-app-scripts 3.2.0
[18:08:36]  build prod started ...
[18:08:36]  clean started ...
[18:08:36]  clean finished in 31 ms
[18:08:36]  copy started ...
[18:08:36]  deeplinks started ...
[18:08:36]  deeplinks finished in 18 ms
[18:08:36]  ngc started ...
[18:08:45]  typescript error
Type ArrivalPage in /Users/kathy/Development/Ionic/JetTag/src/pages/arrival/arrival.ts is part of the
declarations of 2 modules: AppModule in /Users/kathy/Development/Ionic/JetTag/src/app/app.module.ts and
ArrivalPageModule in /Users/kathy/Development/Ionic/JetTag/src/pages/arrival/arrival.module.ts! Please
consider moving ArrivalPage in /Users/kathy/Development/Ionic/JetTag/src/pages/arrival/arrival.ts to a
higher module that imports AppModule in /Users/kathy/Development/Ionic/JetTag/src/app/app.module.ts and
ArrivalPageModule in /Users/kathy/Development/Ionic/JetTag/src/pages/arrival/arrival.module.ts. You can also
create a new NgModule that exports and includes ArrivalPage in
/Users/kathy/Development/Ionic/JetTag/src/pages/arrival/arrival.ts then import that NgModule in AppModule in
/Users/kathy/Development/Ionic/JetTag/src/app/app.module.ts and ArrivalPageModule in
/Users/kathy/Development/Ionic/JetTag/src/pages/arrival/arrival.module.ts.
[18:08:45]  ionic-app-script task: "build"
[18:08:45]  Error: The Angular AoT build failed. See the issues above
Error: The Angular AoT build failed. See the issues above
at /Users/kathy/Development/Ionic/JetTag/node_modules/@ionic/app-scripts/dist/aot/aot-compiler.js:237:55
at step (/Users/kathy/Development/Ionic/JetTag/node_modules/@ionic/app-scripts/dist/aot/aot-compiler.js:32:23)
at Object.next (/Users/kathy/Development/Ionic/JetTag/node_modules/@ionic/app-scripts/dist/aot/aot-compiler.js:13:53)
at fulfilled (/Users/kathy/Development/Ionic/JetTag/node_modules/@ionic/app-scripts/dist/aot/aot-compiler.js:4:58)
at <anonymous>
[ERROR] An error occurred while running subprocess ionic-app-scripts.
ionic-app-scripts build --prod --target cordova --platform android exited with exit code
1.
Re-running this command with the --verbose flag may provide more information.

Решение

Я изменил способ импорта двух пользовательских страниц и их модулей.

Снова скомпилировал и — фу, успех! Сборка находится здесь:

/JetTag/platforms/android/build/outputs/apk/release/android-release-unsigned.apk

Я сделал его копию в верхнем каталоге проекта для подписи.

Затем я переименовал копию из /android-release-unsigned.apk в /app-release-unsigned.apk.

Получение подписи APK

Это требование Google Play.

Сначала я сгенерировал закрытый ключ с помощью команды keytool, поставляемой с JDK:

keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias

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

Затем в текущем каталоге был сгенерирован новый файл хранилища ключей:

/my-release-key.jks

Примечание. Обязательно сохраните этот файл в безопасном месте, если вы его потеряете, вы не сможете отправлять обновления в свое приложение!

Чтобы подписать неподписанный APK, я запустил инструмент jarsigner, который также включен в JDK:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.jks app-release-unsigned.apk my-alias

И там у меня был подписанный APK.

Оптимизация подписанного APK

Я использовал инструмент zipalign, который можно найти в

~/Library/Android/sdk/build-tools/{version #}/zipalign

Чтобы он работал в терминале, я сначала добавил adb к пути командной строки:

echo ‘export ANDROID_HOME=/Users/kathy/Library/Android/sdk’ >> ~/.bash_profile

Затем я добавил его инструменты сборки в путь командной строки:

echo ‘export PATH=${PATH}:$ANDROID_HOME/tools:$ANDROID_HOME/build-tools/28.0.3’ >> ~/.bash_profile

После чего я обновил командную строку:

source ~/.bash_profile

Я временно переместил подписанный APK сюда, чтобы инструмент работал на месте. И побежал:

zipalign -v 4 app-release-unsigned.apk JetTag.apk

Наконец, я использовал apksigner, чтобы убедиться, что apk был подписан:

apksigner verify JetTag.apk

К этому моменту был готов финальный бинарный релиз.

Настройка открытого теста в Google Play

Процесс публикации не занял много времени, так как у меня было готово большинство материалов и информации для бета-тестирования.

  1. Создано новое приложение в Google Play Console.

2. Заполненный «Список магазинов»

3. Заполненный раздел «Цены и распространение».

4. Создан новый трек Open Beta в разделе «Выпуски приложений».

5. Загружен окончательный APK

6. Открыто бета-тестирование

7. Вернулся, чтобы полностью заполнить «Рейтинг контента»

8. А также «Список магазинов»

И… все готово!

Повторение тех же шагов для приложения № 2

Оба приложения в настоящее время «ожидают публикации», что займет всего пару часов.

30 минут спустя:

Ууууу!

👾 Анекдот

Хотя сегодняшний запуск не обошлось без препятствий, я благодарен, что по большей части все прошло довольно гладко.

Забавно, но только когда я заканчивал эту запись в блоге, я столкнулся с отключением интернет-соединения.

Итак, на самом деле я использую модем для мобильных данных, чтобы завершить этот пост :P

Что дальше?

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

Это было весело.

Я буду продолжать вести блог о любых событиях после запуска этой серии.

Между тем, я также пойду дальше и перейду к другим проектам.

Большое спасибо за чтение. До скорого!

Хроника