Skip to content

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

License

Notifications You must be signed in to change notification settings

ripreal/androidUtils1cExt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Пример (шаблон) внешней компоненты для мобильной платформы 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. Отстутствуют