AWT Iot에 mqtt 메시지를 보낼 수있는 모바일 앱을 개발하고있었습니다. 그것은 paho-mqtt 라이브러리가 필요합니다. buildozer.spec 요구 사항에 포함될 수 있습니다. 2.7.2 인 python-for-android에서 실행되는 python 버전에 문제가있는 것으로 보이는 코드에서 SSL을 가져와야하므로 내 문제는 SSL 부분에 있습니다.안드로이드 개발을위한 Kivy의 SSL
아래 코드는 PC에서는 잘 작동하지만 전화에서는 작동하지 않습니다. buildozer.spec 요구 사항에 SSL 관련 아무것도 추가하지 않고
from kivy.lang import Builder
from kivy.app import App
from kivy.uix.label import Label
import paho.mqtt.publish as mqtt
import paho.mqtt.client as mqttclient
#
class MqttTest(App):
def build(self):
topic = "topic1"
my_ca_cert = "RootCA.pem"
my_pri_cert = "my.cert.pem"
my_key_cert = "my.private.key"
try:
import ssl
mqttc = mqttclient.Client("Python_Ex_Pub")
mqttc.tls_set(my_ca_cert,
certfile=my_pri_cert,
keyfile=my_key_cert,
cert_reqs=ssl.CERT_REQUIRED,
tls_version=ssl.PROTOCOL_TLSv1_2,
ciphers=None)
mqttc.connect("myaddress", 8883)
mqttc.publish(topic, "This is a test pub from Python.")
return Label(text="Hi it works!")
except Exception as e:
import traceback
a=traceback.format_exc()
try:
f1=open("/storage/emulated/0/Download/err.txt","w")
f1.write(str(a))
f1.close()
except:
pass
return Label(text=str (a))
if __name__ == '__main__':
MqttTest().run()
, 나는 다음과 같은 오류가 발생합니다 :
no module named _ssl
내가 요구 사항의 하나로서 OpenSSL을 추가하면, 나는 다음과 같은 오류가 발생합니다 :
'module' object has no attribute 'PROTOCOL_TLSv1_2'
구체적으로 2.7.2를 사용해야합니까? Kivy는 파이썬 2.7과 3을 모두 지원합니다. 그렇죠? 'PROTOCOL_TLSv1_2'가 2.7.9에 추가 된 것처럼 보입니다 (그리고 2.7.13에서 더 이상 사용되지 않습니다). – Michael
아니,하지만 난 단지 kivy와 python 4 android에서 python3을 시도하지 않았다. 그럼 내가 어떻게 할 수 있니? –
Kivy FAQ 에선 "1.8.0 버전에서 Kivy는 동일한 코드베이스에서 Python> = 2.7과 Python> = 3.3을 모두 지원합니다. 파이썬 3은 또한 python-for-android에서도 지원됩니다."_ – Michael