@Tut_and_Tam

Socket + Buildozer?

Хочу из APK приложения отправить UDP пакет, но бульдозер против. Если просто молча в код импортировать socket, работать не будет, приложение будет вылетать. Работать с HTTP можно, а с протокола нельзя?

Вот что не я пробовал и это не работает;

requirements = socket

Компиляция с помощью Cython
client.cpython-38.so

Использовал язык C, запускал внутри питона.

Залезал в kivy.network писал дополнительную библиотеку.
Попробовал scapy.all

Вот человек с такой же проблемой, задавал вопрос на githube
https://github.com/kivy/buildozer/issues/1121
Интересно, а импортировать aiohttp тоже нельзя?) Как то тупо получается что socket нельзя импортировать в проект kivy.

import socket

from kivymd.app import MDApp
from kivy.lang import Builder
from kivy.uix.button import Button

class Send_UDP():
def __init__(self, host='192.168.12.1', port=787):
self.host = host
self.port = port
self.server = (self.host, self.port)
self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

def send(self, packet):
self.sock.sendto(packet.encode("UTF-8"), self.server)

se=Send_UDP()

class Test(MDApp):
def build(self):
se.send('test packet')
button = Button(text='Hello world', font_size=14)
return button

Test().run()

Компил: buildozer android debug deploy run
  • Вопрос задан
  • 55 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Tut_and_Tam Автор вопроса
Я решил проблему! Если кто-то с толкнулся с ней, так вот что надо делать:
1. requirements = python3,kivy,kivymd
Импортируем ВСЁ модули python3, включая socket. Если модуль был установлен дополнительно - pip install new_module. То вам надо его указать пример - kivymd

2. Выйдет ошибка - [Errno 13] Permission denied. И тут меня осенило, надо в в buildozer убрать # android.permissions = INTERNET

Вам нужно указать что ваше приложение нужная в Network, тогда вы спокойно сможете юзать socket

Все можно удалятся с форума) Всем спасибо
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы