Нано HTTP сервер - внешняя компонента для мобильного приложения 1C, на Android

05.11.20

Разработка - Разработка внешних компонент

Нано HTTP сервер на терминале сбора данных "ATOL Smart.Lite android 7.0". Работает только с GET и POST запросами. Аутентификация BASE64. Не поддерживает HTTPS и не передает файлы. В прикрепленном архиве исходники на компоненту (С++ и java для Android Studio 3.6.2), ЦФ - мобильного приложения и тестовая обработка.

Скачать файлы

Наименование Файл Версия Размер
Внешняя компонента нано HTTP сервер. + Исходники
.zip 17,94Mb
21
.zip 17,94Mb 21 Скачать

Так как у мобильного приложения 1С нет HTTP сервисов решил написать свой. 

На чем я работал:

1. Android Studio 3.6.2

2. Мобильное приложение 1С 8.3.16.142

3. 1С:Предприятие 8.3 (8.3.17.1386)

Начнем с описания функционала:

// Описание: Функция запускает сервер.
// Параметры:
//Не обязательные.
//  Порт  - число. Порт который слушает сервер. 8080 по умолчанию.
//  Имя, Пароль - строки.
//  Если не заполнены значит нет аутентификации
//Возвращает указатель на Сервер - пустая строка ошибка создания.
СтрокаУказатель = Компонента.CreateHttpServer(Порт, Имя, Пароль)

// Описание:  функция отвечает на запрос
// Параметры:
//  обязательные.
//	Сокет- строка. Указатель на клиентский сокет - получается из запрос HTTP
// Не обязательные.
//  КодОтвет - СТРОКА. если не заполнено тогда "200"
//  Данные   - СТРОКА. если не заполнено тогда ""
// Возвращает количество отправленных байт если <= 0 то ошибка.
ОтправленоБайт = Компонента.SendAnswer(Сокет, КодОтвет, Данные)

// Описание: Количество подключенных к серверу клиентов
Число = Компонента.ClientCount;

// Описание: Данные интерфейса IP (только когда запущен сервер)
JSONСтрока = Компонента.IPConfig;

// Описание: Отладка можно посмотреть версию
JSONСтрока = Компонента.InfoString;

1. Подключение стандартное ниже на скрине.

Важно:

Во время настройки Web-публикации следует провести следующее действие. В настройках http-сервера необходимо добавить типы MIME для следующих расширений:

  • .so
  • .apk

Тип MIME: application/octet-stream

2. Проверим.

 

2. Написал обработку с двумя кнопками. Запустил на УТ.

код обработки:


Процедура КнопкаВыполнитьPOST(Кнопка)
	
	Попытка
		Запрос = Новый Запрос;
		Запрос.Текст = 
			"ВЫБРАТЬ
			|	Номенклатура.Ссылка,
			|	Номенклатура.Наименование,
			|	Штрихкоды.ПредставлениеШтрихкода
			|ИЗ
			|	РегистрСведений.Штрихкоды КАК Штрихкоды
			|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
			|		ПО Штрихкоды.Владелец = Номенклатура.Ссылка
			|	     И НЕ Номенклатура.ЭтоГруппа";
		
		Выборка = Запрос.Выполнить().Выбрать();
		// Создаем строку с данные  JSON выборка примерно 45000 элементов
		JSONДанныеПередачи = СоздатьСтрокуJSON(Выборка);
		
		Если HTTPСоединение = Неопределено Тогда
			HTTPСоединение = Новый HTTPСоединение("192.168.0.98", 8080, "Админ", "123");
		КонецЕсли;	
		
		HTTPЗапрос = Новый HTTPЗапрос("/HTTPTest/Post?Номенклатура=" + КодироватьСтроку(НоменклатураСсылка,СпособКодированияСтроки.КодировкаURL) + "&Индекс=" + Индекс);
		
		//добовляем заголовки к запрос
		//к сожеления не поборол руские буквы в заголовках поэтому нужно использовать функцияю КодироватьСтроку
		HTTPЗапрос.Заголовки.Вставить(КодироватьСтроку("КомандаЗаголовок",СпособКодированияСтроки.КодировкаURL)
		                             ,КодироватьСтроку("Выгружаем номенклатуру",СпособКодированияСтроки.КодировкаURL));
									 
		HTTPЗапрос.Заголовки.Вставить(КодироватьСтроку("ДатаЗапроса",СпособКодированияСтроки.КодировкаURL),ТекущаяДата());
		HTTPЗапрос.Заголовки.Вставить(КодироватьСтроку("Количество",СпособКодированияСтроки.КодировкаURL),Выборка.Количество());
		
		
		HTTPЗапрос.УстановитьТелоИзСтроки(JSONДанныеПередачи);
		HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
		Сообщить(Строка(HTTPОтвет.КодСостояния) + Символы.ПС + HTTPОтвет.ПолучитьТелоКакСтроку());
		Индекс = Индекс + 1;	
		
   Исключение
      Сообщить(ОписаниеОшибки());
   КонецПопытки;
   
КонецПроцедуры

Процедура КнопкаВыполнитьGET(Кнопка)
	
	Попытка
		//подключение к нашему серверу
		Если HTTPСоединение = Неопределено Тогда
			HTTPСоединение = Новый HTTPСоединение("192.168.0.98", 8080, "Админ", "123");
		КонецЕсли;	
		
		HTTPЗапрос = Новый HTTPЗапрос("/HTTPTest/Get?Номенклатура=" + НоменклатураСсылка + "&Индекс=" + Индекс);
		
		//добовляем заголовки к запрос
		//к сожеления не поборол руские буквы в заголовках поэтому нужно использовать функцияю КодироватьСтроку
		HTTPЗапрос.Заголовки.Вставить(КодироватьСтроку ("КомандаЗаголовок",СпособКодированияСтроки.КодировкаURL) ,КодироватьСтроку("Родитель",СпособКодированияСтроки.КодировкаURL));
		HTTPЗапрос.Заголовки.Вставить(КодироватьСтроку ("ДатаЗапроса",СпособКодированияСтроки.КодировкаURL),ТекущаяДата());
		
		//Выполнили метод
		HTTPОтвет = HTTPСоединение.Получить(HTTPЗапрос);
		//Обработка ответа
		Сообщить(Строка(HTTPОтвет.КодСостояния) + Символы.ПС + HTTPОтвет.ПолучитьТелоКакСтроку());
	Исключение
      Сообщить(ОписаниеОшибки());
	КонецПопытки;
	
КонецПроцедуры

3. Написал обработку события на сервере в мобильное приложение 1С.

код обработки:


Процедура ОбработкаВнешнегоСобытия(Источник, Заголовоки, Контент)
	
	Если Источник = "MALhttpserver" Тогда
		
		//Обычное преобразование JSON в сооответсвие заголовков
		ДанныеЗапроса = JSONМодуль.СоздатьСтруктуруИзAndroid(Заголовоки, Истина);
		
		//Так как событие асинхронное то и пришлось добавить ид сокета для ответа.
		КлиентСокет = ДанныеЗапроса.Получить("ClientSocket");
		//Сам запрос 
		Запрос = ДанныеЗапроса.Получить("Inquiry");
		
		Если Запрос = "HTTPTest/Get" Тогда
			
			//Просто отвечаем 
			глHTTPServer.SendAnswer(КлиентСокет,"200","Привет я тебя понял)");	
			
		ИначеЕсли Запрос = "HTTPTest/Post" Тогда 	
			
			//Разбераем данные клиента
			СтруктураКонтент = JSONМодуль.СоздатьСтруктуруИзAndroid(Контент, Ложь);
			
			//создаем строкуJSON из входного масива
			ЗаписьJSON = Новый ЗаписьJSON;
			ЗаписьJSON.УстановитьСтроку(Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет));
			ЗаписатьJSON(ЗаписьJSON, СтруктураКонтент.Номенклатура);
			ОтветСтрокаJSON = ЗаписьJSON.Закрыть();
			
			
			//Отвечаем массивом обратно, а 201 просто так захотелось.
			глHTTPServer.SendAnswer(КлиентСокет,"201",ОтветСтрокаJSON);	
			
		Иначе 
			глHTTPServer.SendAnswer(КлиентСокет,"404","Нет токой страници!");	
		КонецЕсли;	
		
	КонецЕсли;	
	

3. Посмотрим точки останова.

В обработке запущенной на УТ нажимаем кнопку "отправить GET запрос" . На сервере(мобильное приложение 1С)  возникает внешнее событие:

Сервер отвечает и вот его ответ:

Теперь в обработке запущенной на УТ нажимаем кнопку "отправить POST запрос" . На сервере(мобильное приложение 1С)  возникает внешнее событие:

Сервер отвечает и вот его ответ:

4. Ну пожалуй все.

В Архиве исходники на  компоненту ,сf , и тестовая обработка . В папке package уже готовый zip для компаненты. Все исходники для android написаны под Android Studio 3.6.2. Все, что нужно, само подгрузится. 

См. также

"Штрихкод-информер" - мобильный ТСД и прайс-чекер в смартфоне

Мобильная разработка Сканер штрих-кода Терминал сбора данных Управляемые формы Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Сбор заказов, инвентаризация, проверка ценников, просмотр полной информации об остатках и ценах со смартфона Онлайн. Отправка данных со смартфона выполняется либо напрямую в открытую форму документа, отсканировав QR-код, либо в общую корзину учетной системы, не подходя к компьютеру. Кассир или оператор сможет просмотреть список присланных данных и загрузить в любую форму, поддерживающую работу с ТСД. Для работы с мобильным приложением требуется опубликовать HTTP-сервис из поставляемого расширения.

2880 руб.

03.12.2018    54615    137    102    

161

SALE! 25%

Что нам стоит бота построить? Нарисуем - будет жить! Графический конструктор телеграм-ботов/Telegram

Мобильная разработка Мессенджеры и боты Платформа 1С v8.3 Платные (руб)

Теперь создать telegram-бота - элементарно. Достаточно просто нарисовать блок-схему телеграм-бота, и он сразу заработает. Это возможно при использовании Графического конструктора телеграм-ботов. Это единственный конструктор ботов для telegram, чье качество и функционал подтверждены фирмой 1С, есть сертификат 1С:Совместимо. Расширение в интерактивном режиме, с помощью блок-схем, позволяет с минимальными трудозатратами создать телеграм-ботов в любой конфигурации, работающей на платформе «1С:Предприятие 8.3».

13200 9900 руб.

27.12.2021    33278    80    157    

174

"Мобильный ТСД" - инвентаризация и сбор штрихкодов для iOS и Android

Сканер штрих-кода Терминал сбора данных Мобильная разработка Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Платформа 1С v8.3 Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Простой мобильный терминал сбора данных для смартфонов на iOS и Android, не требующий сложных настроек и установки дополнительных программ. Обмен между Вашей 1С и мобильным приложением осуществляется через облачный сервис и расширение конфигурации. Работает с конфигурациями УТ 11, ERP, КА2, Розница 2, Розница 3, УНФ 1.6, УНФ 3.0. Полнофункциональный демо-доступ для своей конфигурации можно запросить в настройках мобильного приложения - все необходимое придет на почту автоматически.

2000 руб.

22.04.2019    91945    511    186    

293

Медиадисплей. Рекламный информационный монитор для покупателя.

Разработка внешних компонент POS терминал Рабочее место Розничная торговля Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд Реклама, PR и маркетинг Управленческий учет Платные (руб)

Монитор покупателя может отображать текущую покупку на кассовом месте, показывать видеорекламу, баннеры, во время простоя разворачивать рекламу на весь экран. Можно использовать в качестве графического меню-борда в кафе и видеовывески. Управление выводом на телевизор через hdmi-приставку на базе Windows или Android. В качестве устройства отображения можно использовать Android-планшеты, фоторамки с Android, монитор любого Windows-компьютера, доступного по сети. Настраивается ЛЮБОЙ ДИЗАЙН экрана!

16800 руб.

30.05.2017    52103    34    69    

43

Магазин 15 - приемка товара по штрихкодам или инвентаризация в торговом зале

Логистика, склад и ТМЦ Мобильная разработка Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Розничная и сетевая торговля (FMCG) Россия Платные (руб)

Специализированное программное обеспечение для мобильных устройств со встроенным сканером штрихкодов. Позволяет быстро автоматизировать, оптимизировать рабочие места и бизнес процессы по учету товара в магазине. Например, приемку товара по штрихкодам или инвентаризацию прямо в торговом зале.

12950 руб.

30.05.2023    3388    2    0    

4

Внешняя компонента для сканирования (замена TWAIN-компоненты БСП) (Native Win 32/64)

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) . Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с 64-разрядной платформой, а так же имеет расширенную функциональность, например, сохранение результата непосредственно в PDF без использования сторонних утилит. Прекрасно работает на сервере, тонком клиенте и веб-клиенте (проверена работа в браузерах Google Chrome, Mozilla Firefox и Microsoft Internet Explorer).

2400 руб.

12.05.2020    26244    131    99    

83

Внешняя компонента для подключения 1С к телефонии Asterisk

Разработка внешних компонент Телефония, SIP Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Внешняя компонента выполнена по технологии Native API для 1С 8.х, обеспечивает доступ к программным АТС Asterisk (FreePBX, Elastix) через AMI интерфейс. Через него можно управлять многими функциями Asterisk (определение номеров, перевод звонков, набор телефона и т. д.)

2400 руб.

04.05.2018    44976    117    64    

60
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. boss_kuz 106 18.08.20 10:45 Сейчас в теме
Добрый день. Не подскажите в чем может быть проблема.
Делаю так :
HTTPЗапрос.УстановитьТелоИзСтроки("Привет");
		HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);

На входе получаю :

СтруктураКонтент = BroadcastКлиент.СоздатьСтруктуруИзAndroid(Данные, Ложь);


В реальности в поле Данные содержится "ривет". т.е. сервис обрезает первый символ.
Причем с json такая же проблема первый символ "{" убирается и его невозможно на приемнике прочитать
4. SanyMaga 68 18.08.20 11:11 Сейчас в теме
(1)
Это кодировка UTF-8 у вас нет Символов BOM

Для указания, что файл или поток содержит символы Юникода, в начале файла или потока может быть вставлен маркер последовательности байтов (англ. Byte order mark, BOM), который в случае кодирования в UTF-8 принимает форму трёх байтов: EF BB BF16.

Они по умолчанию.

Либо поправить код в модуле сервера в Андроид студия.

Я не проверяю просто убераю 2 первых символа.


УстановитьТелоИзСтроки(<ТелоКакСтрока>, <Кодировка>, <ИспользоватьBOM>)
30. nick_e 2 25.04.23 07:28 Сейчас в теме
(4) Я правильно понимаю, эта компонента создает HTTP сервер на мобильном устройстве например ТСД?
А можно через него делать например синхронизацию номенклатуры между ТСД и основной базой на компьютере? Или это тоже самое, что развернуть веб сервер на компьютере опубликовать базу и работать с ней?
2. пользователь 18.08.20 11:06
Сообщение было скрыто модератором.
...
3. SanyMaga 68 18.08.20 11:08 Сейчас в теме
Я не проверяю просто убераю 2 первых символа.


УстановитьТелоИзСтроки(<ТелоКакСтрока>, <Кодировка>, <ИспользоватьBOM>)
5. boss_kuz 106 19.08.20 08:13 Сейчас в теме
Добрый день. ТСД Атол Pro. В мобильном клиенте все работает хорошо, но в мобильном приложении при устанвки внешней компоненты:
Если ПодключитьВнешнююКомпоненту("ОбщийМакет.Макет", "rumalhttpserver", ТипВнешнейКомпоненты.Native) Тогда

Ошибка формата потока.
В чем может быть проблема ?
Параллельно пользуюсь вашей компонентой Rumalutilities. Она работает без проблем.
6. SanyMaga 68 19.08.20 09:46 Сейчас в теме
(5) Иногда после обновления макета вылазит такая ошибка, при первом запуске потом ее нет связанна с кешем.
Если эта ошибка постоянная тогда просьба скрин с деталями ошибки.
7. boss_kuz 106 19.08.20 17:55 Сейчас в теме
Стоит версия 8.3.15.105. Установил файл 1cem-client-arm.apk (мобильный клиент) из поставки 1С подключаюсь к опубликованной базе все работает. Ставим 1cem-arm.apk (мобильное приложение). В конфигураторе - мобильное приложение - обновить мобильное приложение. Запускаем ... происходит обновление приложения на ТСД... При начале работы системы исполняется данный код :
	#Если МобильноеПриложениеКлиент ИЛИ МобильныйКлиент Тогда	
		НачатьУстановкуВнешнейКомпоненты(, "ОбщийМакет.MalHttpServer");	
		ОписаниеОповещения = Новый ОписаниеОповещения(
			"ПослеПодключенияКомпоненты",
			ЭтотОбъект
		);	
		НачатьПодключениеВнешнейКомпоненты(
			ОписаниеОповещения,
			"ОбщийМакет.MalHttpServer",
			"rumalhttpserver",
			ТипВнешнейКомпоненты.Native
		);
	#КонецЕсли
Показать


После этого кода (пробовал также просто ПодключитьВнешнююКомпоненту) падает в ошибку.



Как подробнее даже не знаю что предложить :(
Очищал кэш приложения. Не помогло.
8. SanyMaga 68 19.08.20 20:54 Сейчас в теме
(7)
Я отлаживал как рас в мобильном приложении а не в мобильном клиенте нет.

А вот это сделано?

Во время настройки Web-публикации следует провести следующее действие. В настройках http-сервера необходимо добавить типы MIME для следующих расширений:

.so
.apk
Тип MIME: application/octet-stream
9. boss_kuz 106 20.08.20 05:54 Сейчас в теме
(8) Добрый день. У меня стоит Апач 2.4. Добавил в раздел
<IfModule mime_module>
	#Для отладки Мобильного приложения
	AddType application/octet-stream .so
	AddType application/octet-stream .apk


Не помогло. Помогите . Пожалуйста.
11. boss_kuz 106 20.08.20 08:15 Сейчас в теме
(10) Использовал готовый librumalhttpserver.zip (2291691 байт)
12. SanyMaga 68 20.08.20 09:53 Сейчас в теме
(11)

Вы писали
"Параллельно пользуюсь вашей компонентой Rumalutilities. Она работает без проблем."


Попробовать заменить библиотеку в этой конфигурации просто для проверки.

Не могу пока локализовать вашу проблему.

P.S. Апач разный для конфигураций??
13. boss_kuz 106 20.08.20 15:21 Сейчас в теме
В одной и той же конфигурации используется Rumalutilities и rumalhttpserver. Пробовал тестирование и исправление. Удаление. Установка заново, отключал Rumalutilities все бесполезно. У меня ощущение что все таки что то с правами Андроида. Я полагаю что компонента должна запустить какую-то службу и тут происходит облом. У вас же MalAccservice вынесен отдельно. Вы можете дать какую-нибудь конфигурацию для проверки, где у вас гарантированно работает (я так понял у вас тоже Атолы). Ваше HTTP сервер, ну очень "крутая" штучка. Очень хотелось бы ее воспользоваться.
14. SanyMaga 68 21.08.20 07:54 Сейчас в теме
(13)
cf в aрхиве есть на нем и все отлаживал и скринил.
15. SanyMaga 68 21.08.20 08:20 Сейчас в теме
(13)
У меня 7 андроид был у вас скорей всего 9

Попробуйте в мнифесте (ANDROID_MANIFEST_EXTENSIONS.XML) 1с добавить:
<uses-permission android:name="android.permission.INTERNET" />

подробности: https://its.1c.ru/db/metod8dev/content/3221/hdoc

PS На сколько я знаю на сокеты разрешения не нужны.
16. SanyMaga 68 21.08.20 08:30 Сейчас в теме
(13) Попробуйте другой порт например 2550 (у меня 80 порт не открывался)

Компонента.CreateHttpServer(2550, Имя, Пароль)
17. SanyMaga 68 21.08.20 08:45 Сейчас в теме
(13) Я использовал IIS апач не знаю.
18. boss_kuz 106 22.08.20 04:33 Сейчас в теме
Простите меня , я тупой. Вид макета был "двоичные данные". А нужно "внешняя компонента". Спасибо тебе добрый человек. Вопрос снят.
19. boss_kuz 106 24.08.20 08:32 Сейчас в теме
Добрый день. Обнаружил очередную проблему. Если на Атолев мобильном приложении удалить базу и загрузить заново , то возникает ошибка и 1с закрывается. Второй раз может зайти. На "китайских" терминалах "гарантировано" не заходит. Если отменить установку компоненты все работает. Листинг ошибки :
java.lang.UnsatisfiedLinkError: dalvik.system.DexClassLoader[DexPathList[[zip file "/data/user/0/com.e1c.mobile/files/1C/1cem/34374e2c-3695-c8c3-1227-af6912cfa793/ExtCompT/ru_mal_utilities.apk"],nativeLibraryDirectories=[/data/user/0/com.e1c.mobile/files/1C/1cem/34374e2c-3695-c8c3-1227-af6912cfa793/ExtCompT, /system/lib]]] couldn't find "libru_mal_utilities.so"
	at java.lang.Runtime.loadLibrary0(Runtime.java:1012)
	at java.lang.System.loadLibrary(System.java:1669)
	at ru.mal.malutilities.AddIn1c.run(AddIn1c.java:34)
	at android.os.Handler.handleCallback(Handler.java:873)
	at android.os.Handler.dispatchMessage(Handler.java:99)
	at android.os.Looper.loop(Looper.java:193)
	at android.app.ActivityThread.main(ActivityThread.java:6702)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:911)
Показать
20. SanyMaga 68 17.09.20 17:14 Сейчас в теме
(19)
"/data/user/0/com.e1c.mobile/files/1C/1cem/34374e2c-3695-c8c3-1227-af6912cfa793/ExtCompT/ru_mal_utilities.apk"],nativeLibraryDirectories=[/data/user/0/com.e1c.mobile/files/1C/1cem/34374e2c-3695-c8c3-1227-af6912cfa793/ExtCompT, /system/lib]]] couldn't find "libru_mal_utilities.so


В ошибке указаны >> ru_mal_utilities.apk и libru_mal_utilities.so << а у меня другие апк и со.
скорей всего ошибка кеша.
У вас две моих библиотеки?
21. user833146 17.02.22 17:21 Сейчас в теме
Всем привет. Не получается запустить HTTP сервер (ПодключитьВнешнююКомпоненту) на устройстве.

- Смартфон с android 12.
- 1С:Предприятие 8.3 (8.3.20.1613) - платформа разработки моб. приложения (совместимость Версия 8.3.19)
- 1C:Предприятие 8.3 (8.3.19.59) - моб платформа
- Макет - "внешняя компонента", взял из приложенной cf.

Не проходит в строке: "ПодключитьВнешнююКомпоненту("ОбщийМакет.Макет", "rumalhttpserver", ТипВнешнейКомпоненты.Native)"

Если я правильно понял на счет "ANDROID_MANIFEST_EXTENSIONS.XML",
создал по образцу, добавил <uses-permission android:name="android.permission.INTERNET" />
добавил в архив компоненты, снова загрузил, не сработало...

Если есть идеи буду рад....
22. SanyMaga 68 18.02.22 09:13 Сейчас в теме
Во время настройки Web-публикации следует провести следующее действие. В настройках http-сервера необходимо добавить типы MIME для следующих расширений:

.so
.apk
Тип MIME: application/octet-stream/.

(21)
23. sssmeta 18.02.22 11:04 Сейчас в теме
(22) Да, я видел это в описании, но пока чего-то туплю...Скорее всего я не так что-то делаю, может я не там их прописываю?

"Во время настройки Web-публикации" - имеется ввиду публикации приложения? (Конфигурация->МобильноеПриложение->Публиковать)?
И не очень понял как связано "ПодключитьВнешнююКомпоненту" и настройки Apache.

1) Прописал в "Apache2.2\conf\mime.types" строку: "application/octet-stream bin dms lrf mar dist distz pkg bpk dump elc deploy so apk"

2) Прописал в "Apache2.2\conf\httpd.conf (примерно так)
LoadModule mime_module modules/mod_mime.so
TypesConfig conf/mime.types
AddType application/octet-stream .so .apk

3) Перезапустил Apache

4) Удалил старую публикацию приложения из "httpd.conf" и каталога публикации и из конфигуратора моб. приложения, опубликовал заново.

Если понимаете где мой косяк, подскажите чуть подробнее пожалуйста.
24. SanyMaga 68 18.02.22 13:38 Сейчас в теме
(23) с апачем не работал не знаю.

загрузка архивов внешних компонент в конфигурацию осуществляется в макеты с типом "Внешняя компонента"

https://its.1c.ru/db/metod8dev#content:3221:hdoc:_подготовка_внешних_компонент_для_за
25. igori3333 11 27.03.23 21:12 Сейчас в теме
Добрый, приобрел у вас данную компоненту. К сожалению работает только на 32 битных процессорах. Сможете как-то выслать компоненту для 64?
26. igori3333 11 27.03.23 21:24 Сейчас в теме
Или подскажите как пересобрать исходник для apk и so под 64 бита
27. SanyMaga 68 30.03.23 09:59 Сейчас в теме
(26)
У меня нет под рукой студии(не установлена и поставить не могу).
По моему где то в настройках студии нужно установить процессор 64 бита или поддержку 64 бита и пересобрать проект.
29. igori3333 11 10.04.23 13:31 Сейчас в теме
(28) Спасибо. Уже разобрался. В общем хотел поделиться процессом решения на своём аппарате (Xiaomi 11T).
1) Скачал и установил Android Studio 2019 года.
1.1) Загрузил проект, у меня лично была ошибка установки NDK в gradle, но это быстро решилось. После загрузки пересобрал с настройкой варианта сборки (build Variants) для разной разрядности
2) В самом проекте в папке "app\build\intermediates\stripped_native_libs\debug\out\lib\­" есть файлы so, я их перенес в каталог макета компоненты
и добавил к наименованию их разрядность. В итоге сам каталог должен содержать файлы согласно xml манифеста
<?xml version="1.0" encoding="UTF-8"?>
<bundle name="ru_mal_httpserver" xmlns="http://v8.1c.ru/8.2/addin/bundle">
<component arch="ARM" type="native" codeType="c++" path="libru_mal_httpserver_ARM.so" os="Android"/>
<component arch="ARM" type="native" codeType="java" path="ru_mal_httpserver.apk" os="Android"/>
<component arch="ARM64" type="native" codeType="c++" path="libru_mal_httpserver_ARM64.so" os="Android"/>
<component arch="ARM64" type="native" codeType="java" path="ru_mal_httpserver.apk" os="Android"/>
<component arch="i386" type="native" codeType="c++" path="libru_mal_httpserver_x86.so" os="Android"/>
<component arch="i386" type="native" codeType="java" path="ru_mal_httpserver.apk" os="Android"/>
<component arch="x86_64" type="native" codeType="c++" path="libru_mal_httpserver_x64.so" os="Android"/>
<component arch="x86_64" type="native" codeType="java" path="ru_mal_httpserver.apk" os="Android"/>
</bundle>
3) Запаковал их в zip и перекинул в макет конфигурации и так заработало под arm64
31. SanyMaga 68 26.04.23 13:16 Сейчас в теме
Оставьте свое сообщение