0

I use exchangelib for access to my mail in exchange from kivymd in python. When I run my code on computer, it work without problem. But, when I deploy it via buildozer on Android and start my application on Android, I see resolver error. Please help, I don't understand source of a problem.

11-15 13:11:05.087 21267 22545 I python  :  Traceback (most recent call last):
11-15 13:11:05.087 21267 22545 I python  :    File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/stats_delay_android/cached_property.py", line 70, in __get__
11-15 13:11:05.089 21267 22545 I python  :  KeyError: 'resolver'
11-15 13:11:05.089 21267 22545 I python  :  
11-15 13:11:05.089 21267 22545 I python  :  During handling of the above exception, another exception occurred:
11-15 13:11:05.089 21267 22545 I python  :  
11-15 13:11:05.089 21267 22545 I python  :  Traceback (most recent call last):
11-15 13:11:05.090 21267 22545 I python  :    File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/stats_delay_android/dns/resolver.py", line 743, in read_resolv_conf
11-15 13:11:05.090 21267 22545 I python  :  FileNotFoundError: [Errno 2] No such file or directory: '/etc/resolv.conf'
11-15 13:11:05.091 21267 22545 I python  :  
11-15 13:11:05.091 21267 22545 I python  :  During handling of the above exception, another exception occurred:
11-15 13:11:05.091 21267 22545 I python  :  
11-15 13:11:05.091 21267 22545 I python  :  Traceback (most recent call last):
11-15 13:11:05.092 21267 22545 I python  :    File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/app/main.py", line 155, in <module>
11-15 13:11:05.092 21267 22545 I python  :    File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/app/main.py", line 151, in main
11-15 13:11:05.093 21267 22545 I python  :    File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/stats_delay_android/kivy/app.py", line 854, in run
11-15 13:11:05.094 21267 22545 I python  :    File "kivy/_event.pyx", line 707, in kivy._event.EventDispatcher.dispatch
11-15 13:11:05.094 21267 22545 I python  :    File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/app/main.py", line 63, in on_start
11-15 13:11:05.095 21267 22545 I python  :    File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/app/main.py", line 108, in get_mail
11-15 13:11:05.095 21267 22545 I python  :    File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/stats_delay_android/exchangelib/account.py", line 116, in __init__
11-15 13:11:05.096 21267 22545 I python  :    File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/stats_delay_android/exchangelib/autodiscover/discovery.py", line 24, in discover
11-15 13:11:05.097 21267 22545 I python  :    File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/stats_delay_android/exchangelib/autodiscover/discovery.py", line 123, in discover
11-15 13:11:05.097 21267 22545 I python  :    File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/stats_delay_android/exchangelib/autodiscover/discovery.py", line 429, in _step_1
11-15 13:11:05.098 21267 22545 I python  :    File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/stats_delay_android/exchangelib/autodiscover/discovery.py", line 338, in _attempt_response
11-15 13:11:05.099 21267 22545 I python  :    File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/stats_delay_android/exchangelib/autodiscover/discovery.py", line 255, in _get_unauthenticated_response
11-15 13:11:05.099 21267 22545 I python  :    File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/stats_delay_android/exchangelib/autodiscover/discovery.py", line 379, in _is_valid_hostname
11-15 13:11:05.100 21267 22545 I python  :    File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/stats_delay_android/cached_property.py", line 74, in __get__
11-15 13:11:05.100 21267 22545 I python  :    File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/stats_delay_android/exchangelib/autodiscover/discovery.py", line 154, in resolver
11-15 13:11:05.101 21267 22545 I python  :    File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/stats_delay_android/dns/resolver.py", line 695, in __init__
11-15 13:11:05.101 21267 22545 I python  :    File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/stats_delay_android/dns/resolver.py", line 746, in read_resolv_conf
11-15 13:11:05.102 21267 22545 I python  :  dns.resolver.NoResolverConfiguration: None
11-15 13:11:05.102 21267 22545 I python  : Python for android ended.
andy_111
  • 1
  • 1

1 Answers1

0

exchangelib needs to do DNS lookups for autodiscover to work. NoResolverConfiguration is an exception from the dnspython package, telling you that it could not find any information in your system about which nameservers to contact. Normally, this would be located in /etc/resolv.conf, as the FileNotFoundError error indicates.

I don't know how DNS on Android works, or how Python can get access to the DNS config on Android. If you cannot get dnspython to pick up the config, you can manually set the list of DNS servers you want to use (e.g. [8.8.8.8]) in the Resolver.nameservers attribute. You can configure this in exchangelib via the Autodiscovery.DNS_RESOLVER_ATTRS attribute:

from exchangelib.auto discover import Autodiscovery

Autodiscovery.DNS_RESOLVER_ATTRS['nameservers'] = ['8.8.8.8']
Erik Cederstrand
  • 9,643
  • 8
  • 39
  • 63