Задать вопрос
@Dmitriy_Semenov

Крашится Kivy приложение на Android. Что делать?

Написал код на Питоне с фрэймом Kivy

# main.py
import kivy
kivy.require('2.0.0')

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.uix.scrollview import ScrollView
from kivy.core.window import Window
from kivy.storage.jsonstore import JsonStore
from kivy.utils import platform
import os
import json
from kivy.uix.popup import Popup
from kivy.uix.gridlayout import GridLayout


Код по ссылке. main.py https://github.com/UltimateSDD/FitTrackPro

Скомпилировал через Билдозер

[app]

# Название приложения и пакета
title = FitTrackPro
package.name = fittrackpro
package.domain = org.fittrack

# Путь к исходникам и версия
source.dir = .
version = 1.0

# Требуемые зависимости
requirements = 
    python3==3.9.13,
    kivy==2.1.0,
    android,
    openssl,
    pyjnius,
    certifi

# Разрешения Android (для доступа к хранилищу и интернету)
android.permissions = 
    INTERNET,
    READ_EXTERNAL_STORAGE,
    WRITE_EXTERNAL_STORAGE

# Настройки ориентации и API
orientation = portrait
android.api = 33
android.minapi = 21
android.ndk = 25
android.sdk = 34

# Дополнительные настройки
android.arch = arm64-v8a
p4a.branch = master
android.mkdirs = 1

# Логирование и отладка
log_level = 2
android.logcat = 1

# Указываем главный файл
source.include_exts = py,png,jpg,kv,ttf,json,atlas


Лог не знаю как сделать, чтобы посмотреть в чём ошибка. Если кто может, буду благодарен.
  • Вопрос задан
  • 112 просмотров
Подписаться 1 Средний 5 комментариев
Пригласить эксперта
Ответы на вопрос 1
Lord_of_Rings
@Lord_of_Rings
Дунадан - северный странник. Злой, но очень добрый
1. В коде у вас kivy.require('2.0.0'), а в конфиге kivy==2.1.0. Вас это не смущает?
2. Удалите ваш конфиг, создайте новый через buildozer init и ничего не меняя запустите сборку. Потом попробуйте запустить.
3. Если предыдущие шаги не помогут, то вам надо осваивать adb и buildozer -v android debug deploy run logcat Гугль и доки вам в помощь

P. S.
spoiler
@Dmitriy_Semenov,
1. Вместо
if platform == 'android':
    storage_path = '/sdcard/fittrackpro'
else:
    storage_path = os.path.dirname(os.path.abspath(__file__))

Используйте
storage_path = App.get_running_app().user_data_dir
2. Удалите Window.size = (360, 640)
3. Вместо
if not os.path.exists(storage_path):
    os.makedirs(storage_path)

Используйте
if not os.path.exists(storage_path):
    os.makedirs(storage_path, exist_ok=True)
(или вообще уберите, и так должно работать)
4. После импортов добавьте
try:
    from android.permissions import request_permissions, Permission

    if platform == 'android':
        request_permissions([
        Permission.WRITE_EXTERNAL_STORAGE,
        Permission.READ_EXTERNAL_STORAGE,
        Permission.INTERNET
        ])
except: pass


Ну и конечно использовать print в графическом приложении - это глупость. Пользователь всё равно ничего не увидит
Ответ написан
Ваш ответ на вопрос

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

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