Вылеты приложения в телефоне, написанное на pyhon kivy
Я написал приложение на python с использованием библиотек kivy, requests и BeautifulSoup4. На компьютере оно запускается нормально. Но мне нужно было скомпилировать его под android. Я не хотел устанавливать Linux ради одного приложения и нашёл как сделать это через сайт travis-ci и github. Приложение я в итоге скомпилировал с 13 попытки, но при запуске на телефоне после надписи loading вылетает и иногда выдаёт SumMoney keeps stopping. (режим разработчика на телефоне включён) Раз оно смогло скомпилироваться, то я подозреваю, что проблема где-то в коде python'а. Почти все файлы кроме "main.py" были взяты с этого урока: https://www.youtube.com/watch?v=s7kNe5o86yY
ссылка на github: https://github.com/serpak946/APK_test
Ниже файл main.py
from kivy.app import App
from kivy.uix.textinput import TextInput
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.core.window import Window
import requests
from bs4 import BeautifulSoup
class MyApp(App):
RUP1=0
USD1=0
RUB1=0
MDL1=0
UAH1=0
EUR1=0
def RUPCH(self, instance, text):
global RUP1, k
try:
if text=='': text='0'
RUP1=float(text)
self.code()
except ValueError:
RUP1=0
k=5
self.code()
def USDCH(self, instance, text):
global USD1, k
try:
if text=='': text='0'
USD1=float(text)
self.code()
except ValueError:
USD1=0
k=5
self.code()
def RUBCH(self, instance, text):
global RUB1, k
try:
if text=='': text='0'
RUB1=float(text)
self.code()
except ValueError:
RUB1=0
k=5
self.code()
def MDLCH(self, instance, text):
global MDL1, k
try:
if text=='': text='0'
MDL1=float(text)
self.code()
except ValueError:
MDL1=0
k=5
self.code()
def UAHCH(self, instance, text):
global UAH1, k
try:
if text=='': text='0'
UAH1=float(text)
self.code()
except ValueError:
UAH1=0
k=5
self.code()
def EURCH(self, instance, text):
global EUR1, k
try:
if text=='': text='0'
EUR1=float(text)
self.code()
except ValueError:
k=5
EUR1=0
self.code()
def build(self):
global RUPL, USDL, RUBL, MDLL, UAHL, EURL
wn=BoxLayout(orientation='vertical')
wn.padding = 15
wn.spacing = 5
Window.clearcolor = (0.1254901960784314, 0.3254901960784314, 0.4549019607843137, 1)
self.RUPT=TextInput(hint_text='RUP', multiline=False)
self.RUPT.input_type = 'number'
self.RUPT.foreground_color = (0.83,0.96,0.81,1)
self.RUPT.background_color =(0.1092,0.4482,0.4426,1)
wn.add_widget(self.RUPT)
self.USDT=TextInput(hint_text='USD', multiline=False)
self.USDT.input_type = 'number'
self.USDT.foreground_color = (0.83,0.96,0.81,1)
self.USDT.background_color =(0.1092,0.4482,0.4426,1)
wn.add_widget(self.USDT)
self.RUBT = TextInput(hint_text='RUB', multiline=False)
self.RUBT.input_type = 'number'
self.RUBT.foreground_color = (0.83,0.96,0.81,1)
self.RUBT.background_color =(0.1092,0.4482,0.4426,1)
wn.add_widget(self.RUBT)
self.MDLT = TextInput(hint_text='MDL', multiline=False)
self.MDLT.input_type = 'number'
self.MDLT.foreground_color = (0.83,0.96,0.81,1)
self.MDLT.background_color =(0.1092,0.4482,0.4426,1)
wn.add_widget(self.MDLT)
self.UAHT = TextInput(hint_text='UAH', multiline=False)
self.UAHT.input_type = 'number'
self.UAHT.foreground_color = (0.83,0.96,0.81,1)
self.UAHT.background_color =(0.1092,0.4482,0.4426,1)
wn.add_widget(self.UAHT)
self.EURT = TextInput(hint_text='EUR', multiline=False)
self.EURT.input_type = 'number'
self.EURT.foreground_color = (0.83,0.96,0.81,1)
self.EURT.background_color =(0.1092,0.4482,0.4426,1)
wn.add_widget(self.EURT)
self.RUPT.bind(text=self.RUPCH)
self.USDT.bind(text=self.USDCH)
self.RUBT.bind(text=self.RUBCH)
self.MDLT.bind(text=self.MDLCH)
self.UAHT.bind(text=self.UAHCH)
self.EURT.bind(text=self.EURCH)
self.text=Label(text='Сумма')
self.text.font_size = 40
self.text.color = (0.83,0.96,0.81,1)
wn.add_widget(self.text)
self.RUPL=Label(text='RUP = 0',halign="left", valign="middle")
self.RUPL.bind(size=self.RUPL.setter('text_size'))
self.RUPL.font_size = 25
self.RUPL.color = (0.83,0.96,0.81,1)
wn.add_widget(self.RUPL)
self.USDL=Label(text='USD = 0',halign="left", valign="middle")
self.USDL.bind(size=self.USDL.setter('text_size'))
self.USDL.font_size = 25
self.USDL.color = (0.83,0.96,0.81,1)
wn.add_widget(self.USDL)
self.RUBL=Label(text='RUB = 0',halign="left", valign="middle")
self.RUBL.bind(size=self.RUBL.setter('text_size'))
self.RUBL.font_size = 25
self.RUBL.color = (0.83,0.96,0.81,1)
wn.add_widget(self.RUBL)
self.MDLL=Label(text='MDL = 0',halign="left", valign="middle")
self.MDLL.bind(size=self.MDLL.setter('text_size'))
self.MDLL.font_size = 25
self.MDLL.color = (0.83,0.96,0.81,1)
wn.add_widget(self.MDLL)
self.UAHL=Label(text='UAH = 0',halign="left", valign="middle")
self.UAHL.bind(size=self.UAHL.setter('text_size'))
self.UAHL.font_size = 25
self.UAHL.color = (0.83,0.96,0.81,1)
wn.add_widget(self.UAHL)
self.EURL=Label(text='EUR = 0',halign="left", valign="middle")
self.EURL.bind(size=self.EURL.setter('text_size'))
self.EURL.font_size = 25
self.EURL.color = (0.83,0.96,0.81,1)
wn.add_widget(self.EURL)
return wn
def code(self):
global k
if k<6:
k+=1
self.RUPL.text = 'RUP = 0.0'
self.USDL.text = 'USD = 0.0'
self.RUBL.text = 'RUB = 0.0'
self.UAHL.text = 'UAH = 0.0'
self.MDLL.text = 'MDL = 0.0'
self.EURL.text = 'EUR = 0.0'
else:
SUMRUP = RUP1 + (USD1 * a8) + (RUB1 * a2) + (MDL1*a19) + (UAH1 * a3) + (EUR1*a17)
SUMRUB = RUB1 + (RUP1 / a1) + (USD1 * a9) + (EUR1 * a15) + ((MDL1*a19)/a1) + ((UAH1*a3)/a1)
SUMUSD = USD1 + (RUP1 / a7) + (RUB1 / a10) + (EUR1 * a13) + ((MDL1*a19)/a7) + ((UAH1*a3)/a7)
SUMUAH = UAH1 + ((RUP1 + (USD1 * a8) + (RUB1 * a2) + (MDL1 * a19) + (EUR1 * a17)) / a4)
SUMMDL = MDL1 + ((RUP1 + (USD1 * a8) + (RUB1 * a2) + (UAH1 * a3) + (EUR1 * a17)) / a5)
SUMEUR = EUR1 + (RUP1 / a18) + (RUB1 / a16) + (USD1 / a14) + ((MDL1 * a19) / a18) + ((UAH1 * a3) / a18)
self.RUPL.text = 'RUP = '+str(round(SUMRUP, 2))
self.USDL.text = 'USD = ' + str(round(SUMUSD, 2))
self.RUBL.text = 'RUB = ' + str(round(SUMRUB, 2))
self.UAHL.text = 'UAH = ' + str(round(SUMUAH, 2))
self.MDLL.text = 'MDL = ' + str(round(SUMMDL, 2))
self.EURL.text = 'EUR = ' + str(round(SUMEUR, 2))
URL = 'https://www.agroprombank.com/info/rates.html'
HEADERS = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0",
"Accept-Encoding": "*",
"Connection": "keep-alive"
}
def get_html(url, params=None):
'''Заходим на сайт'''
r = requests.get(url, headers=HEADERS, params=params)
return r
def get_content(html):
""""Из всего кода отделяем стоимость и берём 55 и 56 строчку, где находится RUB/RUP"""
global pok
global prod
global pok1
global prod1
global prod2
global items
soup = BeautifulSoup(html, 'html.parser')
items = soup.findAll('td', class_='td')
pok = (items[55].get_text())
pok1 = float(pok)
prod = (items[56].get_text())
prod1 = float(prod)
def parse():
"""Проверяем, подключились ли мы к сайту"""
html = get_html(URL)
if html.status_code == 200:
get_content(html.text)
else:
print('Error')
parse()
# print(items)
a1 = (items[56].get_text())
a2 = (items[55].get_text())
a3 = (items[52].get_text())
a4 = (items[53].get_text())
a5 = (items[50].get_text())
a6 = (items[49].get_text())
a7 = (items[38].get_text())
a8 = (items[37].get_text())
a9 = (items[34].get_text())
a10 = (items[35].get_text())
a11 = (items[32].get_text())
a12 = (items[31].get_text())
a13 = (items[40].get_text())
a14 = (items[41].get_text())
a15 = (items[43].get_text())
a16 = (items[44].get_text())
a17 = (items[46].get_text())
a18 = (items[47].get_text())
a19 = (items[49].get_text())
a20 = (items[50].get_text())
# print(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)
a1=float(a1)
a2=float(a2)
a3=float(a3)
a4=float(a4)
a5=float(a5)
a6=float(a6)
a7=float(a7)
a8=float(a8)
a9=float(a9)
a10=float(a10)
a11=float(a11)
a12=float(a12)
a13=float(a13)
a14=float(a14)
a15=float(a15)
a16=float(a16)
a17=float(a17)
a18=float(a18)
a19=float(a19)
a20=float(a20)
k=0
MyApp().run()