Closed purushottam858 closed 3 years ago
@purushottam858 Please edit your post: no need to attach the entire stacktrace (just Python output is enough), no need to attach the entire Bulldozer spec (just the items you use are enough).
@purushottam858 Issues about KivyMD version 0.104.1 will be closed. Because we do not support this version. Use the main branch of the KivyMD library.
I didnot understand . what do you mean by "main branch of the KivyMD library " , KivyMD version 0.104.1 is latest version , right ? @HeaTTheatR
@HeaTTheatR No. Latest version - 0.104.2.dev
Description of the Bug
app crashes on deploying on the android but works fine on ubuntu
I have created new virtual environment with python 3.9.5 and installed kivy 2.0.0 again but i dont know what is wrong with building apk . I am still getting this error .
05-19 00:23:51.977 16177 16365 I python : Traceback (most recent call last): 05-19 00:23:51.977 16177 16365 I python : File "/home/purushottam2/Desktop/myupdateproject/yyy/.buildozer/android/app/main.py", line 372, in
05-19 00:23:51.977 16177 16365 I python : File "/home/purushottam2/Desktop/myupdateproject/yyy/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/myapp/kivy/app.py", line 855, in run
05-19 00:23:51.977 16177 16365 I python : File "/home/purushottam2/Desktop/myupdateproject/yyy/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/myapp/kivy/base.py", line 504, in runTouchApp
05-19 00:23:51.978 16177 16365 I python : File "/home/purushottam2/Desktop/myupdateproject/yyy/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/myapp/kivy/core/window/window_sdl2.py", line 747, in mainloop
05-19 00:23:51.978 16177 16365 I python : File "/home/purushottam2/Desktop/myupdateproject/yyy/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/myapp/kivy/core/window/window_sdl2.py", line 479, in _mainloop
05-19 00:23:51.978 16177 16365 I python : File "/home/purushottam2/Desktop/myupdateproject/yyy/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/myapp/kivy/base.py", line 339, in idle
05-19 00:23:51.978 16177 16365 I python : File "/home/purushottam2/Desktop/myupdateproject/yyy/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/myapp/kivy/clock.py", line 591, in tick
05-19 00:23:51.979 16177 16365 I python : File "kivy/_clock.pyx", line 384, in kivy._clock.CyClockBase._process_events
05-19 00:23:51.979 16177 16365 I python : File "kivy/_clock.pyx", line 414, in kivy._clock.CyClockBase._process_events
05-19 00:23:51.979 16177 16365 I python : File "kivy/_clock.pyx", line 412, in kivy._clock.CyClockBase._process_events
05-19 00:23:51.979 16177 16365 I python : File "kivy/_clock.pyx", line 154, in kivy._clock.ClockEvent.tick
05-19 00:23:51.980 16177 16365 I python : File "kivy/_clock.pyx", line 86, in kivy._clock.ClockEvent.get_callback
05-19 00:23:51.980 16177 16365 I python : File "/home/purushottam2/Desktop/myupdateproject/yyy/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/myapp/kivy/weakmethod.py", line 56, in is_dead
05-19 00:23:51.980 16177 16365 I python : ReferenceError: weakly-referenced object no longer exists
05-19 00:23:51.980 16177 16365 I python : Python for android ended.
============================================ python --version gives
Python 3.9.5
=============================================
pip list gives
Package Version
appdirs 1.4.4 buildozer 1.2.0 certifi 2020.12.5 chardet 4.0.0 colorama 0.4.4 Cython 0.29.23 distlib 0.3.1 docutils 0.17.1 ffpyplayer 4.3.2 filelock 3.0.12 idna 2.10 importlib-metadata 4.0.1 Jinja2 3.0.0 Kivy 2.0.0 Kivy-examples 2.0.0 Kivy-Garden 0.1.4 kivymd 0.104.1 MarkupSafe 2.0.1 pep517 0.6.0 pexpect 4.8.0 Pillow 8.2.0 pip 21.1.1 plyer 2.0.0 ptyprocess 0.7.0 Pygments 2.9.0 pytoml 0.1.21 requests 2.25.1 setuptools 56.0.0 sh 1.14.2 six 1.16.0 toml 0.10.2 urllib3 1.26.4 virtualenv 20.4.6 zipp 3.4.1
================================= pip freeze gives
appdirs==1.4.4 buildozer==1.2.0 certifi==2020.12.5 chardet==4.0.0 colorama==0.4.4 Cython==0.29.23 distlib==0.3.1 docutils==0.17.1 ffpyplayer==4.3.2 filelock==3.0.12 idna==2.10 importlib-metadata==4.0.1 Jinja2==3.0.0 Kivy==2.0.0 Kivy-examples==2.0.0 Kivy-Garden==0.1.4 kivymd==0.104.1 MarkupSafe==2.0.1 pep517==0.6.0 pexpect==4.8.0 Pillow==8.2.0 plyer==2.0.0 ptyprocess==0.7.0 Pygments==2.9.0 pytoml==0.1.21 requests==2.25.1 sh==1.14.2 six==1.16.0 toml==0.10.2 urllib3==1.26.4 virtualenv==20.4.6 zipp==3.4.1
==========================================buildozer file =============================
[app]
(str) Title of your application
title = kApplication
(str) Package name
package.name = myapp
(str) Package domain (needed for android/ios packaging)
package.domain = org.test
(str) Source code where the main.py live
source.dir = .
(list) Source files to include (let empty to include all the files)
source.include_exts =
(list) List of inclusions using pattern matching
source.include_patterns = *
(list) Source files to exclude (let empty to not exclude anything)
source.exclude_exts = spec
(list) List of directory to exclude (let empty to not exclude anything)
source.exclude_dirs = tests, bin
(list) List of exclusions using pattern matching
source.exclude_patterns = license,images//.jpg
(str) Application versioning (method 1)
version = 0.1
(str) Application versioning (method 2)
version.regex = version = '"['"]
version.filename = %(source.dir)s/main.py
(list) Application requirements
comma separated e.g. requirements = sqlite3,kivy
requirements = python3 ,Kivy==2.0.0, kivymd==0.104.1, sdl2_ttf==2.0.15 , plyer, android ,pil,jnius
(str) Custom source folders for requirements
Sets custom source for any requirements with recipes
requirements.source.kivy = ../../kivy
(list) Garden requirements
garden_requirements = xcamera
(str) Presplash of the application
presplash.filename = %(source.dir)s/data/presplash.png
(str) Icon of the application
icon.filename = %(source.dir)s/data/icon.png
(str) Supported orientation (one of landscape, sensorLandscape, portrait or all)
orientation = all
(list) List of service to declare
services = NAME:ENTRYPOINT_TO_PY,NAME2:ENTRYPOINT2_TO_PY
#
OSX Specific
#
#
author = © Copyright Info
change the major version of python used by the app
osx.python_version = 3
Kivy version to use
osx.kivy_version = 1.9.1
#
Android specific
#
(bool) Indicate if the application should be fullscreen or not
fullscreen = 0
(string) Presplash background color (for new android toolchain)
Supported formats are: #RRGGBB #AARRGGBB or one of the following names:
red, blue, green, black, white, gray, cyan, magenta, yellow, lightgray,
darkgray, grey, lightgrey, darkgrey, aqua, fuchsia, lime, maroon, navy,
olive, purple, silver, teal.
android.presplash_color = #FFFFFF
(list) Permissions
android.permissions = INTERNET, WRITE_EXTERNAL_STORAGE ,READ_EXTERNAL_STORAGE , ACCESS_NETWORK_STATE
(int) Target Android API, should be as high as possible.
android.api = 27
android.api = 27
(int) Minimum API your APK will support.
android.minapi = 21
android.minapi = 21
(int) Android SDK version to use
android.sdk = 20
android.sdk = 24
(str) Android NDK version to use
android.ndk = 19b
android.ndk = 19b
(int) Android NDK API to use. This is the minimum API your app will support, it should usually match android.minapi.
android.ndk_api = 21
(bool) Use --private data storage (True) or --dir public storage (False)
android.private_storage = True
(str) Android NDK directory (if empty, it will be automatically downloaded.)
android.ndk_path =
(str) Android SDK directory (if empty, it will be automatically downloaded.)
android.sdk_path =
(str) ANT directory (if empty, it will be automatically downloaded.)
android.ant_path =
(bool) If True, then skip trying to update the Android sdk
This can be useful to avoid excess Internet downloads or save time
when an update is due and you just want to test/build your package
android.skip_update = False
(bool) If True, then automatically accept SDK license
agreements. This is intended for automation only. If set to False,
the default, you will be shown the license when first running
buildozer.
android.accept_sdk_license = False
(str) Android entry point, default is ok for Kivy-based app
android.entrypoint = org.renpy.android.PythonActivity
(str) Android app theme, default is ok for Kivy-based app
android.apptheme = "@android:style/Theme.NoTitleBar"
(list) Pattern to whitelist for the whole project
android.whitelist =
(str) Path to a custom whitelist file
android.whitelist_src =
(str) Path to a custom blacklist file
android.blacklist_src =
(list) List of Java .jar files to add to the libs so that pyjnius can access
their classes. Don't add jars that you do not need, since extra jars can slow
down the build process. Allows wildcards matching, for example:
OUYA-ODK/libs/*.jar
android.add_jars = foo.jar,bar.jar,path/to/more/*.jar
(list) List of Java files to add to the android project (can be java or a
directory containing the files)
android.add_src =
(list) Android AAR archives to add (currently works only with sdl2_gradle
bootstrap)
android.add_aars = support-compat-28.0.0.aar
(list) Gradle dependencies to add (currently works only with sdl2_gradle
bootstrap)
android.gradle_dependencies =
android.gradle_dependencies = 'com.google.firebase:firebase-ads:10.2.0'
(list) add java compile options
this can for example be necessary when importing certain java libraries using the 'android.gradle_dependencies' option
see https://developer.android.com/studio/write/java8-support for further information
android.add_compile_options = "sourceCompatibility = 1.8", "targetCompatibility = 1.8"
(list) Gradle repositories to add {can be necessary for some android.gradle_dependencies}
please enclose in double quotes
e.g. android.gradle_repositories = "maven { url 'https://kotlin.bintray.com/ktor' }"
android.add_gradle_repositories =
(list) packaging options to add
see https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.PackagingOptions.html
can be necessary to solve conflicts in gradle_dependencies
please enclose in double quotes
e.g. android.add_packaging_options = "exclude 'META-INF/common.kotlin_module'", "exclude 'META-INF/*.kotlin_module'"
android.add_gradle_repositories =
(list) Java classes to add as activities to the manifest.
android.add_activities = com.example.ExampleActivity
(str) OUYA Console category. Should be one of GAME or APP
If you leave this blank, OUYA support will not be enabled
android.ouya.category = GAME
(str) Filename of OUYA Console icon. It must be a 732x412 png image.
android.ouya.icon.filename = %(source.dir)s/data/ouya_icon.png
(str) XML file to include as an intent filters in tag
android.manifest.intent_filters =
(str) launchMode to set for the main activity
android.manifest.launch_mode = standard
(list) Android additional libraries to copy into libs/armeabi
android.add_libs_armeabi = libs/android/*.so
android.add_libs_armeabi_v7a = libs/android-v7/*.so
android.add_libs_arm64_v8a = libs/android-v8/*.so
android.add_libs_x86 = libs/android-x86/*.so
android.add_libs_mips = libs/android-mips/*.so
(bool) Indicate whether the screen should stay on
Don't forget to add the WAKE_LOCK permission if you set this to True
android.wakelock = False
(list) Android application meta-data to set (key=value format)
android.meta_data =
android.meta_data = com.google.android.gms.ads.APPLICATION_ID=ca-app-pub-3940256099942544~3347511713
(list) Android library project to add (will be added in the
project.properties automatically.)
android.library_references =
(list) Android shared libraries which will be added to AndroidManifest.xml using tag
android.uses_library =
(str) Android logcat filters to use
android.logcat_filters = *:S python:D
(bool) Copy library instead of making a libpymodules.so
android.copy_libs = 1
(str) The Android arch to build for, choices: armeabi-v7a, arm64-v8a, x86, x86_64
android.arch = armeabi-v7a
(int) overrides automatic versionCode computation (used in build.gradle)
this is not the same as app version and should only be edited if you know what you're doing
android.numeric_version = 1
#
Python for android (p4a) specific
#
(str) python-for-android fork to use, defaults to upstream (kivy)
p4a.fork =
(str) python-for-android branch to use, defaults to master
p4a.branch = develop
p4a.branch = master
(str) python-for-android git clone directory (if empty, it will be automatically cloned from github)
p4a.source_dir =
(str) The directory in which python-for-android should look for your own build recipes (if any)
p4a.local_recipes =
(str) Filename to the hook for p4a
p4a.hook =
(str) Bootstrap to use for android builds
p4a.bootstrap = sdl2
(int) port number to specify an explicit --port= p4a argument (eg for bootstrap flask)
p4a.port =
#
iOS specific
#
(str) Path to a custom kivy-ios folder
ios.kivy_ios_dir = ../kivy-ios
Alternately, specify the URL and branch of a git checkout:
ios.kivy_ios_url = https://github.com/kivy/kivy-ios ios.kivy_ios_branch = master
Another platform dependency: ios-deploy
Uncomment to use a custom checkout
ios.ios_deploy_dir = ../ios_deploy
Or specify URL and branch
ios.ios_deploy_url = https://github.com/phonegap/ios-deploy ios.ios_deploy_branch = 1.7.0
(str) Name of the certificate to use for signing the debug version
Get a list of available identities: buildozer ios list_identities
ios.codesign.debug = "iPhone Developer: ()"
(str) Name of the certificate to use for signing the release version
ios.codesign.release = %(ios.codesign.debug)s
[buildozer]
(int) Log level (0 = error only, 1 = info, 2 = debug (with command output))
log_level = 2
(int) Display warning if buildozer is run as root (0 = False, 1 = True)
warn_on_root = 1
(str) Path to build artifact storage, absolute or relative to spec file
build_dir = ./.buildozer
(str) Path to build output (i.e. .apk, .ipa) storage
bin_dir = ./bin
-----------------------------------------------------------------------------
List as sections
#
You can define all the "list" as [section:key].
Each line will be considered as a option to the list.
Let's take [app] / source.exclude_patterns.
Instead of doing:
#
[app]
source.exclude_patterns = license,data/audio/.wav,data/images/original/
#
This can be translated into:
#
[app:source.exclude_patterns]
license
data/audio/*.wav
data/images/original/*
#
-----------------------------------------------------------------------------
Profiles
#
You can extend section / key with a profile
For example, you want to deploy a demo version of your application without
HD content. You could first change the title to add "(demo)" in the name
and extend the excluded directories to remove the HD content.
#
[app@demo]
title = My Application (demo)
#
[app:source.exclude_patterns@demo]
images/hd/*
#
Then, invoke the command line with the "demo" profile:
#
buildozer --profile demo android debug
Code and Logs
call_back function(attached to upload function in hello screen) will change the screen only if it is ready to display (using a variable to decide this ), if not it will call other fun to take permissions of android storage and again that fun(take permission function ) will call other fun to load images address to recycleview data , then to change screen , set the variable to ready .
This is working fine on ubuntu but app is crashing on android device on starting the app with an error below.
I am using kivy 2 and environment details are in above comment .
python3.9 --version gives Python 3.9.5 on terminal .
what should i update ??
05-16 17:57:46.187 2320 2486 D HBMFeatureControl: brightness=16 05-16 17:57:46.190 763 763 D qdlights: entry write_int path = /sys/class/leds/lcd-backlight/brightness, value=16 05-16 17:57:46.191 763 763 E libc : Access denied finding property "persist.sys.display_debug" 05-16 17:57:46.239 28115 28307 I python : [INFO ] [Image ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored) 05-16 17:57:46.271 28115 28307 I python : [INFO ] [Text ] Provider: sdl2 05-16 17:57:46.449 28115 28191 I org.test.myapp: ProcessProfilingInfo new_methods=133 is saved saved_to_disk=1 resolve_classes_delay=8000 05-16 17:57:46.559 28115 28307 I python : [INFO ] [Window ] Provider: sdl2 05-16 17:57:46.579 28115 28307 E libEGL : validate_display:92 error 3008 (EGL_BAD_DISPLAY) 05-16 17:57:46.580 28115 28307 V SDL : setOrientation() orientation=-1 width=800 height=600 resizable=true hint= 05-16 17:57:46.584 28115 28307 I python : [INFO ] [GL ] Using the "OpenGL ES 2" graphics system 05-16 17:57:46.585 28115 28307 I python : [INFO ] [GL ] Backend used
05-16 17:57:46.586 28115 28307 I python : [INFO ] [GL ] OpenGL version <b'OpenGL ES 3.2 V@331.0 (GIT@c455b9b, Ib7912a5d4e) (Date:09/16/19)'>
05-16 17:57:46.586 28115 28307 I python : [INFO ] [GL ] OpenGL vendor <b'Qualcomm'>
05-16 17:57:46.586 28115 28307 I python : [INFO ] [GL ] OpenGL renderer <b'Adreno (TM) 512'>
05-16 17:57:46.586 28115 28307 I python : [INFO ] [GL ] OpenGL parsed version: 3, 2
05-16 17:57:46.586 28115 28307 I python : [INFO ] [GL ] Texture max size <16384>
05-16 17:57:46.586 28115 28307 I python : [INFO ] [GL ] Texture max units <16>
05-16 17:57:46.603 2320 2486 D HBMFeatureControl: brightness=50
05-16 17:57:46.605 763 763 D qdlights: entry write_int path = /sys/class/leds/lcd-backlight/brightness, value=50
05-16 17:57:46.606 763 763 E libc : Access denied finding property "persist.sys.display_debug"
05-16 17:57:46.620 2320 2486 D HBMFeatureControl: brightness=132
05-16 17:57:46.622 763 763 D qdlights: entry write_int path = /sys/class/leds/lcd-backlight/brightness, value=132
05-16 17:57:46.622 763 763 E libc : Access denied finding property "persist.sys.display_debug"
05-16 17:57:46.628 28115 28307 I python : [INFO ] [Window ] auto add sdl2 input provider
05-16 17:57:46.630 28115 28307 I python : [INFO ] [Window ] virtual keyboard not allowed, single mode, not docked
05-16 17:57:46.636 2320 2486 D HBMFeatureControl: brightness=50
05-16 17:57:46.638 763 763 D qdlights: entry write_int path = /sys/class/leds/lcd-backlight/brightness, value=50
05-16 17:57:46.638 763 763 E libc : Access denied finding property "persist.sys.display_debug"
05-16 17:57:46.652 2320 2486 D HBMFeatureControl: brightness=16
05-16 17:57:46.654 763 763 D qdlights: entry write_int path = /sys/class/leds/lcd-backlight/brightness, value=16
05-16 17:57:46.654 763 763 E libc : Access denied finding property "persist.sys.display_debug"
05-16 17:57:46.828 28115 28307 I python : [INFO ] [Video ] Provider: null(['video_ffmpeg', 'video_ffpyplayer'] ignored)
05-16 17:57:46.848 28115 28307 I python : created=====================================================
05-16 17:57:46.885 28115 28307 I python : [INFO ] [GL ] NPOT texture support is available
05-16 17:57:47.072 28195 28212 I ui.cloudservic: ProcessProfilingInfo new_methods=0 is saved saved_to_disk=0 resolve_classes_delay=8000
05-16 17:57:47.189 1092 2410 D installd: Found valid user 999
05-16 17:57:47.337 28115 28307 I python : started app =================================
05-16 17:57:47.337 28115 28307 I python : [WARNING] [Base ] Unknown provider
05-16 17:57:47.338 28115 28307 I python : [INFO ] [Base ] Start application main loop
05-16 17:57:47.392 28115 28307 I python : [INFO ] [Base ] Leaving application in progress...
05-16 17:57:47.392 28115 28307 I python : Traceback (most recent call last): 05-16 17:57:47.392 28115 28307 I python : File "/home/purushottam2/Desktop/project/tttt/yyy/.buildozer/android/app/main.py", line 373, in
05-16 17:57:47.395 28115 28307 I python : File "/home/purushottam2/Desktop/project/tttt/yyy/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/myapp/kivy/app.py", line 855, in run
05-16 17:57:47.395 28115 28307 I python : File "/home/purushottam2/Desktop/project/tttt/yyy/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/myapp/kivy/base.py", line 504, in runTouchApp
05-16 17:57:47.395 28115 28307 I python : File "/home/purushottam2/Desktop/project/tttt/yyy/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/myapp/kivy/core/window/window_sdl2.py", line 747, in mainloop
05-16 17:57:47.395 28115 28307 I python : File "/home/purushottam2/Desktop/project/tttt/yyy/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/myapp/kivy/core/window/window_sdl2.py", line 479, in _mainloop
05-16 17:57:47.396 28115 28307 I python : File "/home/purushottam2/Desktop/project/tttt/yyy/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/myapp/kivy/base.py", line 339, in idle
05-16 17:57:47.396 28115 28307 I python : File "/home/purushottam2/Desktop/project/tttt/yyy/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/myapp/kivy/clock.py", line 591, in tick
05-16 17:57:47.396 28115 28307 I python : File "kivy/_clock.pyx", line 384, in kivy._clock.CyClockBase._process_events
05-16 17:57:47.397 28115 28307 I python : File "kivy/_clock.pyx", line 414, in kivy._clock.CyClockBase._process_events
05-16 17:57:47.397 28115 28307 I python : File "kivy/_clock.pyx", line 412, in kivy._clock.CyClockBase._process_events
05-16 17:57:47.397 28115 28307 I python : File "kivy/_clock.pyx", line 154, in kivy._clock.ClockEvent.tick
05-16 17:57:47.397 28115 28307 I python : File "kivy/_clock.pyx", line 86, in kivy._clock.ClockEvent.get_callback
05-16 17:57:47.398 28115 28307 I python : File "/home/purushottam2/Desktop/project/tttt/yyy/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/myapp/kivy/weakmethod.py", line 56, in is_dead
05-16 17:57:47.398 28115 28307 I python : ReferenceError: weakly-referenced object no longer exists
05-16 17:57:47.398 28115 28307 I python : Python for android ended.
05-16 17:57:47.416 1092 2410 D installd: Found valid user 999
===============================================================code ================================================
from kivymd.app import MDApp from kivy.uix.screenmanager import Screen,ScreenManager from kivy.lang import Builder from kivy.uix.floatlayout import FloatLayout from kivymd.uix.swiper import MDSwiperItem from kivymd.utils.fitimage import FitImage from kivymd.uix.boxlayout import MDBoxLayout from kivy.uix.scrollview import ScrollView from kivymd.uix.list import MDList , ThreeLineAvatarListItem from kivymd.uix.label import MDLabel from kivymd.uix.list import OneLineListItem from kivymd.uix.imagelist import SmartTile from kivy.uix.modalview import ModalView from kivy.properties import StringProperty, NumericProperty from kivy.uix.behaviors import ButtonBehavior from kivy.uix.image import Image from kivymd.uix.list import IRightBodyTouch from kivy.metrics import sp, dp from kivy.uix.stacklayout import StackLayout from kivymd.uix import MDAdaptiveWidget from kivymd.uix.button import MDFlatButton , MDIconButton from kivy.uix.carousel import Carousel from kivymd.uix.list import ImageLeftWidget from kivymd.uix.boxlayout import MDBoxLayout from kivymd.uix.carousel import MDCarousel from kivy.uix.relativelayout import RelativeLayout from kivy.properties import ( AliasProperty, BooleanProperty, BoundedNumericProperty, ListProperty, NumericProperty, ObjectProperty, OptionProperty, StringProperty, )
from kivy.animation import Animation from kivy.lang import Builder from kivy.utils import get_color_from_hex from kivymd.app import MDApp from kivymd.utils.fitimage import FitImage from kivy.utils import get_color_from_hex from kivymd.app import MDApp from kivymd.utils.fitimage import FitImage from kivymd.uix.tab import MDTabsBase from kivy.uix.video import Video from kivy.core.window import Window
Window.size = (420,860)
from homemapview import HomeMapView
from searchpopupmenu import SearchPopupMenu
from homegpshelper import HomeGpsHelper
from os import path import os import shutil from shutil import copyfile from sys import exit import glob from plyer import storagepath from kivy.uix.recycleview import RecycleView from kivy.uix.recycleview.views import RecycleDataViewBehavior
from threading import Thread
from kivy.utils import platform
from kivy.clock import Clock from functools import partial
Builder String
helper_string = '''
: import mtx kivy.metrics
: import Window kivy.core.window
ScreenManager: