@uvv99

Почему не собирается KIVY apk для android?

При сборке приложения, вроде всё проходит нормально. При установке на телефон, при запуске, появляется Loading... и пропадает. Почему не могу понять?!

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.core.window import Window
from kivy.clock import Clock
from requests import get, post


Window.size = (360, 480)
Window.clearcolor = (0, 0.17, 0.55, 1)


notice_list = []
try:
    with open('f.txt', 'r') as f:
        file = f.readlines()
        department = file[0].replace('\n', '')
        otk = file[1].replace('\n', '')
except:
    department = None
    otk = None

buttons = """
        Button:
            id: back
            text: 'ВОЗВРАЩЕНИЕ ЗАКАЗА НА ДОРАБОТКУ'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.server('back', False)
""" if otk == "otk" or otk == None else ''

Builder.load_string(f"""
<MenuScreen>:
    BoxLayout:
        orientation: 'vertical'
        padding: 5, 5
        spacing: 5

        Button:
            text: 'УВЕДОМЛЕНИЯ'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.clear()
            Image:
                source: 'bell-ring.png'
                id: bell
                opacity: 0
                size_hint: None, None
                size: 30, 30
                center_x: 330
                center_y: 450
        Button:
            text: 'ЗАКАЗЫ В РАБОТЕ'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.manager.current = 'foto'
        Button:
            text: 'СКАНИРОВАНИЕ QR'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.manager.current = 'scan'

<AllScreen>:
    BoxLayout:
        orientation: 'vertical'
        Button:
            text: 'KM'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.save('km')
        Button:
            text: 'KMД'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.save('kmd')
        Button:
            text: 'ТМЦ'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.save('tmc')
        Button:
            text: 'ЗАГОТОВКА'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.save('zagatovka')
        Button:
            text: 'СБОРКА'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.save('sborka')
        Button:
            text: 'СВАРКА'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.save('svarka')
        Button:
            text: 'УПАКОВКА'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.save('upakovka')

<All2Screen>:
    BoxLayout:
        orientation: 'vertical'
        Button:
            text: 'Производство'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.save('not_otk')
        Button:
            text: 'ОТК'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.save('otk')

<FotoScreen>:
    BoxLayout:
        orientation: 'vertical'
        Button:
            background_color: (0, 0.17, 0.55, 1)
            on_press: root.manager.current = 'menu'
            Image:
                source: 'demo_01.png'
                size: self.parent.size

<ScanScreen>:
    BoxLayout:
    #:import ZBarCam kivy_garden.zbarcam.ZBarCam
        id: box
        orientation: 'vertical'
        padding: 5, 5
        spacing: 5
        ZBarCam:
            id: qrcodecam
        Label:
            size_hint: None, None
            size: self.texture_size[0], 50
            id: qr_text
            text: ' '

        Button:
            text: 'РАБОТА НАЧАТА'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.server('start', True)
        Button:
            text: 'РАБОТА ПРИОСТАНОВЛЕНА/ВОЗОБНОВЛЕНА'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.server('stop', True)
        Button:
            text: 'ОБРАТНО В МЕНЮ'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.manager.current = 'menu'
        Button:
            text: 'ОТСКАНИРОВАТЬ'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.get_qr()
        Button:
            text: 'РАБОТА ЗАКОНЧЕНА'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.server('end', True)
""" + buttons)


class MenuScreen(Screen):
    def clear(self):
        global notice_list
        notice_list.clear()


class AllScreen(Screen):
    def save(self, select):
        global department
        department = select

        with open('f.txt', 'w') as f:
            f.write(f'{department}\n')

        App.get_running_app().root.current = 'select_otk'

class All2Screen(Screen):
    def save(self, select):
        global otk
        otk = select

        with open('f.txt', 'a') as f:
            f.write(f'{otk}\n')

        if otk != 'otk':
            scan_screen = App.get_running_app().root.get_screen('scan')

            scan_screen.ids['box'].remove_widget(scan_screen.ids['back'])

        App.get_running_app().root.current = 'menu'

class FotoScreen(Screen):
    pass

class ScanScreen(Screen):
    def server(self, command, check_otk):
        r = get(f'http://code-factory.site/api/give_csrf')
        csrf = r.text.split('=')[-1][1:-2]
        cookies = r.cookies.get_dict()

        add = ''
        if check_otk and otk == 'otk':
            add = '_otk'

        post(f'http://code-factory.site/api/{command}{add}/{department}',
             data = {'id': self.ids['qr_text'].text.split('\n')[0], 'csrfmiddlewaretoken': csrf},
             cookies = cookies)

        self.ids['qr_text'].text = ''

    def get_qr(self):
        qr = ''.join([symbol.data.decode('utf-8') for symbol in self.ids['qrcodecam'].symbols])

        self.ids['qr_text'].text = qr


def get_notice(_):
    for i in get(f'http://code-factory.site/api/notice/{department}').text.split(','):
        if i != '':
            notice_list.append(i)

    if len(notice_list) > 0:
        App.get_running_app().root.get_screen('menu').ids['bell'].opacity = 1
    else:
        App.get_running_app().root.get_screen('menu').ids['bell'].opacity = 0


class MainApp(App):
    def build(self):
        sm = ScreenManager()

        sm.add_widget(MenuScreen(name='menu'))
        sm.add_widget(ScanScreen(name='scan'))
        sm.add_widget(FotoScreen(name='foto'))
        sm.add_widget(AllScreen(name='all'))
        sm.add_widget(All2Screen(name='select_otk'))

        if department == None or department == 'None' or otk == None or otk == 'None':
            sm.current = 'all'
        else:
            sm.current = 'menu'

        return sm


if __name__=='__main__':
    Clock.schedule_interval(get_notice, 3)

    MainApp().run()
  • Вопрос задан
  • 329 просмотров
Решения вопроса 1
@YariKartoshe4ka
Логи предоставить не хотите?

adb logcat | grep python
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы