Сборка мобильного приложения 1С в APK-файл
Содержание
APK из конфигурации 1С собирают не в Конфигураторе, а отдельным инструментом — «Сборщиком мобильных приложений» из состава мобильной платформы 1С:Предприятия. Конфигуратор только готовит саму конфигурацию: задаёт назначение использования «Мобильное устройство» и выгружает её в файл. Сборку APK, подписание и упаковку под Android делает сборщик, которому нужны сторонние компоненты — JDK и Android SDK.
Поэтому «сделать APK» — это по сути три разные задачи: собрать рабочее место со всеми SDK, зарегистрировать приложение в сборщике и один раз создать ключ подписи. Дальше каждая новая версия собирается в пару кликов. Ниже — что именно установить, куда прописать пути и какие ошибки сборки встречаются чаще всего.
Для разработки и отладки APK не нужен: мобильную платформу ставят на устройство из Google Play, а конфигурацию публикуют на веб-сервере и подключаются к ней. Отдельный APK собирают, когда приложение надо распространять как самостоятельное — без подключения к публикации.
Что установить на рабочее место сборки
Сборщик сам ничего не компилирует — он запускает чужие инструменты и передаёт им файлы. Поэтому до первой сборки на компьютере должны быть установлены внешние компоненты. Точный состав и совместимые версии зависят от выпуска мобильной платформы — сверяйтесь с требованиями именно вашей версии, они приложены к дистрибутиву.
Базовый набор для Android:
- 📦 Мобильная платформа 1С:Предприятия — скачивается отдельно от обычной платформы. В дистрибутиве лежат файлы платформы под Android и конфигурация сборщика.
- ☕ JDK (Java Development Kit) — нужен и для сборки, и для создания ключа подписи. Ставьте версию, указанную в требованиях вашей мобильной платформы, а не «самую свежую».
- 🤖 Android SDK — набор инструментов сборки и платформенные API. Через SDK Manager докачиваются Build-Tools и нужный уровень API (Android API Level). В составе SDK идут Platform-Tools с утилитой
adb— ей потом удобно ставить готовый APK на устройство. - ⚙️ Android NDK — нужен, потому что мобильная платформа содержит нативный код. Версия NDK тоже привязана к версии платформы.
JDK участвует дважды: сначала через keytool вы создаёте ключ подписи, потом его компилятор вызывается при сборке. Android SDK отвечает за упаковку и API, NDK — за компиляцию нативной части под каждый процессор. Сборщик 1С дирижирует всеми тремя, поэтому путь к каждому из них нужно указать точно.
APK — это формат только для Android. Собрать приложение под iOS из той же конфигурации можно, но для этого нужен компьютер с macOS и установленным Xcode: инструменты сборки под iPhone/iPad работают только там. На Windows получится собрать лишь Android-версию.
Версии JDK, SDK и NDK подбираются под конкретный выпуск мобильной платформы. Несовпадение версий — причина большинства непонятных ошибок сборки, которые выглядят как «сборка оборвалась без внятного сообщения».
Регистрация приложения в сборщике
Сборщик мобильных приложений — это обычная конфигурация 1С. Её загружают в пустую информационную базу: создайте новую файловую базу
и загрузите в неё поставляемый файл конфигурации сборщика из дистрибутива мобильной платформы (Конфигурация → Загрузить конфигурацию из файла, затем обновление конфигурации
базы данных).
После запуска сборщика в режиме 1С:Предприятие:
- Создайте новую запись мобильного приложения. Задайте имя приложения и
идентификатор пакетав обратном доменном формате — напримерru.company.sklad. Этот идентификатор должен быть уникальным и неизменным: по нему Android и Google Play отличают приложение, сменить его позже без переустановки у пользователей нельзя. - Укажите файл конфигурации вашего мобильного приложения (
.cf), который вы выгрузили из Конфигуратора. Именно эта конфигурация попадёт внутрь APK. - Пропишите пути к внешним компонентам: каталог JDK, каталог Android SDK, каталог NDK и каталог с файлами мобильной платформы. Пути указываются один раз и сохраняются в записи.
Конфигурация мобильного приложения должна быть сохранена с назначением использования «Мобильное устройство» — это задаётся в Конфигураторе в свойствах корня конфигурации до выгрузки в .cf. Иначе сборщик откажется принимать файл.
В той же карточке задают название, которое увидит пользователь на экране устройства, версию приложения (видимую строку версии и числовой код версии — versionCode) и иконку. Числовой код версии увеличивайте при каждом обновлении, иначе Google Play не примет новую сборку.
Отдельно решите, как приложение будет работать с данными. Самостоятельное мобильное приложение хранит базу прямо на устройстве и обменивается с центральной базой по расписанию или вручную — через веб-сервис или HTTP-сервис, который вы публикуете на сервере. Файл конфигурации, который вы передаёте сборщику, уже должен содержать эту логику обмена: сборка APK ничего к ней не добавляет, она лишь упаковывает готовую конфигурацию.
Создание и настройка ключа подписи
Android не устанавливает неподписанный APK. Подпись — это сертификат, которым вы заверяете, что все версии приложения выпущены вами. Один раз потеряв ключ, вы не сможете выпускать обновления под тем же приложением в Google Play — храните файл ключа и пароли в надёжном месте и в резервной копии.
Ключ создаётся утилитой keytool из состава JDK. Пример команды, которая создаёт хранилище ключей (keystore) с одним ключом сроком на много лет:
keytool -genkeypair -v -keystore my-release-key.jks \
-alias my-app -keyalg RSA -keysize 2048 -validity 10000
Утилита спросит пароль хранилища, пароль ключа и данные владельца (имя, организация). Запомните три вещи: путь к файлу .jks (или .keystore), имя ключа (alias) и оба пароля — их нужно будет ввести в сборщике.
В карточке приложения в сборщике укажите:
- путь к файлу хранилища ключей;
- имя ключа (alias);
- пароль хранилища и пароль ключа.
Для внутреннего распространения (не через Google Play) подойдёт самоподписанный ключ, созданный keytool. Для публикации в Google Play учитывайте, что магазин использует собственную схему подписи приложений (App Signing) — загружаемый APK/AAB подписывается ключом загрузки, а финальная подпись выдаётся на стороне магазина.
Выбор версии платформы и архитектуры процессора
Перед сборкой в карточке приложения выбирают, под какую мобильную платформу и под какие процессоры собирать APK.
Версия мобильной платформы. Укажите версию платформы из тех, что вы распаковали на рабочем месте. Версия платформы, под которую собран APK, должна быть не ниже той, что требует ваша конфигурация. Сравнивайте строго по номеру: берите версию не ниже минимально поддерживаемой, а не «поновее на глаз».
Архитектура процессора. Для Android это, как правило:
| Архитектура | Процессоры | Когда нужна |
|---|---|---|
arm64-v8a | 64-битные ARM | Основная для современных устройств и обязательна для Google Play |
armeabi-v7a | 32-битные ARM | Старые устройства |
x86, x86_64 | Intel/AMD | Эмуляторы, редкие планшеты |
Google Play с 2019 года требует 64-битную версию, поэтому arm64-v8a включайте обязательно. Если нужна поддержка старых телефонов — добавьте armeabi-v7a.
Чем больше архитектур вы включаете, тем крупнее APK: код платформы упаковывается под каждую. Для магазина выгоднее собирать формат App Bundle (AAB) — тогда пользователь скачивает только свою архитектуру. Отдельный APK удобен для ручной установки и тестирования.
Здесь же задают минимальную и целевую версии Android (minSdkVersion / targetSdkVersion). Целевую версию держите в рамках требований Google Play — магазин периодически поднимает минимально допустимый targetSdkVersion для новых загрузок.
Как запустить сборку и получить APK-файл
Когда пути прописаны, ключ указан, версия платформы и архитектуры выбраны — запускается сборка. В карточке приложения выберите тип результата (APK для ручной установки или AAB для магазина) и нажмите сборку.
Что происходит под капотом:
- Сборщик берёт файл вашей конфигурации (
.cf) и файлы мобильной платформы. - Формирует проект Android и передаёт его инструментам сборки Android SDK и NDK.
- Компилируется нативная часть под каждую выбранную архитектуру.
- Готовый пакет подписывается указанным ключом.
- На выходе — файл
.apk(или.aab) в каталоге, который вы задали.
Первая сборка идёт заметно дольше последующих: докачиваются и кешируются компоненты, прогреваются инструменты. На слабой машине это несколько минут и больше. Если сборка прервалась — не чистите кеш и не удаляйте каталоги инструментов «на всякий случай»: чаще достаточно исправить один путь или версию и запустить заново.
Полезно вести сборку по стабильной схеме: собрали APK → проверили на реальном устройстве → только потом поднимаете versionCode и выпускаете. Один и тот же ключ и один и тот же идентификатор пакета на всех версиях — это то, что превращает отдельные APK в линейку обновлений, а не в набор независимых приложений.
Проверить APK можно двумя путями:
- На устройстве. Скопируйте
.apkна телефон и установите вручную. Для этого в настройках Android разрешают установку из неизвестных источников для того приложения, которым открываете файл (файловый менеджер или браузер). - Через adb. Команда
adb install путь-к-файлу.apkставит пакет на подключённое по USB устройство с включённой отладкой. Утилитаadbвходит в Platform-Tools из Android SDK.
Храните файл ключа подписи рядом с резервной копией базы сборщика. Новую версию приложения собирайте тем же ключом и тем же идентификатором пакета — тогда она встанет поверх старой как обновление, а не как второе приложение.
Частые ошибки сборки и как их устранить
Почти все сбои сборки — это либо неверный путь к внешнему инструменту, либо несовместимая версия, либо проблема с ключом. Сообщение в логе сборки часто приходит «изнутри» Android SDK или JDK, а не от 1С, — читайте именно последние строки лога.
.jks, имя ключа и оба пароля.arm64-v8a (для магазина — лучше в формате AAB).Если ошибку не удаётся разобрать по сообщению, сравните своё окружение с требованиями вашей версии мобильной платформы построчно: именно рассинхрон версий JDK/SDK/NDK даёт больше всего «молчаливых» падений.
Частые вопросы
Нужен ли APK, чтобы просто протестировать мобильную конфигурацию?
Можно ли собрать APK прямо в Конфигураторе?
.cf. Саму сборку APK делает отдельный сборщик мобильных приложений из состава мобильной платформы.Чем APK отличается от AAB и что выбрать?
Что будет, если потерять файл ключа подписи?
.jks и пароли хранят в резервной копии наравне с базой сборщика.Почему новый APK ставится как второе приложение, а не как обновление?
ru.company.app), либо APK подписан другим ключом. Обновление встаёт поверх только при совпадении идентификатора и ключа подписи.