androidUtils1cExt icon indicating copy to clipboard operation
androidUtils1cExt copied to clipboard

Шаблон внешней компоненты 1С для мобильной платформы на Android

Пример (шаблон) внешней компоненты для мобильной платформы 1С

Введение

Внешняя компонента с вспомогательными функциями для мобильной платформы 1С на Android. Ид компоненты ANDROIDUTILS. Компонента готова для сборки и поставляется с sln проектом для Visual studio и .android проектом для Android Studio. Причем в Andoird Studio подключена как java, так и С++ часть компоненты, что дает возможность отладки обоих языков! Компонента может быть полезна как в учебных, так и в прикладных целях.

Требования

  • Android Studio 3.5
  • Visual Studio 2019
  • Платформа 1С не ниже 8.3.10

Ограничения

  • поддерживается только Android начиная с версии API 22

API

Список методов:

Delay/Пауза - останавливает выполнение кода на заданное число миллисекунд. Процессор в период простоя не грузится

Параметры:

  • миллисекунд - Число - число миллисекунд на которое нужно остановить выполнение кода.

StartScreenWatch/НачатьОтслеживаниеЭкрана - начинает мониторинг состояния активности экрана устройства. Параметры отсутствуют. Если устройство возвращают из спящего режима блокировки, то вызывается внешнее события со следующими параметрами:

  • Источник - org.ripreal.androidutils
  • Событие - LockChanged

StopScreenWatch/ОстановитьОтслеживаниеЭкрана - прекращает мониторинг активности экрана устройства. Параметры отсутствуют.

Список свойств:

DeviceInfo/ОписаниеУстройства (только чтение) - ид мобильного устройства

Примеры

Инициализация компоненты и вызов паузы

Если ПодключитьВнешнююКомпоненту("ОбщийМакет.Компонента", "RIPREAL", ТипВнешнейКомпоненты.Native) Тогда
    Компонента = Новый("AddIn.RIPREAL.ANDROIDUTILS");
    Устройство = Компонента.ОписаниеУстройства;
    Компонента.Пауза(3000); // Пауза на 3 секунды
КонецЕсли;

Отслеживание активации устройства через внешнее событие (переход из спящего режима)

&НаКлиенте
Процедура НачатьОтслеживаниеЭкрана()
    Компонента.НачатьОтслеживаниеЭкрана();
КонецПроцедуры

&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)

    Если Источник = "org.ripreal.androidutils" И Событие = "LockChanged" Тогда
        ПоказатьПредупреждение(, "Экран разблокирован", 5);
    КонецЕсли;

КонецПроцедуры

Установка в конфигурацию

Установить в конфигурацию 1С архив с компонентой из папки package.

Разворачивание окружения разработки на Windows 10

  1. Установить Android Studio
  2. В студии перейти в Tools -> SDK Manager -> SDK Platforms и выбрать ANDROID API 28
  3. В студии перейти в Tools -> SDK Manager -> SDK Tools и выбрать следующее:
  • Android SDK build Tools
  • Cmake (система сборки C++ кода)
  • LLDB (для отладки C++ кода)
  • Android Emulator
  • Android SDK Platform tools
  • Android SDK tools
  • Intel x86 Emulator Accelerator (для возможности запуска эмулятора из студии)
  • NDK (Для поддержки C++ кода в android проекте)
  • Support repository
  1. Скачать систему ассемблерной сборки ninja https://github.com/ninja-build/ninja/releases, установить ее в любой каталог и прописать путь к каталогу в системную переменную Path

Сборка проекта

  1. Через VS Studio 2019 открыть androidUtils.sln и скомпилировать release версии для ARM и X86 платформы. Перенести скомпилированные .so либы в папку package.

2 Через Android Studio не ниже 3.5 открыть каталог android и скомпилировать apk (Build -> Build bundle / APK -> APK) и перенести скомпилированный apk в папку package.

  1. Заархивировать все файлы в папке package в архив zip

  2. Загрузить архив в конфигурацию в качестве макета внешней компоненты

Отладка

Отладка как java, так и c++ части компоненты возможна только в android Studio. Для отладки рекомендуется использовать следующий подход:

  1. Создается юнит-тест в package org.ripreal.android (androidTest)
  2. Тест вызывает из java native функцию C++
  3. Функция C++ тестирует какой-то нативный метод компоненты

Пример можно посмотреть здесь ExampleInstrumentedTest.java

Лицензия

Лицензировано на условиях MIT. Смотрите файл LICENSE

Используемые сторонние продукты

  1. Отстутствуют