139 lines
6.2 KiB
Markdown
139 lines
6.2 KiB
Markdown
# Android сборка и публикация APK (локально)
|
|
|
|
Эти скрипты позволяют делать локальную сборку Android-клиента, сразу публиковать
|
|
готовый APK в место, из которого веб-панель его скачивает, и при необходимости
|
|
быстро проверять состояние окружения.
|
|
|
|
## Подготовка окружения
|
|
|
|
Сначала проверьте зависимости и переменные окружения:
|
|
|
|
```powershell
|
|
pwsh -ExecutionPolicy Bypass -File scripts\android\prepare-android-build-environment.ps1 -SetEnvironment
|
|
```
|
|
|
|
Скрипт проверит:
|
|
|
|
- `java` (JDK 17+)
|
|
- `gradle`
|
|
- Android SDK (по умолчанию `C:\Android\Sdk`)
|
|
- `sdkmanager` из `cmdline-tools`
|
|
- `platform-tools`, `platforms;android-<compileSdk>`, `build-tools;35.0.1`
|
|
|
|
По необходимости можно автосоздать отсутствующие SDK-компоненты:
|
|
|
|
```powershell
|
|
pwsh -ExecutionPolicy Bypass -File scripts\android\prepare-android-build-environment.ps1 -InstallMissing -SetEnvironment
|
|
```
|
|
|
|
## Быстрый запуск после апдейта
|
|
|
|
После любого обновления версии соблюдаем правило: **сборка → публикация → проверка manifest**.
|
|
Любой новый номер версии должен сразу появляться в скачиваемых артефактах.
|
|
|
|
После обновления клиента запусти сборку и публикацию одной командой:
|
|
|
|
```powershell
|
|
pwsh -ExecutionPolicy Bypass -File scripts\android\rebuild-and-publish-android-apk.ps1
|
|
```
|
|
|
|
По умолчанию команда делает публикацию в локальные папки и в test-docker (vpn.cin.su):
|
|
это нужно для корректного обновления узлов и пользователей.
|
|
Для релиза `-PublishToTestDockerDownloads` включен по умолчанию; отключать публикацию
|
|
внешне можно только флагами `-PublishToTestDockerDownloads:$false` или `-NoRemotePublish`.
|
|
|
|
```powershell
|
|
pwsh -ExecutionPolicy Bypass -File scripts\android\rebuild-and-publish-android-apk.ps1 `
|
|
-PublishToTestDockerDownloads `
|
|
-TestDockerSshAlias test-docker `
|
|
-TestDockerDownloadPath "/tmp/rap-web-admin/html/downloads"
|
|
```
|
|
|
|
Если нужно сделать полноценный release-пайплайн в один шаг (подготовка окружения +
|
|
сборка + публикация + верификация доступного манифеста), можно использовать:
|
|
|
|
```powershell
|
|
pwsh -ExecutionPolicy Bypass -File scripts\android\release-android-apk.ps1 `
|
|
-InstallMissing `
|
|
-BuildType release `
|
|
-PublishToTestDockerDownloads:$true `
|
|
-TestDockerSshAlias test-docker `
|
|
-TestDockerDownloadPath "/tmp/rap-web-admin/html/downloads" `
|
|
-PortalVerifyBaseUrl "http://192.168.200.61:18080"
|
|
```
|
|
|
|
Для «одной команды без параметров» добавлен быстрый запускатор:
|
|
|
|
```powershell
|
|
pwsh -ExecutionPolicy Bypass -File scripts\android\fast-release-android-apk.ps1
|
|
```
|
|
|
|
Также можно запускать двойным кликом из Windows:
|
|
|
|
```text
|
|
scripts\android\fast-release-android-apk.cmd
|
|
```
|
|
|
|
Через `.cmd` можно добавлять параметры FastScript, например:
|
|
|
|
```text
|
|
scripts\android\fast-release-android-apk.cmd -NoRemotePublish -NoPrepare
|
|
```
|
|
|
|
Для production-сборок не отключай `-NoRemotePublish` и `-NoPrepare`.
|
|
Эти флаги только для отладочной локальной проверки и не применяются к выпуску.
|
|
|
|
## Полный bootstrap локальной сборочной машины
|
|
|
|
Если на новом ПК/ноутбуке нужно собрать проект локально, сначала прогрейте окружение:
|
|
|
|
```powershell
|
|
pwsh -ExecutionPolicy Bypass -File scripts\prepare-local-build-workstation.ps1 -SetEnvironment
|
|
```
|
|
|
|
Если нужно сразу пытаться устанавливать недостающее:
|
|
|
|
```powershell
|
|
pwsh -ExecutionPolicy Bypass -File scripts\prepare-local-build-workstation.ps1 -InstallMissing -SetEnvironment
|
|
```
|
|
|
|
После этого можно делать сборку:
|
|
|
|
```powershell
|
|
pwsh -ExecutionPolicy Bypass -File scripts\android\fast-release-android-apk.ps1
|
|
```
|
|
|
|
По умолчанию результат будет (для release-сборки из CI/рабочего процесса это самые нужные имена):
|
|
|
|
- `dist/downloads/rap-android-rdp-vpn-latest-release.apk`
|
|
- `dist/releases/<version>/rap-android-rdp-vpn-<version>-release.apk`
|
|
- `dist/downloads/rap-android-rdp-vpn-build.json`
|
|
- `web-admin/deploy/html/downloads/rap-android-rdp-vpn-latest-release.apk`
|
|
- `web-admin/deploy/html/downloads/releases/<version>/rap-android-rdp-vpn-<version>-release.apk`
|
|
- `web-admin/deploy/html/downloads/rap-android-rdp-vpn-build.json`
|
|
|
|
Эти файлы и папки игнорируются git для `dist`, поэтому `web-admin` артефакты
|
|
должны публиковаться отдельным шагом инфраструктуры.
|
|
|
|
## Принудительная сборка Release
|
|
|
|
```powershell
|
|
pwsh -ExecutionPolicy Bypass -File scripts\android\build-android-apk.ps1 -BuildType release
|
|
```
|
|
|
|
## Где указывать SDK
|
|
|
|
Если SDK лежит не в `C:\Android\Sdk`, укажи явно:
|
|
|
|
```powershell
|
|
pwsh -ExecutionPolicy Bypass -File scripts\android\build-android-apk.ps1 -AndroidHome "D:\SDK\Android"
|
|
```
|
|
|
|
## Что важно для работы с админ-панелью
|
|
|
|
- Веб-панель уже ожидает файл:
|
|
`downloads/rap-android-rdp-vpn-latest-release.apk`
|
|
- Поэтому скрипт публикует APK в `web-admin/deploy/html/downloads`, чтобы новый
|
|
артефакт был сразу доступен для скачивания пользователем после сборки и для
|
|
автообновления узлов.
|