Создание 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
Процесс публикации не занял много времени, так как у меня было готово большинство материалов и информации для бета-тестирования.
- Создано новое приложение в Google Play Console.
2. Заполненный «Список магазинов»
3. Заполненный раздел «Цены и распространение».
4. Создан новый трек Open Beta в разделе «Выпуски приложений».
5. Загружен окончательный APK
6. Открыто бета-тестирование
7. Вернулся, чтобы полностью заполнить «Рейтинг контента»
8. А также «Список магазинов»
И… все готово!
Повторение тех же шагов для приложения № 2
Оба приложения в настоящее время «ожидают публикации», что займет всего пару часов.
30 минут спустя:
Ууууу!
👾 Анекдот
Хотя сегодняшний запуск не обошлось без препятствий, я благодарен, что по большей части все прошло довольно гладко.
Забавно, но только когда я заканчивал эту запись в блоге, я столкнулся с отключением интернет-соединения.
Итак, на самом деле я использую модем для мобильных данных, чтобы завершить этот пост :P
Что дальше?
Должен признаться, что я очень доволен тем, что выполнил всю задачу. Доставка даже на день раньше, чем планировалось.
Это было весело.
Я буду продолжать вести блог о любых событиях после запуска этой серии.
Между тем, я также пойду дальше и перейду к другим проектам.
Большое спасибо за чтение. До скорого!