Ошибка SL4A Qpython

Я пытался использовать Qpython, и все было в порядке. Но позже, когда я запустил скрипт со строками

import androidhelper
droid = androidhelper.Android()

Это дало мне ошибку

socket.gaierror: [Errno 4] неисправимая ошибка в разрешении имен.

После нескольких минут поиска я обнаружил, что проблема может быть с сервером sl4a. Но Qpython говорит, что он работает. Так что же не так?


person desu    schedule 11.12.2015    source источник


Ответы (3)


Служба SL4A должна быть запущена:

  • Для версии 3L: главное меню -> 3 точки (в верхнем правом углу) -> Управление службой SL4A -> (нажмите) Запустить службу SL4A.
  • Для версии OL: главное меню -> Дополнительно -> (нажмите) Сервер SL4A. Он должен показывать «Сервер SL4A работает» прямо под опцией.

Закройте (перезапустите) вашу консоль, если она уже запущена — внутренний адрес службы SL4A извлекается при импорте модуля, поэтому, если вы перезапустите службу после импорта androidhelper, она не будет работать для этого интерпретатора — вам придется открыть новый.

person Błażej Michalik    schedule 03.03.2020

Попробуйте перезапустить (отключить/включить) S4LA в настройках QPython. Я сделал это перед сменой имени. Измените имя этой переменной, дроид выдал ту же ошибку. "Droidr" работает для меня просто отлично. На самом деле я не знаю, в чем проблема, возможно, эта переменная уже используется где-то в SL4A.

person user5881592    schedule 04.02.2016

Это проблема с разрешением пары ip:namespace на уровне вашего сокета. Скорее всего, где-то проблема с вашим DNS.

person michael g    schedule 01.03.2016
comment
Так я могу это как-то исправить? - person desu; 02.03.2016
comment
Я считаю, что это не относится к sl4a. эта ошибка может появиться для всех типов сетевых операций. возможно, вы используете неправильное имя хоста в своем коде, и это не может быть разрешено, у вас может быть неверный ip-адрес DNS-сервера на вашем устройстве (или вашем маршрутизаторе), и я даже видел эту проблему при входе в общедоступные сети, которые ожидают, что вы соглашайтесь с их условиями перед серфингом в сети, поскольку он блокирует DNS-запросы до их принятия. Не уверен, что это так, но это некоторые причины такой ошибки сокета. - person michael g; 02.03.2016
comment
Если вы не выполняете какие-либо сетевые действия в своем сценарии Python, возможно, это повреждение в qpython, поскольку вашему сценарию необходимо подключиться к серверу sl4a rpc для доступа к коду Java API. вероятно, он ищет адрес локального хоста и по какой-то причине не работает. попробуйте переустановить и посмотрите, будет ли у вас такая же проблема. qpython хранит стандартную библиотеку python во внешнем хранилище, сотрите и ее, чтобы очистить и перезагрузить. - person michael g; 02.03.2016
comment
Я уже пробовал переустанавливать и проверял версии qpython и qpython3. Оба дают мне ту же ошибку с sl4a - person desu; 03.03.2016
comment
Нет, это не проблема сетевых операций. SL4A использует там сокет RPC. Он пытается подключиться к (os.environ['AP_HOST'], os.environ['AP_PORT']) (в моем случае ("127.0.0.1", 37235)). Сказать, что это проблема с разрешением пары ip:namespace на уровне вашего сокета, вероятно, направит читателя в неправильном направлении. Это все равно, что сказать, что падающий самолет — это проблема с системой подъемной силы — гравитации — тяги — лобового сопротивления. - person Błażej Michalik; 03.03.2020
comment
Это старая тема, и я немного не использовал sl4a, но я все еще думаю, что это проблема DNS для desu. В случае RPC пакету сокетов python не нужно будет использовать DNS для обратного IP-адреса. Ему нечего искать в отношении DNS. - person michael g; 03.03.2020