настройка сборщика мобильных приложений 1с для android
Мобильное приложение на 1С
Установка эмулятора Genymotion
Разработаем простое мобильное приложение на 1С для Android. Для тестирования можно использовать физическое устройство (свой смартфон или планшет), но гораздо удобнее использовать виртуальное. Для этого нужно установить эмулятор, например Genymotion.
Скачать эмулятор можно здесь. Для Windows будет доступно две версии: с VirtualBox и без него:
Если уже есть установленный VirtualBox, то можно скачать без него. Иначе скачиваем с VirtualBox, это нижняя ссылка. Затем нужно запустить скачанный файл и установить VirtualBox и Genymotion. Здесь не должно возникнуть сложностей.
После этого нужно запустить Genymotion. В открывшемся окне нужно добавить новое виртуальное устройство:
Слева можно настроить отборы, справа выбрать какое устройство будем создавать. Например, выберем версию Android 7.0, устройство Custom Phone:
Нажмем справа внизу кнопку Next и будет открыто окно для настройки создаваемого устройства. Уменьшим разрешение экрана до 480х800 (чем выше разрешение, тем сильнее будет тормозить эмулятор), 240 HDPI, а также уменьшим количество процессоров до 2-х и память до 1024 МБ:
Нажмем кнопку Install и начнется скачивание образа виртуального устройства:
После скачивания образа в списке появится новое устройство, которое можно запустить, выбрав в меню команду Start:
Можно сразу в настройках включить русский язык: Settings – Language & Input – Language, добавить новый язык и поставить его на первое место:
Иногда бывает, что виртуальная машина не запускается, при этом Genymotion не пишет каких-то внятных ошибок. Чтобы увидеть ошибку нужно запустить VirtualBox, выделить созданную нами виртуальную машину и нажать Запустить:
В этом случае хотя бы можно будет увидеть ошибку и поискать решение в интернете.
Установка мобильной платформы
Теперь нужно установить мобильную платформу. Если у Вас нет доступа к мобильной платформе, то можно скачать учебную версию, но она имеет ряд ограничений. Если доступ есть, то можно скачать здесь.
Распаковываем скачанный архив с мобильной платформой и из папки Android копируем файл 1cem-x86.apk в какое-нибудь другое место. Это 32-х разрядная мобильная платформа для процессоров архитектуры x86. В этой же папке есть файл 1cem-arm.apk. Это 32-х разрядная мобильная платформа для процессоров архитектуры ARM. Про разницу между архитектурами x86 и ARM можно почитать здесь. Но так как у меня процессор intel, то я буду использовать файл 1cem-x86.apk.
Установка мобильных приложений с ПК на мобильное устройство выполняется с помощью утилиты Android Debug Bridge (adb). После установки Genymotion данная утилита находится в папке C:\Program Files\Genymobile\Genymotion\tools (при условии, что Genymotion был установлен на диск C). Для удобства можно добавить путь к adb в системную переменную среды Path (Мой компьютер — Свойства — Дополнительные параметры системы — Закладка Дополнительно — Переменные среды):
Теперь нужно запустить командную строку от имени администратора и выполнить команду adb install F:/1cem-x86.apk. F:/1cem-x86.apk — это путь до файла с мобильной платформой 1С.
Мобильная платформа будет установлена на виртуальную машину и в списке приложений появится значок 1С:
При запуске будет открыт список приложений (конфигураций), который пока пуст:
В эмуляторе Genymotion можно установить мобильную платформу просто перетянув файл мобильной платформы из проводника Windows на экран эмулятора:
Чтобы можно было устанавливать приложения из apk-файлов в разделе Настройки — Безопасность нужно разрешить установку из неизвестных источников:
Для установки мобильной платформы на физическое устройство через USB-кабель нужно разрешить отладку по USB. Сначала нужно включить режим разработчика. Для этого в разделе Настройки — О телефоне нужно 5-8 раз нажать на Номер сборки:
После этого в настройках появится пункту меню Для разработчиков:
И уже в нем нужно разрешить отладку по USB:
Сразу после тестирования нужно запретить отладку по USB! Иначе на Ваш смартфон могут быть установлены вирусы!
Разработка мобильной конфигурации
Теперь разработаем мобильную конфигурацию. Создадим новую базу 1С, путь к базе лучше указать на латинице, так будет меньше проблем. В свойствах конфигурации установим Назначение использования = Приложение для мобильной платформы:
Добавим произвольную общую форму:
И в модуле формы в обработчике ПриСозданииНаСервере добавим следующий код:
Добавим общую форму на начальную страницу (правой кнопкой по корню конфигурации — Открыть рабочую область начальной страницы):
А также изменим имя конфигурации:
Обновим конфигурацию базы данных.
Теперь нужно указать в настройках платформы где находится утилита adb и файлы мобильной платформы. Для этого в конфигураторе нужно выбрать пункт меню Сервис — Параметры:
В открывшемся окне нужно перейти на закладку Запуск 1С:Предприятия — Мобильные приложения. Здесь нужно установить флаг Использовать «Android Debug Bridge» для запуска мобильных приложений, а также указать путь к Android SDK и к дистрибутиву мобильной платформы:
Каталог Android SDK — это каталог, в котором находится утилита adb.
Дистрибутив мобильной платформы и мобильного клиента — это путь к скачанному архиву с мобильной платформой.
Теперь нужно опубликовать мобильное приложение, причем для этого не обязательно должен быть установлен веб-сервер. Для этого нужно выбрать пункт меню Конфигурация — Мобильное приложение — Публиковать:
Платформа предупредит о том, что нужны полномочия администратора, но так как мы не будем публиковать на веб-сервере, то можно проигнорировать это.
В открывшемся окне нужно снять флаг Создавать виртуальный каталог на веб-сервере, указать Каталог, куда будет записан файл мобильной конфигурации (лучше использовать только латиницу), а также установить флаг Обновлять мобильное приложение при обновлении конфигурации базы данных:
После это нужно нажать на кнопку Опубликовать.
Для переноса мобильной конфигурации на виртуальную машину нужно выбрать пункт меню Отладка — Начало отладки — Мобильное приложение: начать отладку:
Мобильная конфигурация будет перенесена на мобильное устройство и запущена, о чем платформа уведомит в служебных сообщениях:
На виртуальной машине будет запущено приложение и показано сообщение «Привет, мир»:
Если нажать ОК и выйти из приложения кнопкой назад, то мы попадем в список всех приложений (конфигураций) мобильной платформы, где пока что есть только одна, разработанная нами конфигурация:
Сборка мобильного приложения
Выполним сборку мобильного приложения, чтобы запускать его не через мобильную платформу, а как отдельное приложение.
Для начала нужно установить конфигурацию Сборщик мобильных приложений. Установочные файлы находятся в архиве с мобильной платформой, в папке MobileAppMaker. Это обычная конфигурация 1С. Сначала нужно установить шаблон, а потом из шаблона создать новую конфигурацию:
Также для сборки потребуется установленная Java и Android SDK.
Для установки Android SDK можно скачать Android Studio и через него установить все необходимое. Android Studio можно скачать по этой ссылке, проблем с установкой также не должно быть. При установке нужно будет выбрать путь для установки Android SDK, здесь нужно выбирать путь только на латинице, желательно покороче и без пробелов, например: C:\AndroidSDK.
Для сборки на мобильной платформе 8.3.19 нужна версия SDK API 29. Чтобы скачать нужную версию SDK нужно запустить Android Studio и в стартовом окне нажать на гиперссылку More Actions и выбрать пункт SDK Manager:
В открывшемся окне, на закладке SDK Platforms нужно отметить нужную версию API и нажать ОК. Будут скачаны файлы выбранной версии SDK. 31 версия (последняя на 17.08.2021) была установлена вместе с Android Studio.
Теперь нужно выполнить настройку параметров сборщика. Для этого в сборщике мобильных приложений нужно выбрать Сервис — Настройка параметров сборщика:
В открывшемся окне нужно нажать на кнопку Создать:
Будет открыто окно для заполнения путей к компонентам:
Рабочий каталог и кеш сборщика — это произвольный каталог, будет использоваться при сборке приложения.
JDK — это путь к Java.
Android SDK — это путь к Android SDK.
После этого нужно выполнить настройку параметров поставщика:
Так как будем собирать для Android, то на закладке Общие параметры нужно установить флаг Для ОС Android:
Появится закладка Параметры для ОС Android. Здесь нужно указать Префикс идентификатора приложения для ОС Android (например ru.test) и создать Ключ подписи приложений:
Для создания ключа нужно нажать на кнопку с плюсом:
Будет открыто окно где нужно ввести параметры ключа и нажать Сформировать ключ:
Хеш ключа будет заполнен в поле Хеш SHA-1 ключа подписи.
Теперь нужно загрузить мобильную платформу в сборщик. Для этого нужно перейти в раздел Мобильные версии, добавить новый элемент и выбрать архив с мобильной платформой. После загрузки будет создан новый элемент справочника, в котором будут указаны параметры мобильной платформы, в том числе версия API, которую нужно использовать при сборке (именно поэтому мы скачивали 29 версию API SDK):
В свойствах конфигурации нужно заполнить поставщика и версию:
Затем выбрать пункт меню Конфигурация — Мобильное приложение — Записать в файл и выбрать каталог, куда будет записана мобильная конфигурация.
В сборщике в разделе Мобильные конфигурации нужно нажать на кнопку Загрузить конфигурацию, выбрать файл с записанной мобильной конфигурацией и нажать Загрузить:
Будет создана группа и в ней элемент с мобильной конфигурацией:
После загрузки конфигурации будет предложено создать группу справочника Мобильные приложения. Можно согласиться и заполнить параметры как на рисунке:
В поле Мобильная платформа нужно выбрать элемент справочника Мобильные платформы. А на закладке Конфигурации и представления в поле Источник нужно выбрать группу с мобильной конфигурацией.
После этого в этой группе (справочника Мобильные приложения) нужно создать новый элемент и нажать на кнопку Собрать приложение:
Начнется процесс сборки приложения, по окончании которого на закладке Результаты сборки можно будет сохранить собранное приложение на диск:
Для установки мобильного приложения на виртуальную машину нужно в командной строке ввести команду adb install F:/ru.test.test-x86.apk
На виртуальной машине в списке приложений появится новое приложение. Уже не в составе мобильной платформы, а как отдельное приложение:
При запуске будет открыта общая форма и выведено сообщение «Привет, мир»:
Переход на новый формат публикации мобильных приложений в Google Play
Внимание! С августа 2021 года публиковать новые приложения в Google Play можно будет только в виде Android App Bundle (AAB).
Android App Bundle включает в себя весь скомпилированный код и ресурсы вашего приложения, а также перекладывает создание APK и подписки на Google Play. Конечные APK-файлы под конкретные устройства и архитектуры процессоров в этом случае магазин собирает сам. В случае необходимости их можно будет получить потом из консоли разработчика. Пакет Android App Bundle позволяет упростить работу по сборке приложения меньшего размера, что может повысить успешность установки и сократить количество удалений. Пакет имеет расширение файла «.aab».
Магазин уже больше года принимает приложения для загрузки в формате AAB и теперь начинается постепенный отказ от публикации приложений в формате APK, который используется для установки приложений на устройство.
Переходить на новую мобильную платформу 8.3.19 сейчас нет никакой срочности, если вы не планируете выпускать новое приложение в магазине. Обновлять в формате APК существующие приложения можно будет в течение нескольких месяцев и после августа 2021.
Следите за сообщениями от Google.
Сборщик мобильных приложений подготовлен для сборки нового формата. В новой версии разработчику необходимо создать ключ загрузки в настройках поставщика и собрать приложение в новом формате на мобильной платформе версии 8.3.19.52 и выше.
Также исправлен и описан процесс автоматической загрузки результатов сборки приложения как в формате APK, так и в формате AAB.
В документации по сборщику мобильных приложений можно найти новую информацию по ключам подписи и загрузки в настройках поставщика, о сборке приложения в новом формате и об автоматической загрузке приложения в магазин Google Play:
Справка Google по публикации приложений в магазине:
Переход на сборку Android App Bundle в сборщике мобильных приложений и публикацию в магазине Google Play
Прежде всего, обновите сборщик мобильных приложений на версию из последних дистрибутивов мобильной платформы 8.3.19.
После этого загрузите в него непосредственно дистрибутив мобильной платформы 8.3.19. Именно в такой последовательности.
В противном случае старый сборщик может неправильно загрузить в базу новый дистрибутив, что потенциально приведет к ошибкам сборки.
Перевод существующей публикации на сборку Android App Bundle
Шаг 1. Зарегистрируйтесь в сервисе подписания приложений Google Play
1. Откройте Play Console.
2. Выберите приложение.
После этого будет открыта «Программа подписания приложений».
Шаг 2. Отправьте оригинальный ключ подписи приложения в Google
1. В «Программе подписания приложений» выберите » Экспортировать и загрузить ключ из Java Keystore «.
2. Оригинальный ключ подписи приложения следует выгрузить в сборщике мобильных приложений:
3. Полученный файл с расширением «.pepk» загрузите на странице «Программа подписания приложений » в Play Console.
Внимание! Не рекомендуется создавать ключ подписи в магазине Google Play, поскольку его нельзя получить из магазина и использовать в сборщике мобильных приложений.
Внимание! Включение автоматической подписки приложения распространяется на весь срок действия вашего приложения.
В целях обеспечения безопасности после регистрации в программе подписания вы не сможете получить копию ключа подписи вашего приложения и не сможете удалить его с серверов Google, не удалив само приложение.
Шаг 3. Создайте ключ загрузки
1. Создайте ключ загрузки:
1) В сборщике мобильных приложений в меню » Сервис » выберите команду » Настройка параметров поставщика «.
2) Откройте вкладку » Параметры для ОС Android » и в группе » Ключ загрузки приложения » нажмите ссылку » Экспорт сертификата ключа «.
2. Полученный файл с расширением «.pem» загрузите в Play Console в » Программе подписания приложений «, там же, где загружали ключ подписи.
В качестве ключа загрузки можно также использовать ключ подписи приложения, но этот способ не рекомендуется, т.к. является менее безопасным.
Внимание! Если вы потеряете свой ключ загрузки или если он будет скомпрометирован, то чтобы отозвать свой старый ключ загрузки и сгенерировать новый, следует связаться с техподдержкой Google.
Поскольку ключ подписи вашего приложения защищен Google, вы можете продолжать загружать новые версии своего приложения в качестве обновлений исходного приложения, даже если вы измените ключи загрузки.
Шаг 4. Завершите регистрацию в сервисе подписания приложений Google Play
1. В программе подписания в магазине нажмите кнопку » Сохранить «.
2. Далее следует принять » Условия использования «.
После этого обновления приложения можно загружать в магазин Google Play только в формате AAB (Android App Bundle).
Шаг 5. Соберите мобильное приложение и отправьте его в Google Play с помощью ключа загрузки
1. В новом сборщике мобильных приложений, в карточке приложения на закладке » Для ОС Android » для отправки приложения в магазин Google Play следует выбрать результат сборки приложения (APK, AAB или собирать все).
Выберите » Все варианты результирующих файлов » или » Только aab-файл (пакет для магазина) «.
2. Сборщик соберет пакет для магазина и подпишет его ключом загрузки.
3. Собранный AAB-файла опубликуйте в магазине.
4. Подготовьте и разверните выпуск вашего приложения в магазине.
Создание публикации нового приложения
Шаг 1. Создайте ключ загрузки и соберите приложение
1. Если еще не создали, то создайте ключ загрузки в настройках поставщика на закладке » Параметры для ОС Android » в сборщике мобильных приложений.
2. Соберите приложение в формате AAB.
Шаг 2. Подготовьте выпуск
1. Подготовьте и внедрите выпуск приложения в магазине Google Play, следуя инструкциям магазина.
2. Выбрав тип версии (закрытая, альфа, бета и т.д.), настройте параметры подписания приложений в разделе » Разрешите Google защищать ключ подписи приложения и управлять им «.
3. Выберите » Экспортировать и загрузить ключ из Java Keystore «.
4. Найдите оригинальный ключ подписи приложения. Его можно выгрузить из настроек поставщика на закладке » Параметры для ОС Android » в сборщике мобильных приложений с помощью команды » Экспорт закрытого ключа «.
5. Полученный файл с расширением «.pepk» загрузите в магазин.
6. Найдите оригинальный ключ загрузки. Его можно выгрузить из настроек поставщика на закладке » Параметры для ОС Android » в сборщике мобильных приложений с помощью команды » Экспорт сертификата «.
7. Полученный файл с расширением «.pem» загрузите в магазин в » Программу подписания приложений » там же, где загружали ключ подписи.
9. Чтобы продолжить, нужно принять Условия использования и зарегистрироваться в сервисе подписания приложений.
10. Собранный AAB-файл выгрузите из сборщика и опубликуйте в магазине, в созданном выпуске.
Разработка бизнес-приложений 1С + Android
В данной статье хочу познакомить вас с новым продуктом “FBA Toolkit”, который существенно облегчает процесс разработки корпоративного мобильного приложения на 1С + Android.
“FBA Toolkit” это:
— разработка «нативного» приложения Android в родной IDE на языке Java;
— 1С: Предприятие 8.1 (8.2) в роли источника данных, корпоративной информационной системы.
В первую очередь, фреймворк будет полезен программистам 1С, которые хотели бы заняться разработкой бизнес-приложений под Android, но испытывают трудности с освоением новой для них платформы. Чтобы начать разработку достаточно будет начальных знаний Java. Далее я покажу, как создать рабочий прототип клиент-серверного приложения буквально за пару часов.
Подготавливаем рабочее место
Прежде чем начать непосредственно процесс разработки, необходимо подготовить рабочее место разработчика. Потребуется:
1. Установить и настроить:
— Java SDK + Eclipse + Android SDK;
— Web-сервер (IIS или Apache);
— 1С: Предприятие 8.1 (8.2)
2. Для Eclipse произвести импорт двух библиотечный проектов: ActionBarSherlock и ru_profu1c_fba из хранилища SVN.
3. Установить дистрибутив конфигурации «FBA» и объединить ее с вашим прикладным решением на базе 1С.
Настройка не должна занять много времени, и скорее всего, часть необходимого ПО у вас уже установлена.
Описание приложения
Создание шаблона мобильного приложения в 1С
Разработка мобильного приложения начинается в 1С, как это не удивительно. Здесь вы определяетесь с составом метаданных, настраиваете схему обмена и регенерируете шаблон вашего будущего мобильного приложения.
Создайте новый элемент в справочнике «Мобильные приложения» с наименованием «Рапорт руководителю» и идентификатором SAMPLE_REPORT_HEAD.
Выделите в списке “Метаданные” группу “Внешние данные” и нажмите кнопку “Добавить” на панели инструментов. Заполните параметры новой таблицы как показано на рисунке:
«Показатель» — тестовое представление показателя отчета, строка (250)
«Значение» — числовое значение показателя, число (15.2)
Имена колонок и самой таблицы здесь, как правило, задаются на русском языке, по ним будет производиться заполнение таблицы данными средствами встроенного языка 1С. Нажмите ОК, таблица будет добавлена в дерево метаданных, для мобильного приложения имена автоматически переводятся в латиницу.
Таким образом, мы подготовили структуру таблицы значений (в терминах 1С) в которой будем передавать данные для отчета «Финансовые показатели». Для второго отчета «Товары на складах» данные будут передаваться как внешний файл.
На закладке «Схема обмена» проверьте, что отмечен флаг «Выгрузка». Флаг «Загрузка» не важен, т.к. мы не собираемся обрабатывать в 1С полученные изменения этой таблицы от мобильного приложения.
Сохраните изменения. Нажмите на кнопку “Шаблон мобильного приложения” на панели инструментов, установите параметры вашего мобильного приложения
«Каталог шаблонов» — путь к каталогу, в котором будут сохранены сгенерированные файлы шаблона мобильного приложения.
На закладке «Основные» укажите имя пакета, это должен быть уникальный идентификатор. Если у вас есть сайт, используйте его для генерации префикса. В этом примере я указал ru.profi1c.samples.report.head
На закладке «Web-сервис» указан IP-адрес 10.0.2.2, по умолчанию это адрес вашего компьютера при доступе с Android-эмулятора. В поля «Имя веб-сервиса» и «Подкаталог приложения» введите данные, которые были указаны при публикации веб-сервиса.
Обратите внимание, что для 1С 8.2, скорее всего, подкаталог приложения у вас будет с дополнительным подкаталогом /ws, т.е demoFba/ws, подробнее см. здесь.
Нажмите Создать, шаблон Android-проекта будет сгенерирован.
Подготовка исходных данных для отчетов в 1С
Откройте в конфигураторе 1С модуль fbaПодпискаНаСобытия и добавьте следующий код в процедуру ПередОтправкойВнешнейТаблицы:
В этом примере таблица заполняется фиктивными данными, в реальном приложении здесь можете передавать произвольное количество показателей отчета.
С данными для первого отчета разобрались, осталось подготовить для второго. В этом же модуле fbaПодпискаНаСобытия добавите в процедуру ПодготовитьДвоичныеДанныеДляОтправки следующий код:
Прокомментирую код. Когда мобильное приложение запрашивает произвольные данные (в виде файла) с идентификатором «REPORT_PRODUCTS_IN_STOK», в 1С выполняется отчет и результат его сохраняется во временный файл. Затем этот временный файл считывается как двоичные данные и передается мобильному приложению. Временный файл удаляется.
Как в данном случае генерируется html файл, нам не важно. Вы можете использовать штатный механизм 1С сохранения табличного документа в виде HTML или сформировать HTML вручную. Пример вывода можете посмотреть в конфигурации «FBA демо», отчет «Товары на складах».
С 1С всё, переходим к разработке мобильного приложения на Android.
Проектирование Android – приложения
Созданный в 1С шаблон Android-проекта импортируем в рабочее пространство Eclipse.
Запустите Eclipse и выполните импорт проекта: File > Import… В группе Android выберите элемент «Exists Android Code Into Workspace» нажмите Next, укажите путь к каталогу шаблона Android-проекта и нажмите Finish, новый проект будет добавлен в рабочее пространство. Если возникнут сложности см. здесь, процесс описан в картинках.
1. Создаем отчет «Финансовые показатели», источником данных для которого является таблица значений, полученная от 1С. Для этого добавьте новый класс ToChiefReport.java, вот полный исходный код:
4. Вывод списка отчетов на главной форме. Откройте файл res\ activity_main.xml и добавьте listView в котором будет отображать список отчетов:
В MainActtiviy.java добавляем:
а) локальную переменную для списка
б) метод инициализации
и вызов его в onCreate() после установки макета формы
в) метод инициализации списка отчетов
г) процедуру запуска обмена по вашим правилам
И изменяем вызов процедуры обмена startExchange(ExchangeVariant.FULL, true) в обработчике onOptionsItemSelected на startExchangeMyRules(ExchangeVariant.FULL, true).
Приложение готово, формы авторизации и настроек программы будут созданы автоматически, изменять их не будем.
Давайте проверим его на эмуляторе. Если вы нигде не ошиблись, приложение запустится. Однако, вместо окна авторизации будет отображено сразу окно настроек, так как не указаны данные авторизации (имя пользователя и пароль).
Укажите имя пользователя: ivanov
И пароль: 123456
Запустите базу 1С и откройте справочник «Мобильные сотрудники». В качестве мобильного устройства укажите предопределённый элемент «Эмулятор устройства», в табличную часть «Мобильные приложения» добавьте приложение «Рапорт руководителю» и установите идентичные имя и пароль пользователя.
Запустите на эмуляторе процедуру обмена (кнопка со стрелочкой «Вверх» на панели справа)
результат работы обмена выводится в уведомлении:
Нажмите на него для запуска вашего приложения (или для просмотра подробной информации об ошибке, если обмен завершился неудачно).
Проверим, что получилось. Кликните мышкой по отчету в списке:
Использование HTML для построения отчетов позволяет создавать весьма разнообразные отчеты, в т.ч. и с интерактивными элементами. Например, в одном нашем проекте используется вот такой отчет:
И конечно, вы ничем не ограничены, можете использовать сторонние библиотеки для вывода отчетов и диаграмм, например achartengine или самостоятельно создать свой график/диаграмму (примеров полно, в т.ч. есть и в Android SDK).
На этом все, с другими примерами вы можете ознакомиться на сайте http://profi1c.ru.
В ближайшее время планируется добавить уроки по интерактивным элементам и адаптерам библиотеки FBA, а так же показать как работать с офф-лайн картами mapsforge.
Ложка дегтя
В ближайшее время (не более месяца) будет коммерческая версия, информацию о стоимости и порядке лицензирования добавим на наш сайт.
Спасибо, что дочитали до конца. Готов ответить на ваши вопросы в комментариях как по 1С, так и по Android.