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

05.11.20

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Внешняя компонента нано HTTP сервер. + Исходники
.zip 17,94Mb
21
21 Скачать (1 SM) Купить за 1 850 руб.

Так как у мобильного приложения 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С-программирование Мобильная разработка Программист Стажер Платные (руб)

Данный онлайн-курс предусматривает изучение базовых принципов создания приложений для операционной системы Android, работающих на мобильной платформе “1С:Предприятие”. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие” при разработке прикладных решений для “обычных” компьютеров, но пока ещё не занимался разработкой 1С-приложений, предназначенных для работы на мобильных устройствах.

08.06.2023    9625    0    Infostart    0    

67

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

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

2880 руб.

03.12.2018    58698    192    103    

172

SALE! 25%

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

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

13200 9900 руб.

27.12.2021    37314    100    161    

193

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

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

2000 руб.

22.04.2019    96115    564    187    

316

Разработка внешних компонент 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 и маркетинг Управленческий учет Платные (руб)

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

15000 руб.

30.05.2017    53456    8    69    

45

Мобильная разработка Платформа 1С v8.3 Конфигурации 1cv8 Финансовые услуги, инвестиции Управленческий учет Платные (руб)

Мобильное приложение и конфигурация 1С для автоматической торговли на бирже через API Тинькофф банка. Достаточно задать настройки, нажать «Пуск», и робот сам торгует ежедневно.

7000 руб.

25.05.2022    4322    1    0    

6

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

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

3000 руб.

12.05.2020    27862    137    100    

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

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

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


В реальности в поле Данные содержится "ривет". т.е. сервис обрезает первый символ.
Причем с json такая же проблема первый символ "{" убирается и его невозможно на приемнике прочитать
4. SanyMaga 69 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 69 18.08.20 11:08 Сейчас в теме
Я не проверяю просто убераю 2 первых символа.


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

Ошибка формата потока.
В чем может быть проблема ?
Параллельно пользуюсь вашей компонентой Rumalutilities. Она работает без проблем.
6. SanyMaga 69 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 69 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 69 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 69 21.08.20 07:54 Сейчас в теме
(13)
cf в aрхиве есть на нем и все отлаживал и скринил.
15. SanyMaga 69 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 69 21.08.20 08:30 Сейчас в теме
(13) Попробуйте другой порт например 2550 (у меня 80 порт не открывался)

Компонента.CreateHttpServer(2550, Имя, Пароль)
17. SanyMaga 69 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 69 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 69 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 69 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 69 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 69 26.04.23 13:16 Сейчас в теме
Оставьте свое сообщение