problem with creating an apk with kivy

228 views
Skip to first unread message

Alon Treitel

unread,
Jan 23, 2023, 9:01:28 AM1/23/23
to Kivy users support
i wrote a code in python that uses all of these modules: kivy, nba_api,datetime,python-dateutil i was trying to add all of these to the requirements section in the spec file to create the apk but there is a problem with the nba _pi mudle i think it's not supported by python-for-android is there a way to fix this issue/make this work? (please help it took me a long time writing this code and it will be very frustrating if it was all a waste of time).

Pete Kovac

unread,
Jan 23, 2023, 9:38:36 AM1/23/23
to Kivy users support
Buildozer can be daunting at times - i still haven't figured out how to compile firebase for python as I always get an error that says module Google not found but its already there. I say that to ask what errors are you getting on the compile? If you can share that then we can see what it's complaining about. I took a look at the modules for nba_api and it just looks like API calls to a back end to grab data. 

Alon Treitel

unread,
Jan 23, 2023, 10:25:03 AM1/23/23
to Kivy users support
im not getting any errors just when i open the apk it crashes this is the code:
from nba_api.live.nba.endpoints import scoreboard
from datetime import datetime, timezone, timedelta
from dateutil import parser
from kivy.app import App
from kivy.core.audio import SoundLoader
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.textinput import TextInput
from kivy.clock import Clock
from kivy.config import Config
Config.set('graphics', 'width', 'auto')
Config.set('graphics', 'height', 'auto')
def how_much_time(time1, time2):
    # Parse the input times as datetime objects
    time1 = datetime.strptime(time1, "%H:%M")
    time2 = datetime.strptime(time2, "%H:%M")

    # Handle the case where time2 is on the next day
    if time2 < time1:
        time2 += timedelta(days=1)

    # Calculate the time difference and return it
    return time2 - time1


def remove_last_value(dictionary):
    # Create a new dictionary to hold the modified values
    new_dict = {}

    # Iterate over the key-value pairs in the dictionary
    for key, value in dictionary.items():
        # Create a new list with the last value removed from the original list
        new_list = value[:-1]
        # Add the modified list to the new dictionary
        new_dict[key] = new_list

    # Return the new dictionary
    return new_dict


def print_table(data):
    data = remove_last_value(data)
    text = ""
    headers = ["ID", "TEAMS", "TIME"]
    # Get the length of the longest list in the values of the dictionary
    max_len = max(data) + 1
    # Print the headers
    header_str = ' | '.join(headers)
    text += header_str + "\n"
    text += ('--' * len(header_str))
    # Print the rows of the table
    text += "\n"
    for j in range(int(list(data.keys())[0]), int(max_len)):
        row = []
        for i in range(len(headers)):
            if i < len(data[j]):
                # Right-align values for numeric columns and left-align for other columns
                if headers[i].isdigit():
                    text += (f" {data[j][i]:>{len(headers[i])}}")
                else:
                    text += (f" {data[j][i]:<{len(headers[i])}}")
            else:
                # Pad empty cells with spaces to align with headers
                text += (' ' * len(headers[i]))
        text += (' | '.join(row))
        text += "\n"
    return text


def get_games(half):
    i = 0
    games_today = {}
    board = scoreboard.ScoreBoard()
    games = board.games.get_dict()
    end = len(games)
    for game in games:
        if half == "seceond":
            if i > int(len(games) * 0.5):
                game_time = str(parser.parse(game["gameTimeUTC"]).replace(tzinfo=timezone.utc).astimezone())[11:16]
                games_today[i] = [i, (game['awayTeam']['teamName'] + " vs " + game['homeTeam']['teamName']), game_time,
                                  game['gameId']]
        else:
            game_time = str(parser.parse(game["gameTimeUTC"]).replace(tzinfo=timezone.utc).astimezone())[11:16]
            games_today[i] = [i, (game['awayTeam']['teamName'] + " vs " + game['homeTeam']['teamName']), game_time,
                              game['gameId']]
            if i > (len(games)) * 0.5 - 1 and half == "first":
                break
        i += 1
    if half == "first" or half == "seceond":
        return print_table(games_today)
    else:
        return games_today


def new_dict(my_dict, choice):
    print_table(my_dict)
    # Get a list of the keys in the dictionary
    keys = list(my_dict.keys())
    # Get a string of index positions separated by commas from the user
    indices_string = choice
    # Split the string into a list of individual index positions
    index_list = indices_string.split(",")
    # Create a new dictionary with the keys and values from the specified index positions
    new_dict = {keys[int(i)]: my_dict[keys[int(i)]] for i in index_list}
    return new_dict


class MyApp(App):
    def build(self):
        self.time = 0
        # Create a layout to hold the widgets
        self.layout = BoxLayout(orientation='vertical')

        """"# Create a label to display the instructions
        instructions_label = Label(text=get_games(),font_size='10sp')
        layout.add_widget(instructions_label)"""
        self.label_layout = BoxLayout(orientation='horizontal')

        # Create two labels with different text
        self.label1 = Label(text=get_games("first"), font_size='7sp')
        self.label2 = Label(text=get_games("seceond"), font_size='8sp')
        self.label3 = Label(text="\n\n\n\n\n\n\n\n\n\nPlease enter the game/s I'd/s\n with a comma separator.",
                            font_size='15sp')
        self.label_layout.add_widget(self.label1)
        self.label_layout.add_widget(self.label3)
        self.label_layout.add_widget(self.label2)

        # Add the horizontal layout to the main layout
        self.layout.add_widget(self.label_layout)

        # Create text input widgets for the age, first name, and last name
        self.games_input = TextInput(text="", size_hint=(3, 0.2))
        self.max_time_input = TextInput(text="", size_hint=(3, 0.2))
        self.layout.add_widget(self.games_input)
        self.layout.add_widget(self.max_time_input)
        # Create a button to submit the form
        self.submit_button = Button(text="Submit", on_release=self.first_submit, size_hint=(0.5, 0.3),
                                    pos_hint={'x': 0.25, 'y': 0.3})
        self.layout.add_widget(self.submit_button)

        # Create a label to display the goodbye message
        self.chosen_games_label = Label(text="")
        self.layout.add_widget(self.chosen_games_label)

        return self.layout

    def first_submit(self, button):
        if self.time == 0:
            # Get the age, first name, and last name from the text input widgets
            self.chosen_games = self.games_input.text
            # Display the goodbye message
            self.chosen_games_label.text = str(new_dict(get_games("ere"), self.chosen_games))
            self.label1.text = ""
            self.label2.text = ""
            self.label3.text = "Please enter the point difference(in first area).\n And the time left in clock(in second area)."
            self.games_input.text = ""
        else:
            self.seceond_submit()
        self.time += 1

    def seceond_submit(self):
        if self.time == 1:
            self.layout.remove_widget(self.submit_button)
            self.layout.remove_widget(self.games_input)
            self.layout.remove_widget(self.max_time_input)
            self.wait_to_the_games(new_dict(get_games("ere"), self.chosen_games))

    def wait_to_the_games(self, games_today):
        self.games_today = games_today
        self.label3.text = "wait for the games to began"
        this_hour = str(datetime.now())[11:16]
        dict_keys = list(games_today.keys())
        v = games_today[dict_keys[0]][2]
        is_time_right = how_much_time(this_hour, games_today[dict_keys[0]][2])
        print(is_time_right)
        is_time_right = str(is_time_right).split(":")
        is_time_right = int(is_time_right[0]) * 60 + int(is_time_right[1])
        if is_time_right > 720:
            Clock.schedule_once(self.game, 1)
        else:
            Clock.schedule_once(self.game, int(60 * is_time_right))

    def game(self, some):
        board = scoreboard.ScoreBoard()
        games = board.get_dict()
        text = ""
        print("ScoreBoardDate: " + board.score_board_date)
        max_score = int(self.games_input.text)
        max_time = int(self.max_time_input.text)
        games_wanted = self.games_today
        for i in range(len(games["scoreboard"]["games"])):
            if games["scoreboard"]["games"][i]["gameStatusText"][1:2].isnumeric() and games["scoreboard"]["games"][i][
                                                                                          "gameStatusText"][
                                                                                      6:7].isnumeric():
                for ii in range(len(list(games_wanted.values()))):
                    if games["scoreboard"]["games"][i]["gameId"] == list(games_wanted.values())[ii][3]:
                        game_time = int(games["scoreboard"]["games"][i]["gameStatusText"][1:2]) * 12 - 12 + int(
                            games["scoreboard"]["games"][i]["gameStatusText"][3:5])
                        score1 = int(games["scoreboard"]["games"][i]["homeTeam"]["score"])
                        score2 = int(games["scoreboard"]["games"][i]["awayTeam"]["score"])
                        text += str(games["scoreboard"]["games"][i]["gameStatusText"]) + "\n"
                        text += str(str(games["scoreboard"]["games"][i]["homeTeam"]["teamName"]) + "-" + str(
                            score1) + ":" + str(score2) + "-" + str(
                            games["scoreboard"]["games"][i]["awayTeam"]["teamName"]))
                        is_score_good2 = score1 - score2 <= max_score and score1 - score2 >= 0
                        is_score_good = score2 - score1 <= max_score and score2 - score1 >= 0
                        if list(games_wanted.values())[ii][0] != 100 and (is_score_good or is_score_good2) and (
                                max_time + game_time) > 48:
                            list(games_wanted.values())[ii][0] = 100
                            sound = SoundLoader.load('ffd.mp3')
                            if sound:
                                sound.play()

        self.label3.text = text
        Clock.schedule_once(self.game, 10)


if __name__ == "__main__":
    MyApp().run()


and this is the spec file: 

[app]

# (str) Title of your application
title = nbaa2

# (str) Package name
package.name = nbaa2

# (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 = py,png,jpg,kv,atlas

# (list) List of inclusions using pattern matching
#source.include_patterns = assets/*,images/*.png

# (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, venv

# (list) List of exclusions using pattern matching
# Do not prefix with './'
#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==3.8.2,kivy,python-dateutil,nba_api,pillow

# (str) Custom source folders for requirements
# Sets custom source for any requirements with recipes
# requirements.source.kivy = ../../kivy

# (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 = portrait

# (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 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

# (string) Presplash animation using Lottie format.
# see https://lottiefiles.com/ for examples and https://airbnb.design/lottie/
# for general documentation.
# Lottie files can be created using various tools, like Adobe After Effect or Synfig.
#android.presplash_lottie = "path/to/lottie/file.json"

# (str) Adaptive icon of the application (used if Android API level is 26+ at runtime)
#icon.adaptive_foreground.filename = %(source.dir)s/data/icon_fg.png
#icon.adaptive_background.filename = %(source.dir)s/data/icon_bg.png

# (list) Permissions
#android.permissions = INTERNET

# (list) features (adds uses-feature -tags to manifest)
#android.features = android.hardware.usb.host

# (int) Target Android API, should be as high as possible.
#android.api = 27

# (int) Minimum API your APK / AAB will support.
#android.minapi = 21

# (int) Android SDK version to use
#android.sdk = 20

# (str) Android NDK version to use
#android.ndk = 23b

# (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.kivy.android.PythonActivity

# (str) Full name including package path of the Java class that implements Android Activity
# use that parameter together with android.entrypoint to set custom Java class instead of PythonActivity
#android.activity_class_name = org.kivy.android.PythonActivity

# (str) Extra xml to write directly inside the <manifest> element of AndroidManifest.xml
# use that parameter to provide a filename from where to load your custom XML code
#android.extra_manifest_xml = ./src/android/extra_manifest.xml

# (str) Extra xml to write directly inside the <manifest><application> tag of AndroidManifest.xml
# use that parameter to provide a filename from where to load your custom XML arguments:
#android.extra_manifest_application_arguments = ./src/android/extra_manifest_application_arguments.xml

# (str) Full name including package path of the Java class that implements Python Service
# use that parameter to set custom Java class instead of PythonService
#android.service_class_name = org.kivy.android.PythonService

# (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
#android.add_aars =

# (list) Put these files or directories in the apk assets directory.
# Either form may be used, and assets need not be in 'source.include_exts'.
# 1) android.add_assets = source_asset_relative_path
# 2) android.add_assets = source_asset_path:destination_asset_relative_path
#android.add_assets =

# (list) Gradle dependencies to add
#android.gradle_dependencies =

# (bool) Enable AndroidX support. Enable when 'android.gradle_dependencies'
# contains an 'androidx' package, or any package from Kotlin source.
# android.enable_androidx requires android.api >= 28
#android.enable_androidx = False

# (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_packaging_options =

# (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 <activity> 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 =

# (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 <uses-library> tag
#android.uses_library =

# (str) Android logcat filters to use
#android.logcat_filters = *:S python:D

# (bool) Android logcat only display log for activity's pid
#android.logcat_pid_only = False

# (str) Android additional adb arguments
#android.adb_args = -H host.docker.internal

# (bool) Copy library instead of making a libpymodules.so
#android.copy_libs = 1

# (list) The Android archs to build for, choices: armeabi-v7a, arm64-v8a, x86, x86_64
# In past, was `android.arch` as we weren't supporting builds for multiple archs at the same time.
android.archs = arm64-v8a, 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

# (bool) enables Android auto backup feature (Android API >=23)
android.allow_backup = True

# (str) XML file for custom backup rules (see official auto backup documentation)
# android.backup_rules =

# (str) If you need to insert variables into your AndroidManifest.xml file,
# you can do so with the manifestPlaceholders property.
# This property takes a map of key-value pairs. (via a string)
# Usage example : android.manifest_placeholders = [myCustomUrl:\"org.kivy.customurl\"]
# android.manifest_placeholders = [:]

# (bool) disables the compilation of py to pyc/pyo files when packaging
# android.no-compile-pyo = True

# (str) The format used to package the app for release mode (aab or apk or aar).
# android.release_artifact = aab

# (str) The format used to package the app for debug mode (apk or aar).
# android.debug_artifact = apk

#
# Python for android (p4a) specific
#

# (str) python-for-android URL to use for checkout
#p4a.url =

# (str) python-for-android fork to use in case if p4a.url is not specified, defaults to upstream (kivy)
#p4a.fork = kivy

# (str) python-for-android branch to use, defaults to master
#p4a.branch = master

# (str) python-for-android specific commit to use, defaults to HEAD, must be within p4a.branch
#p4a.commit = HEAD

# (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 =

# Control passing the --use-setup-py vs --ignore-setup-py to p4a
# "in the future" --use-setup-py is going to be the default behaviour in p4a, right now it is not
# Setting this to false will pass --ignore-setup-py, true will pass --use-setup-py
# NOTE: this is general setuptools integration, having pyproject.toml is enough, no need to generate
# setup.py if you're using Poetry, but you need to add "toml" to source.include_exts.
#p4a.setup_py = false

# (str) extra command line arguments to pass when invoking pythonforandroid.toolchain
#p4a.extra_args =


#
# 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.10.0

# (bool) Whether or not to sign the code
ios.codesign.allowed = false

# (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: <lastname> <firstname> (<hexstring>)"

# (str) The development team to use for signing the debug version
#ios.codesign.development_team.debug = <hexstring>

# (str) Name of the certificate to use for signing the release version
#ios.codesign.release = %(ios.codesign.debug)s

# (str) The development team to use for signing the release version
#ios.codesign.development_team.release = <hexstring>

# (str) URL pointing to .ipa file to be installed
# This option should be defined along with `display_image_url` and `full_size_image_url` options.
#ios.manifest.app_url =

# (str) URL pointing to an icon (57x57px) to be displayed during download
# This option should be defined along with `app_url` and `full_size_image_url` options.
#ios.manifest.display_image_url =

# (str) URL pointing to a large icon (512x512px) to be used by iTunes
# This option should be defined along with `app_url` and `display_image_url` options.
#ios.manifest.full_size_image_url =


[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, .aab, .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

Pete Kovac

unread,
Jan 23, 2023, 11:48:23 AM1/23/23
to Kivy users support
So you successfully built the APK but it crashed out after load on mobile - gotcha. Do you have the ADB Logcat output? That will tell you what modules failed to load. Since the nba_live is mostly just API calls you may be getting an error on the "request" module missing in the specification line. Only way to know for sure is to get the logcat data. 

Alon Treitel

unread,
Jan 23, 2023, 12:16:24 PM1/23/23
to Kivy users support
so what do i need to do how do i know whats worng with the apk?

Pete Kovac

unread,
Jan 23, 2023, 12:30:09 PM1/23/23
to Kivy users support
You need to run the ADB Logcat - that will give you all the information about what is happening with the app - like a debugger, it will tell you the reason why the app crashes.

Connect your android device to your PC via USB
Enable Developer Mode on your device
Enable USB Debugging on your device
if you dont have ADB installed install it
run this command in a shell: adb logcat -s python
on your device launch the app and you'll see the logcat start to fill up with information
once it runs, crashes, and closes, copy and paste all that information back here. 
Message has been deleted

Robert

unread,
Jan 23, 2023, 12:36:50 PM1/23/23
to Kivy users support

Alon Treitel

unread,
Jan 23, 2023, 1:10:32 PM1/23/23
to Kivy users support
i downloaded the program and conected my phone what should i do next?

Pete Kovac

unread,
Jan 23, 2023, 1:18:26 PM1/23/23
to Kivy users support
run this command in a shell: adb logcat -s python

Alon Treitel

unread,
Jan 23, 2023, 1:20:50 PM1/23/23
to Kivy users support
01-23 20:20:23.231 20052 20156 I python  : Initializing Python for Android
01-23 20:20:23.231 20052 20156 I python  : Setting additional env vars from p4a_env_vars.txt
01-23 20:20:23.241 20052 20156 I python  : Changing directory to the one provided by ANDROID_ARGUMENT
01-23 20:20:23.241 20052 20156 I python  : /data/user/0/org.test.nbav3/files/app
01-23 20:20:23.247 20052 20156 I python  : Preparing to initialize python
01-23 20:20:23.250 20052 20156 I python  : _python_bundle dir exists
01-23 20:20:23.250 20052 20156 I python  : calculated paths to be...
01-23 20:20:23.250 20052 20156 I python  : /data/user/0/org.test.nbav3/files/app/_python_bundle/stdlib.zip:/data/user/0/org.test.nbav3/files/app/_python_bundle/modules
01-23 20:20:23.255 20052 20156 I python  : set wchar paths...
01-23 20:20:23.384 20052 20156 I python  : Initialized python
01-23 20:20:23.384 20052 20156 I python  : AND: Init threads
01-23 20:20:23.385 20052 20156 I python  : testing python print redirection
01-23 20:20:23.386 20052 20156 I python  : Android path ['.', '/data/user/0/org.test.nbav3/files/app/_python_bundle/stdlib.zip', '/data/user/0/org.test.nbav3/files/app/_python_bundle/modules', '/data/user/0/org.test.nbav3/files/app/_python_bundle/site-packages']
01-23 20:20:23.387 20052 20156 I python  : os.environ is environ({'PATH': '/product/bin:/apex/com.android.runtime/bin:/apex/com.android.art/bin:/system_ext/bin:/system/bin:/system/xbin:/odm/bin:/vendor/bin:/vendor/xbin', 'ANDROID_BOOTLOGO': '1', 'ANDROID_ROOT': '/system', 'ANDROID_ASSETS': '/system/app', 'ANDROID_DATA': '/data', 'ANDROID_STORAGE': '/storage', 'ANDROID_ART_ROOT': '/apex/com.android.art', 'ANDROID_I18N_ROOT': '/apex/com.android.i18n', 'ANDROID_TZDATA_ROOT': '/apex/com.android.tzdata', 'EXTERNAL_STORAGE': '/sdcard', 'ASEC_MOUNTPOINT': '/mnt/asec', 'BOOTCLASSPATH': '/apex/com.android.art/javalib/core-oj.jar:/apex/com.android.art/javalib/core-libart.jar:/apex/com.android.art/javalib/core-icu4j.jar:/apex/com.android.art/javalib/okhttp.jar:/apex/com.android.art/javalib/bouncycastle.jar:/apex/com.android.art/javalib/apache-xml.jar:/system/framework/framework.jar:/system/framework/miu...@boot.jar:/system/framework/miuisy...@boot.jar:/system/framework/ext.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/framework-atb-backward-compatibility.jar:/system/framework/tcmiface.jar:/system/framework/telephony-ext.jar:/system/framework/qcom.fmradio.jar:/system/framework/QPerformance.jar:/system/framework/UxPerformance.jar:/system/framework/WfdCommon.jar:/apex/com.android.conscrypt/javalib/conscrypt.jar:/apex/com.android.media/javalib/updatable-media.jar:/apex/com.android.mediaprovider/javalib/framework-mediaprovider.jar:/apex/com.android.os.statsd/javalib/framework-statsd.jar:/apex/com.android.permission/javalib/framework-permission.jar:/apex/com.android.sdkext/javalib/framework-sdkextensions.jar:/apex/com.android.wifi/javalib/framework-wifi.jar:/apex/com.android.tethering/javalib/framework-tethering.jar', 'DEX2OATBOOTCLASSPATH': '/apex/com.android.art/javalib/core-oj.jar:/apex/com.android.art/javalib/core-libart.jar:/apex/com.android.art/javalib/core-icu4j.jar:/apex/com.android.art/javalib/okhttp.jar:/apex/com.android.art/javalib/bouncycastle.jar:/apex/com.android.art/javalib/apache-xml.jar:/system/framework/framework.jar:/system/framework/miu...@boot.jar:/system/framework/miuisy...@boot.jar:/system/framework/ext.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/framework-atb-backward-compatibility.jar:/system/framework/tcmiface.jar:/system/framework/telephony-ext.jar:/system/framework/qcom.fmradio.jar:/system/framework/QPerformance.jar:/system/framework/UxPerformance.jar:/system/framework/WfdCommon.jar', 'SYSTEMSERVERCLASSPATH': '/system/framework/com.android.location.provider.jar:/system/framework/services.jar:/system/framework/ethernet-service.jar:/system/framework/miui.services.jar:/apex/com.android.permission/javalib/service-permission.jar:/apex/com.android.ipsec/javalib/android.net.ipsec.ike.jar', 'DOWNLOAD_CACHE': '/data/cache', 'ANDROID_SOCKET_zygote': '18', 'ANDROID_SOCKET_usap_pool_primary': '22', 'ANDROID_ENTRYPOINT': 'main.pyc', 'ANDROID_ARGUMENT': '/data/user/0/org.test.nbav3/files/app', 'ANDROID_APP_PATH': '/data/user/0/org.test.nbav3/files/app', 'ANDROID_PRIVATE': '/data/user/0/org.test.nbav3/files', 'ANDROID_UNPACK': '/data/user/0/org.test.nbav3/files/app', 'PYTHONHOME': '/data/user/0/org.test.nbav3/files/app', 'PYTHONPATH': '/data/user/0/org.test.nbav3/files/app:/data/user/0/org.test.nbav3/files/app/lib', 'PYTHONOPTIMIZE': '2', 'P4A_BOOTSTRAP': 'SDL2', 'PYTHON_NAME': 'python', 'P4A_IS_WINDOWED': 'True', 'P4A_ORIENTATION': 'portrait', 'P4A_NUMERIC_VERSION': 'None', 'P4A_MINSDK': '21', 'LC_CTYPE': 'C.UTF-8'})
01-23 20:20:23.387 20052 20156 I python  : Android kivy bootstrap done. __name__ is __main__
01-23 20:20:23.387 20052 20156 I python  : AND: Ran string
01-23 20:20:23.387 20052 20156 I python  : Run user program, change dir and execute entrypoint
01-23 20:20:23.548 20052 20156 I python  : Traceback (most recent call last):
01-23 20:20:23.548 20052 20156 I python  :   File "/content/.buildozer/android/app/main.py", line 1, in <module>
01-23 20:20:23.549 20052 20156 I python  :   File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV3/arm64-v8a/nba_api/live/nba/endpoints/__init__.py", line 7, in <module>
01-23 20:20:23.549 20052 20156 I python  :   File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV3/arm64-v8a/nba_api/live/nba/endpoints/playbyplay.py", line 2, in <module>
01-23 20:20:23.549 20052 20156 I python  :   File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV3/arm64-v8a/nba_api/live/nba/library/http.py", line 1, in <module>
01-23 20:20:23.549 20052 20156 I python  :   File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV3/arm64-v8a/nba_api/library/http.py", line 4, in <module>
01-23 20:20:23.550 20052 20156 I python  : ModuleNotFoundError: No module named 'requests'
01-23 20:20:23.550 20052 20156 I python  : Python for android ended.

Pete Kovac

unread,
Jan 23, 2023, 1:26:34 PM1/23/23
to Kivy users support
Perfect - my suspicion was correct - you need to add in 'requests' to your Buildozer spec. 

# (list) Application requirements
# comma separated e.g. requirements = sqlite3,kivy
requirements = python3==3.8.2,kivy,python-dateutil,nba_api,pillow,requests

Add requests and then rebuild and repeat the process again to see if it crashes again - if it does you'll now have the information you need to keep going.

Alon Treitel

unread,
Jan 23, 2023, 1:27:59 PM1/23/23
to Kivy users support
thank you so much

Pete Kovac

unread,
Jan 23, 2023, 1:30:06 PM1/23/23
to Kivy users support
Glad to help - been there when I first started with Buildozer, always nice to pass along information to others. 

Alon Treitel

unread,
Jan 23, 2023, 3:12:42 PM1/23/23
to Kivy users support
i added a cuple of mudles and it workted fine giving me a new one till i got this:
01-23 22:10:29.325 17623 17684 I python  : Android kivy bootstrap done. __name__ is __main__
01-23 22:10:29.325 17623 17684 I python  : AND: Ran string
01-23 22:10:29.325 17623 17684 I python  : Run user program, change dir and execute entrypoint
01-23 22:10:29.811 17623 17684 I python  : Traceback (most recent call last):
01-23 22:10:29.811 17623 17684 I python  :   File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV7/arm64-v8a/requests/compat.py", line 11, in <module>
01-23 22:10:29.812 17623 17684 I python  : ModuleNotFoundError: No module named 'chardet'
01-23 22:10:29.812 17623 17684 I python  :
01-23 22:10:29.812 17623 17684 I python  : During handling of the above exception, another exception occurred:
01-23 22:10:29.812 17623 17684 I python  :
01-23 22:10:29.812 17623 17684 I python  : Traceback (most recent call last):
01-23 22:10:29.812 17623 17684 I python  :   File "/content/.buildozer/android/app/main.py", line 1, in <module>
01-23 22:10:29.812 17623 17684 I python  :   File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV7/arm64-v8a/nba_api/live/nba/endpoints/__init__.py", line 7, in <module>
01-23 22:10:29.812 17623 17684 I python  :   File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV7/arm64-v8a/nba_api/live/nba/endpoints/playbyplay.py", line 2, in <module>
01-23 22:10:29.813 17623 17684 I python  :   File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV7/arm64-v8a/nba_api/live/nba/library/http.py", line 1, in <module>
01-23 22:10:29.813 17623 17684 I python  :   File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV7/arm64-v8a/nba_api/library/http.py", line 4, in <module>
01-23 22:10:29.813 17623 17684 I python  :   File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV7/arm64-v8a/requests/__init__.py", line 45, in <module>
01-23 22:10:29.813 17623 17684 I python  :   File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV7/arm64-v8a/requests/exceptions.py", line 9, in <module>
01-23 22:10:29.813 17623 17684 I python  :   File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV7/arm64-v8a/requests/compat.py", line 13, in <module>
01-23 22:10:29.814 17623 17684 I python  :   File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV7/arm64-v8a/charset_normalizer/__init__.py", line 24, in <module>
01-23 22:10:29.814 17623 17684 I python  :   File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV7/arm64-v8a/charset_normalizer/api.py", line 5, in <module>
01-23 22:10:29.814 17623 17684 I python  :   File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV7/arm64-v8a/charset_normalizer/cd.py", line 9, in <module>
01-23 22:10:29.814 17623 17684 I python  : ImportError: dlopen failed: "/data/user/0/org.test.nbav7/files/app/_python_bundle/site-packages/charset_normalizer/md.so" is for EM_X86_64 (62) instead of EM_AARCH64 (183)
01-23 22:10:29.814 17623 17684 I python  : Python for android ended.

Robert

unread,
Jan 23, 2023, 4:18:47 PM1/23/23
to Kivy users support

Alon Treitel

unread,
Jan 23, 2023, 5:17:31 PM1/23/23
to Kivy users support
got threw more modules and then this happened: 01-24 00:15:11.964 17106 17391 I python  : Initializing Python for Android
01-24 00:15:11.964 17106 17391 I python  : Setting additional env vars from p4a_env_vars.txt
01-24 00:15:11.964 17106 17391 I python  : Changing directory to the one provided by ANDROID_ARGUMENT
01-24 00:15:11.964 17106 17391 I python  : /data/user/0/org.test.nbav18/files/app
01-24 00:15:11.976 17106 17391 I python  : Preparing to initialize python
01-24 00:15:11.976 17106 17391 I python  : _python_bundle dir exists
01-24 00:15:11.976 17106 17391 I python  : calculated paths to be...
01-24 00:15:11.976 17106 17391 I python  : /data/user/0/org.test.nbav18/files/app/_python_bundle/stdlib.zip:/data/user/0/org.test.nbav18/files/app/_python_bundle/modules
01-24 00:15:11.980 17106 17391 I python  : set wchar paths...
01-24 00:15:12.081 17106 17391 I python  : Initialized python
01-24 00:15:12.081 17106 17391 I python  : AND: Init threads
01-24 00:15:12.081 17106 17391 I python  : testing python print redirection
01-24 00:15:12.083 17106 17391 I python  : Android path ['.', '/data/user/0/org.test.nbav18/files/app/_python_bundle/stdlib.zip', '/data/user/0/org.test.nbav18/files/app/_python_bundle/modules', '/data/user/0/org.test.nbav18/files/app/_python_bundle/site-packages']
01-24 00:15:12.083 17106 17391 I python  : os.environ is environ({'PATH': '/product/bin:/apex/com.android.runtime/bin:/apex/com.android.art/bin:/system_ext/bin:/system/bin:/system/xbin:/odm/bin:/vendor/bin:/vendor/xbin', 'ANDROID_BOOTLOGO': '1', 'ANDROID_ROOT': '/system', 'ANDROID_ASSETS': '/system/app', 'ANDROID_DATA': '/data', 'ANDROID_STORAGE': '/storage', 'ANDROID_ART_ROOT': '/apex/com.android.art', 'ANDROID_I18N_ROOT': '/apex/com.android.i18n', 'ANDROID_TZDATA_ROOT': '/apex/com.android.tzdata', 'EXTERNAL_STORAGE': '/sdcard', 'ASEC_MOUNTPOINT': '/mnt/asec', 'BOOTCLASSPATH': '/apex/com.android.art/javalib/core-oj.jar:/apex/com.android.art/javalib/core-libart.jar:/apex/com.android.art/javalib/core-icu4j.jar:/apex/com.android.art/javalib/okhttp.jar:/apex/com.android.art/javalib/bouncycastle.jar:/apex/com.android.art/javalib/apache-xml.jar:/system/framework/framework.jar:/system/framework/miu...@boot.jar:/system/framework/miuisy...@boot.jar:/system/framework/ext.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/framework-atb-backward-compatibility.jar:/system/framework/tcmiface.jar:/system/framework/telephony-ext.jar:/system/framework/qcom.fmradio.jar:/system/framework/QPerformance.jar:/system/framework/UxPerformance.jar:/system/framework/WfdCommon.jar:/apex/com.android.conscrypt/javalib/conscrypt.jar:/apex/com.android.media/javalib/updatable-media.jar:/apex/com.android.mediaprovider/javalib/framework-mediaprovider.jar:/apex/com.android.os.statsd/javalib/framework-statsd.jar:/apex/com.android.permission/javalib/framework-permission.jar:/apex/com.android.sdkext/javalib/framework-sdkextensions.jar:/apex/com.android.wifi/javalib/framework-wifi.jar:/apex/com.android.tethering/javalib/framework-tethering.jar', 'DEX2OATBOOTCLASSPATH': '/apex/com.android.art/javalib/core-oj.jar:/apex/com.android.art/javalib/core-libart.jar:/apex/com.android.art/javalib/core-icu4j.jar:/apex/com.android.art/javalib/okhttp.jar:/apex/com.android.art/javalib/bouncycastle.jar:/apex/com.android.art/javalib/apache-xml.jar:/system/framework/framework.jar:/system/framework/miu...@boot.jar:/system/framework/miuisy...@boot.jar:/system/framework/ext.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/framework-atb-backward-compatibility.jar:/system/framework/tcmiface.jar:/system/framework/telephony-ext.jar:/system/framework/qcom.fmradio.jar:/system/framework/QPerformance.jar:/system/framework/UxPerformance.jar:/system/framework/WfdCommon.jar', 'SYSTEMSERVERCLASSPATH': '/system/framework/com.android.location.provider.jar:/system/framework/services.jar:/system/framework/ethernet-service.jar:/system/framework/miui.services.jar:/apex/com.android.permission/javalib/service-permission.jar:/apex/com.android.ipsec/javalib/android.net.ipsec.ike.jar', 'DOWNLOAD_CACHE': '/data/cache', 'ANDROID_SOCKET_zygote': '18', 'ANDROID_SOCKET_usap_pool_primary': '22', 'ANDROID_ENTRYPOINT': 'main.pyc', 'ANDROID_ARGUMENT': '/data/user/0/org.test.nbav18/files/app', 'ANDROID_APP_PATH': '/data/user/0/org.test.nbav18/files/app', 'ANDROID_PRIVATE': '/data/user/0/org.test.nbav18/files', 'ANDROID_UNPACK': '/data/user/0/org.test.nbav18/files/app', 'PYTHONHOME': '/data/user/0/org.test.nbav18/files/app', 'PYTHONPATH': '/data/user/0/org.test.nbav18/files/app:/data/user/0/org.test.nbav18/files/app/lib', 'PYTHONOPTIMIZE': '2', 'P4A_BOOTSTRAP': 'SDL2', 'PYTHON_NAME': 'python', 'P4A_IS_WINDOWED': 'True', 'P4A_ORIENTATION': 'portrait', 'P4A_NUMERIC_VERSION': 'None', 'P4A_MINSDK': '21', 'LC_CTYPE': 'C.UTF-8'})
01-24 00:15:12.084 17106 17391 I python  : Android kivy bootstrap done. __name__ is __main__
01-24 00:15:12.084 17106 17391 I python  : AND: Ran string
01-24 00:15:12.084 17106 17391 I python  : Run user program, change dir and execute entrypoint
01-24 00:15:12.857 17106 17391 I python  : [WARNING] [Config      ] Older configuration version detected (0 instead of 24)
01-24 00:15:12.857 17106 17391 I python  : [WARNING] [Config      ] Upgrading configuration in progress.
01-24 00:15:12.864 17106 17391 I python  : [INFO   ] [Logger      ] Record log in /data/user/0/org.test.nbav18/files/app/.kivy/logs/kivy_23-01-24_0.txt
01-24 00:15:12.865 17106 17391 I python  : [INFO   ] [Kivy        ] v2.1.0
01-24 00:15:12.865 17106 17391 I python  : [INFO   ] [Kivy        ] Installed at "/data/user/0/org.test.nbav18/files/app/_python_bundle/site-packages/kivy/__init__.pyc"
01-24 00:15:12.866 17106 17391 I python  : [INFO   ] [Python      ] v3.9.9 (main, Jan 23 2023, 21:55:08)
01-24 00:15:12.866 17106 17391 I python  : [Clang 14.0.6 (https://android.googlesource.com/toolchain/llvm-project 4c603efb
01-24 00:15:12.867 17106 17391 I python  : [INFO   ] [Python      ] Interpreter at ""
01-24 00:15:12.867 17106 17391 I python  : [INFO   ] [Logger      ] Purge log fired. Processing...
01-24 00:15:12.868 17106 17391 I python  : [INFO   ] [Logger      ] Purge finished!
01-24 00:15:14.762 17106 17391 I python  : [INFO   ] [Factory     ] 189 symbols loaded
01-24 00:15:15.333 17106 17391 I python  : [INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil (img_ffpyplayer ignored)
01-24 00:15:15.377 17106 17391 I python  : [INFO   ] [Audio       ] Providers: audio_sdl2 (audio_android, audio_ffpyplayer ignored)
01-24 00:15:15.389 17106 17391 I python  : [INFO   ] [Text        ] Provider: sdl2
01-24 00:15:15.437 17106 17391 I python  : [INFO   ] [Window      ] Provider: sdl2
01-24 00:15:15.483 17106 17391 I python  : [INFO   ] [GL          ] Using the "OpenGL ES 2" graphics system
01-24 00:15:15.498 17106 17391 I python  : [INFO   ] [GL          ] Backend used <sdl2>
01-24 00:15:15.499 17106 17391 I python  : [INFO   ] [GL          ] OpenGL version <b'OpenGL ES 3.2 V@0502.0 (GIT@5eaa426211, I07ee46fc66, 1633700387) (Date:10/08/21)'>
01-24 00:15:15.500 17106 17391 I python  : [INFO   ] [GL          ] OpenGL vendor <b'Qualcomm'>
01-24 00:15:15.500 17106 17391 I python  : [INFO   ] [GL          ] OpenGL renderer <b'Adreno (TM) 610'>
01-24 00:15:15.501 17106 17391 I python  : [INFO   ] [GL          ] OpenGL parsed version: 3, 2
01-24 00:15:15.502 17106 17391 I python  : [INFO   ] [GL          ] Texture max size <16384>
01-24 00:15:15.502 17106 17391 I python  : [INFO   ] [GL          ] Texture max units <16>
01-24 00:15:15.580 17106 17391 I python  : [INFO   ] [Window      ] auto add sdl2 input provider
01-24 00:15:15.582 17106 17391 I python  : [INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
01-24 00:15:15.605 17106 17391 I python  :  Traceback (most recent call last):
01-24 00:15:15.605 17106 17391 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/urllib3/connection.py", line 174, in _new_conn
01-24 00:15:15.605 17106 17391 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/urllib3/util/connection.py", line 72, in create_connection
01-24 00:15:15.606 17106 17391 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/python3/arm64-v8a__ndk_target_21/python3/Lib/socket.py", line 954, in getaddrinfo
01-24 00:15:15.607 17106 17391 I python  :  socket.gaierror: [Errno 7] No address associated with hostname
01-24 00:15:15.607 17106 17391 I python  :
01-24 00:15:15.607 17106 17391 I python  :  During handling of the above exception, another exception occurred:
01-24 00:15:15.607 17106 17391 I python  :
01-24 00:15:15.608 17106 17391 I python  :  Traceback (most recent call last):
01-24 00:15:15.608 17106 17391 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/urllib3/connectionpool.py", line 703, in urlopen
01-24 00:15:15.608 17106 17391 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/urllib3/connectionpool.py", line 386, in _make_request
01-24 00:15:15.609 17106 17391 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/urllib3/connectionpool.py", line 1042, in _validate_conn
01-24 00:15:15.609 17106 17391 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/urllib3/connection.py", line 358, in connect
01-24 00:15:15.610 17106 17391 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/urllib3/connection.py", line 186, in _new_conn
01-24 00:15:15.610 17106 17391 I python  :  urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x7284ddabb0>: Failed to establish a new connection: [Errno 7] No address associated with hostname
01-24 00:15:15.611 17106 17391 I python  :
01-24 00:15:15.611 17106 17391 I python  :  During handling of the above exception, another exception occurred:
01-24 00:15:15.611 17106 17391 I python  :
01-24 00:15:15.611 17106 17391 I python  :  Traceback (most recent call last):
01-24 00:15:15.612 17106 17391 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/requests/adapters.py", line 489, in send
01-24 00:15:15.612 17106 17391 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/urllib3/connectionpool.py", line 787, in urlopen
01-24 00:15:15.613 17106 17391 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/urllib3/util/retry.py", line 592, in increment
01-24 00:15:15.613 17106 17391 I python  :  urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='cdn.nba.com', port=443): Max retries exceeded with url: /static/json/liveData/scoreboard/todaysScoreboard_00.json (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7284ddabb0>: Failed to establish a new connection: [Errno 7] No address associated with hostname'))
01-24 00:15:15.613 17106 17391 I python  :
01-24 00:15:15.614 17106 17391 I python  :  During handling of the above exception, another exception occurred:
01-24 00:15:15.614 17106 17391 I python  :
01-24 00:15:15.614 17106 17391 I python  :  Traceback (most recent call last):
01-24 00:15:15.614 17106 17391 I python  :    File "/content/.buildozer/android/app/main.py", line 220, in <module>
01-24 00:15:15.615 17106 17391 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/kivy/app.py", line 954, in run
01-24 00:15:15.616 17106 17391 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/kivy/app.py", line 924, in _run_prepare
01-24 00:15:15.616 17106 17391 I python  :    File "/content/.buildozer/android/app/main.py", line 121, in build
01-24 00:15:15.616 17106 17391 I python  :    File "/content/.buildozer/android/app/main.py", line 74, in get_games
01-24 00:15:15.617 17106 17391 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/nba_api/live/nba/endpoints/scoreboard.py", line 24, in __init__
01-24 00:15:15.617 17106 17391 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/nba_api/live/nba/endpoints/scoreboard.py", line 27, in get_request
01-24 00:15:15.618 17106 17391 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/nba_api/library/http.py", line 130, in send_api_request
01-24 00:15:15.618 17106 17391 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/requests/api.py", line 73, in get
01-24 00:15:15.619 17106 17391 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/requests/api.py", line 59, in request
01-24 00:15:15.619 17106 17391 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/requests/sessions.py", line 587, in request
01-24 00:15:15.620 17106 17391 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/requests/sessions.py", line 701, in send
01-24 00:15:15.620 17106 17391 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/requests/adapters.py", line 565, in send
01-24 00:15:15.621 17106 17391 I python  :  requests.exceptions.ConnectionError: HTTPSConnectionPool(host='cdn.nba.com', port=443): Max retries exceeded with url: /static/json/liveData/scoreboard/todaysScoreboard_00.json (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7284ddabb0>: Failed to establish a new connection: [Errno 7] No address associated with hostname'))
01-24 00:15:15.621 17106 17391 I python  : Python for android ended.
01-24 00:15:28.344 17517 17549 I python  : Initializing Python for Android
01-24 00:15:28.344 17517 17549 I python  : Setting additional env vars from p4a_env_vars.txt
01-24 00:15:28.344 17517 17549 I python  : Changing directory to the one provided by ANDROID_ARGUMENT
01-24 00:15:28.344 17517 17549 I python  : /data/user/0/org.test.nbav18/files/app
01-24 00:15:28.344 17517 17549 I python  : Preparing to initialize python
01-24 00:15:28.345 17517 17549 I python  : _python_bundle dir exists
01-24 00:15:28.345 17517 17549 I python  : calculated paths to be...
01-24 00:15:28.345 17517 17549 I python  : /data/user/0/org.test.nbav18/files/app/_python_bundle/stdlib.zip:/data/user/0/org.test.nbav18/files/app/_python_bundle/modules
01-24 00:15:28.346 17517 17549 I python  : set wchar paths...
01-24 00:15:28.438 17517 17549 I python  : Initialized python
01-24 00:15:28.438 17517 17549 I python  : AND: Init threads
01-24 00:15:28.438 17517 17549 I python  : testing python print redirection
01-24 00:15:28.440 17517 17549 I python  : Android path ['.', '/data/user/0/org.test.nbav18/files/app/_python_bundle/stdlib.zip', '/data/user/0/org.test.nbav18/files/app/_python_bundle/modules', '/data/user/0/org.test.nbav18/files/app/_python_bundle/site-packages']
01-24 00:15:28.441 17517 17549 I python  : os.environ is environ({'PATH': '/product/bin:/apex/com.android.runtime/bin:/apex/com.android.art/bin:/system_ext/bin:/system/bin:/system/xbin:/odm/bin:/vendor/bin:/vendor/xbin', 'ANDROID_BOOTLOGO': '1', 'ANDROID_ROOT': '/system', 'ANDROID_ASSETS': '/system/app', 'ANDROID_DATA': '/data', 'ANDROID_STORAGE': '/storage', 'ANDROID_ART_ROOT': '/apex/com.android.art', 'ANDROID_I18N_ROOT': '/apex/com.android.i18n', 'ANDROID_TZDATA_ROOT': '/apex/com.android.tzdata', 'EXTERNAL_STORAGE': '/sdcard', 'ASEC_MOUNTPOINT': '/mnt/asec', 'BOOTCLASSPATH': '/apex/com.android.art/javalib/core-oj.jar:/apex/com.android.art/javalib/core-libart.jar:/apex/com.android.art/javalib/core-icu4j.jar:/apex/com.android.art/javalib/okhttp.jar:/apex/com.android.art/javalib/bouncycastle.jar:/apex/com.android.art/javalib/apache-xml.jar:/system/framework/framework.jar:/system/framework/miu...@boot.jar:/system/framework/miuisy...@boot.jar:/system/framework/ext.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/framework-atb-backward-compatibility.jar:/system/framework/tcmiface.jar:/system/framework/telephony-ext.jar:/system/framework/qcom.fmradio.jar:/system/framework/QPerformance.jar:/system/framework/UxPerformance.jar:/system/framework/WfdCommon.jar:/apex/com.android.conscrypt/javalib/conscrypt.jar:/apex/com.android.media/javalib/updatable-media.jar:/apex/com.android.mediaprovider/javalib/framework-mediaprovider.jar:/apex/com.android.os.statsd/javalib/framework-statsd.jar:/apex/com.android.permission/javalib/framework-permission.jar:/apex/com.android.sdkext/javalib/framework-sdkextensions.jar:/apex/com.android.wifi/javalib/framework-wifi.jar:/apex/com.android.tethering/javalib/framework-tethering.jar', 'DEX2OATBOOTCLASSPATH': '/apex/com.android.art/javalib/core-oj.jar:/apex/com.android.art/javalib/core-libart.jar:/apex/com.android.art/javalib/core-icu4j.jar:/apex/com.android.art/javalib/okhttp.jar:/apex/com.android.art/javalib/bouncycastle.jar:/apex/com.android.art/javalib/apache-xml.jar:/system/framework/framework.jar:/system/framework/miu...@boot.jar:/system/framework/miuisy...@boot.jar:/system/framework/ext.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/framework-atb-backward-compatibility.jar:/system/framework/tcmiface.jar:/system/framework/telephony-ext.jar:/system/framework/qcom.fmradio.jar:/system/framework/QPerformance.jar:/system/framework/UxPerformance.jar:/system/framework/WfdCommon.jar', 'SYSTEMSERVERCLASSPATH': '/system/framework/com.android.location.provider.jar:/system/framework/services.jar:/system/framework/ethernet-service.jar:/system/framework/miui.services.jar:/apex/com.android.permission/javalib/service-permission.jar:/apex/com.android.ipsec/javalib/android.net.ipsec.ike.jar', 'DOWNLOAD_CACHE': '/data/cache', 'ANDROID_SOCKET_zygote': '18', 'ANDROID_SOCKET_usap_pool_primary': '22', 'ANDROID_ENTRYPOINT': 'main.pyc', 'ANDROID_ARGUMENT': '/data/user/0/org.test.nbav18/files/app', 'ANDROID_APP_PATH': '/data/user/0/org.test.nbav18/files/app', 'ANDROID_PRIVATE': '/data/user/0/org.test.nbav18/files', 'ANDROID_UNPACK': '/data/user/0/org.test.nbav18/files/app', 'PYTHONHOME': '/data/user/0/org.test.nbav18/files/app', 'PYTHONPATH': '/data/user/0/org.test.nbav18/files/app:/data/user/0/org.test.nbav18/files/app/lib', 'PYTHONOPTIMIZE': '2', 'P4A_BOOTSTRAP': 'SDL2', 'PYTHON_NAME': 'python', 'P4A_IS_WINDOWED': 'True', 'P4A_ORIENTATION': 'portrait', 'P4A_NUMERIC_VERSION': 'None', 'P4A_MINSDK': '21', 'LC_CTYPE': 'C.UTF-8'})
01-24 00:15:28.441 17517 17549 I python  : Android kivy bootstrap done. __name__ is __main__
01-24 00:15:28.441 17517 17549 I python  : AND: Ran string
01-24 00:15:28.441 17517 17549 I python  : Run user program, change dir and execute entrypoint
01-24 00:15:29.136 17517 17549 I python  : [INFO   ] [Logger      ] Record log in /data/user/0/org.test.nbav18/files/app/.kivy/logs/kivy_23-01-24_1.txt
01-24 00:15:29.136 17517 17549 I python  : [INFO   ] [Kivy        ] v2.1.0
01-24 00:15:29.137 17517 17549 I python  : [INFO   ] [Kivy        ] Installed at "/data/user/0/org.test.nbav18/files/app/_python_bundle/site-packages/kivy/__init__.pyc"
01-24 00:15:29.137 17517 17549 I python  : [INFO   ] [Python      ] v3.9.9 (main, Jan 23 2023, 21:55:08)
01-24 00:15:29.137 17517 17549 I python  : [Clang 14.0.6 (https://android.googlesource.com/toolchain/llvm-project 4c603efb
01-24 00:15:29.138 17517 17549 I python  : [INFO   ] [Python      ] Interpreter at ""
01-24 00:15:29.138 17517 17549 I python  : [INFO   ] [Logger      ] Purge log fired. Processing...
01-24 00:15:29.139 17517 17549 I python  : [INFO   ] [Logger      ] Purge finished!
01-24 00:15:31.032 17517 17549 I python  : [INFO   ] [Factory     ] 189 symbols loaded
01-24 00:15:31.602 17517 17549 I python  : [INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil (img_ffpyplayer ignored)
01-24 00:15:31.648 17517 17549 I python  : [INFO   ] [Audio       ] Providers: audio_sdl2 (audio_android, audio_ffpyplayer ignored)
01-24 00:15:31.661 17517 17549 I python  : [INFO   ] [Text        ] Provider: sdl2
01-24 00:15:31.709 17517 17549 I python  : [INFO   ] [Window      ] Provider: sdl2
01-24 00:15:31.748 17517 17549 I python  : [INFO   ] [GL          ] Using the "OpenGL ES 2" graphics system
01-24 00:15:31.765 17517 17549 I python  : [INFO   ] [GL          ] Backend used <sdl2>
01-24 00:15:31.766 17517 17549 I python  : [INFO   ] [GL          ] OpenGL version <b'OpenGL ES 3.2 V@0502.0 (GIT@5eaa426211, I07ee46fc66, 1633700387) (Date:10/08/21)'>
01-24 00:15:31.767 17517 17549 I python  : [INFO   ] [GL          ] OpenGL vendor <b'Qualcomm'>
01-24 00:15:31.767 17517 17549 I python  : [INFO   ] [GL          ] OpenGL renderer <b'Adreno (TM) 610'>
01-24 00:15:31.768 17517 17549 I python  : [INFO   ] [GL          ] OpenGL parsed version: 3, 2
01-24 00:15:31.769 17517 17549 I python  : [INFO   ] [GL          ] Texture max size <16384>
01-24 00:15:31.769 17517 17549 I python  : [INFO   ] [GL          ] Texture max units <16>
01-24 00:15:31.822 17517 17549 I python  : [INFO   ] [Window      ] auto add sdl2 input provider
01-24 00:15:31.824 17517 17549 I python  : [INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
01-24 00:15:31.846 17517 17549 I python  :  Traceback (most recent call last):
01-24 00:15:31.847 17517 17549 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/urllib3/connection.py", line 174, in _new_conn
01-24 00:15:31.847 17517 17549 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/urllib3/util/connection.py", line 72, in create_connection
01-24 00:15:31.848 17517 17549 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/python3/arm64-v8a__ndk_target_21/python3/Lib/socket.py", line 954, in getaddrinfo
01-24 00:15:31.848 17517 17549 I python  :  socket.gaierror: [Errno 7] No address associated with hostname
01-24 00:15:31.849 17517 17549 I python  :
01-24 00:15:31.849 17517 17549 I python  :  During handling of the above exception, another exception occurred:
01-24 00:15:31.849 17517 17549 I python  :
01-24 00:15:31.849 17517 17549 I python  :  Traceback (most recent call last):
01-24 00:15:31.850 17517 17549 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/urllib3/connectionpool.py", line 703, in urlopen
01-24 00:15:31.850 17517 17549 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/urllib3/connectionpool.py", line 386, in _make_request
01-24 00:15:31.850 17517 17549 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/urllib3/connectionpool.py", line 1042, in _validate_conn
01-24 00:15:31.851 17517 17549 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/urllib3/connection.py", line 358, in connect
01-24 00:15:31.851 17517 17549 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/urllib3/connection.py", line 186, in _new_conn
01-24 00:15:31.852 17517 17549 I python  :  urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x727d6ddaf0>: Failed to establish a new connection: [Errno 7] No address associated with hostname
01-24 00:15:31.852 17517 17549 I python  :
01-24 00:15:31.852 17517 17549 I python  :  During handling of the above exception, another exception occurred:
01-24 00:15:31.853 17517 17549 I python  :
01-24 00:15:31.853 17517 17549 I python  :  Traceback (most recent call last):
01-24 00:15:31.853 17517 17549 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/requests/adapters.py", line 489, in send
01-24 00:15:31.854 17517 17549 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/urllib3/connectionpool.py", line 787, in urlopen
01-24 00:15:31.854 17517 17549 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/urllib3/util/retry.py", line 592, in increment
01-24 00:15:31.854 17517 17549 I python  :  urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='cdn.nba.com', port=443): Max retries exceeded with url: /static/json/liveData/scoreboard/todaysScoreboard_00.json (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x727d6ddaf0>: Failed to establish a new connection: [Errno 7] No address associated with hostname'))
01-24 00:15:31.855 17517 17549 I python  :
01-24 00:15:31.855 17517 17549 I python  :  During handling of the above exception, another exception occurred:
01-24 00:15:31.855 17517 17549 I python  :
01-24 00:15:31.855 17517 17549 I python  :  Traceback (most recent call last):
01-24 00:15:31.856 17517 17549 I python  :    File "/content/.buildozer/android/app/main.py", line 220, in <module>
01-24 00:15:31.856 17517 17549 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/kivy/app.py", line 954, in run
01-24 00:15:31.857 17517 17549 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/kivy/app.py", line 924, in _run_prepare
01-24 00:15:31.857 17517 17549 I python  :    File "/content/.buildozer/android/app/main.py", line 121, in build
01-24 00:15:31.857 17517 17549 I python  :    File "/content/.buildozer/android/app/main.py", line 74, in get_games
01-24 00:15:31.858 17517 17549 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/nba_api/live/nba/endpoints/scoreboard.py", line 24, in __init__
01-24 00:15:31.858 17517 17549 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/nba_api/live/nba/endpoints/scoreboard.py", line 27, in get_request
01-24 00:15:31.859 17517 17549 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/nba_api/library/http.py", line 130, in send_api_request
01-24 00:15:31.859 17517 17549 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/requests/api.py", line 73, in get
01-24 00:15:31.860 17517 17549 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/requests/api.py", line 59, in request
01-24 00:15:31.860 17517 17549 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/requests/sessions.py", line 587, in request
01-24 00:15:31.861 17517 17549 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/requests/sessions.py", line 701, in send
01-24 00:15:31.861 17517 17549 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/requests/adapters.py", line 565, in send
01-24 00:15:31.861 17517 17549 I python  :  requests.exceptions.ConnectionError: HTTPSConnectionPool(host='cdn.nba.com', port=443): Max retries exceeded with url: /static/json/liveData/scoreboard/todaysScoreboard_00.json (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x727d6ddaf0>: Failed to establish a new connection: [Errno 7] No address associated with hostname'))
01-24 00:15:31.862 17517 17549 I python  : Python for android ended.
01-24 00:15:57.578 17588 17618 I python  : Initializing Python for Android
01-24 00:15:57.578 17588 17618 I python  : Setting additional env vars from p4a_env_vars.txt
01-24 00:15:57.578 17588 17618 I python  : Changing directory to the one provided by ANDROID_ARGUMENT
01-24 00:15:57.578 17588 17618 I python  : /data/user/0/org.test.nbav18/files/app
01-24 00:15:57.578 17588 17618 I python  : Preparing to initialize python
01-24 00:15:57.578 17588 17618 I python  : _python_bundle dir exists
01-24 00:15:57.578 17588 17618 I python  : calculated paths to be...
01-24 00:15:57.578 17588 17618 I python  : /data/user/0/org.test.nbav18/files/app/_python_bundle/stdlib.zip:/data/user/0/org.test.nbav18/files/app/_python_bundle/modules
01-24 00:15:57.579 17588 17618 I python  : set wchar paths...
01-24 00:15:57.689 17588 17618 I python  : Initialized python
01-24 00:15:57.689 17588 17618 I python  : AND: Init threads
01-24 00:15:57.690 17588 17618 I python  : testing python print redirection
01-24 00:15:57.692 17588 17618 I python  : Android path ['.', '/data/user/0/org.test.nbav18/files/app/_python_bundle/stdlib.zip', '/data/user/0/org.test.nbav18/files/app/_python_bundle/modules', '/data/user/0/org.test.nbav18/files/app/_python_bundle/site-packages']
01-24 00:15:57.692 17588 17618 I python  : os.environ is environ({'PATH': '/product/bin:/apex/com.android.runtime/bin:/apex/com.android.art/bin:/system_ext/bin:/system/bin:/system/xbin:/odm/bin:/vendor/bin:/vendor/xbin', 'ANDROID_BOOTLOGO': '1', 'ANDROID_ROOT': '/system', 'ANDROID_ASSETS': '/system/app', 'ANDROID_DATA': '/data', 'ANDROID_STORAGE': '/storage', 'ANDROID_ART_ROOT': '/apex/com.android.art', 'ANDROID_I18N_ROOT': '/apex/com.android.i18n', 'ANDROID_TZDATA_ROOT': '/apex/com.android.tzdata', 'EXTERNAL_STORAGE': '/sdcard', 'ASEC_MOUNTPOINT': '/mnt/asec', 'BOOTCLASSPATH': '/apex/com.android.art/javalib/core-oj.jar:/apex/com.android.art/javalib/core-libart.jar:/apex/com.android.art/javalib/core-icu4j.jar:/apex/com.android.art/javalib/okhttp.jar:/apex/com.android.art/javalib/bouncycastle.jar:/apex/com.android.art/javalib/apache-xml.jar:/system/framework/framework.jar:/system/framework/miu...@boot.jar:/system/framework/miuisy...@boot.jar:/system/framework/ext.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/framework-atb-backward-compatibility.jar:/system/framework/tcmiface.jar:/system/framework/telephony-ext.jar:/system/framework/qcom.fmradio.jar:/system/framework/QPerformance.jar:/system/framework/UxPerformance.jar:/system/framework/WfdCommon.jar:/apex/com.android.conscrypt/javalib/conscrypt.jar:/apex/com.android.media/javalib/updatable-media.jar:/apex/com.android.mediaprovider/javalib/framework-mediaprovider.jar:/apex/com.android.os.statsd/javalib/framework-statsd.jar:/apex/com.android.permission/javalib/framework-permission.jar:/apex/com.android.sdkext/javalib/framework-sdkextensions.jar:/apex/com.android.wifi/javalib/framework-wifi.jar:/apex/com.android.tethering/javalib/framework-tethering.jar', 'DEX2OATBOOTCLASSPATH': '/apex/com.android.art/javalib/core-oj.jar:/apex/com.android.art/javalib/core-libart.jar:/apex/com.android.art/javalib/core-icu4j.jar:/apex/com.android.art/javalib/okhttp.jar:/apex/com.android.art/javalib/bouncycastle.jar:/apex/com.android.art/javalib/apache-xml.jar:/system/framework/framework.jar:/system/framework/miu...@boot.jar:/system/framework/miuisy...@boot.jar:/system/framework/ext.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/framework-atb-backward-compatibility.jar:/system/framework/tcmiface.jar:/system/framework/telephony-ext.jar:/system/framework/qcom.fmradio.jar:/system/framework/QPerformance.jar:/system/framework/UxPerformance.jar:/system/framework/WfdCommon.jar', 'SYSTEMSERVERCLASSPATH': '/system/framework/com.android.location.provider.jar:/system/framework/services.jar:/system/framework/ethernet-service.jar:/system/framework/miui.services.jar:/apex/com.android.permission/javalib/service-permission.jar:/apex/com.android.ipsec/javalib/android.net.ipsec.ike.jar', 'DOWNLOAD_CACHE': '/data/cache', 'ANDROID_SOCKET_zygote': '18', 'ANDROID_SOCKET_usap_pool_primary': '22', 'ANDROID_ENTRYPOINT': 'main.pyc', 'ANDROID_ARGUMENT': '/data/user/0/org.test.nbav18/files/app', 'ANDROID_APP_PATH': '/data/user/0/org.test.nbav18/files/app', 'ANDROID_PRIVATE': '/data/user/0/org.test.nbav18/files', 'ANDROID_UNPACK': '/data/user/0/org.test.nbav18/files/app', 'PYTHONHOME': '/data/user/0/org.test.nbav18/files/app', 'PYTHONPATH': '/data/user/0/org.test.nbav18/files/app:/data/user/0/org.test.nbav18/files/app/lib', 'PYTHONOPTIMIZE': '2', 'P4A_BOOTSTRAP': 'SDL2', 'PYTHON_NAME': 'python', 'P4A_IS_WINDOWED': 'True', 'P4A_ORIENTATION': 'portrait', 'P4A_NUMERIC_VERSION': 'None', 'P4A_MINSDK': '21', 'LC_CTYPE': 'C.UTF-8'})
01-24 00:15:57.692 17588 17618 I python  : Android kivy bootstrap done. __name__ is __main__
01-24 00:15:57.692 17588 17618 I python  : AND: Ran string
01-24 00:15:57.692 17588 17618 I python  : Run user program, change dir and execute entrypoint
01-24 00:15:58.380 17588 17618 I python  : [INFO   ] [Logger      ] Record log in /data/user/0/org.test.nbav18/files/app/.kivy/logs/kivy_23-01-24_2.txt
01-24 00:15:58.381 17588 17618 I python  : [INFO   ] [Kivy        ] v2.1.0
01-24 00:15:58.381 17588 17618 I python  : [INFO   ] [Kivy        ] Installed at "/data/user/0/org.test.nbav18/files/app/_python_bundle/site-packages/kivy/__init__.pyc"
01-24 00:15:58.382 17588 17618 I python  : [INFO   ] [Python      ] v3.9.9 (main, Jan 23 2023, 21:55:08)
01-24 00:15:58.382 17588 17618 I python  : [Clang 14.0.6 (https://android.googlesource.com/toolchain/llvm-project 4c603efb
01-24 00:15:58.382 17588 17618 I python  : [INFO   ] [Python      ] Interpreter at ""
01-24 00:15:58.383 17588 17618 I python  : [INFO   ] [Logger      ] Purge log fired. Processing...
01-24 00:15:58.384 17588 17618 I python  : [INFO   ] [Logger      ] Purge finished!
01-24 00:16:00.251 17588 17618 I python  : [INFO   ] [Factory     ] 189 symbols loaded
01-24 00:16:00.829 17588 17618 I python  : [INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil (img_ffpyplayer ignored)
01-24 00:16:00.869 17588 17618 I python  : [INFO   ] [Audio       ] Providers: audio_sdl2 (audio_android, audio_ffpyplayer ignored)
01-24 00:16:00.881 17588 17618 I python  : [INFO   ] [Text        ] Provider: sdl2
01-24 00:16:00.931 17588 17618 I python  : [INFO   ] [Window      ] Provider: sdl2
01-24 00:16:00.968 17588 17618 I python  : [INFO   ] [GL          ] Using the "OpenGL ES 2" graphics system
01-24 00:16:00.979 17588 17618 I python  : [INFO   ] [GL          ] Backend used <sdl2>
01-24 00:16:00.980 17588 17618 I python  : [INFO   ] [GL          ] OpenGL version <b'OpenGL ES 3.2 V@0502.0 (GIT@5eaa426211, I07ee46fc66, 1633700387) (Date:10/08/21)'>
01-24 00:16:00.980 17588 17618 I python  : [INFO   ] [GL          ] OpenGL vendor <b'Qualcomm'>
01-24 00:16:00.981 17588 17618 I python  : [INFO   ] [GL          ] OpenGL renderer <b'Adreno (TM) 610'>
01-24 00:16:00.982 17588 17618 I python  : [INFO   ] [GL          ] OpenGL parsed version: 3, 2
01-24 00:16:00.982 17588 17618 I python  : [INFO   ] [GL          ] Texture max size <16384>
01-24 00:16:00.983 17588 17618 I python  : [INFO   ] [GL          ] Texture max units <16>
01-24 00:16:01.040 17588 17618 I python  : [INFO   ] [Window      ] auto add sdl2 input provider
01-24 00:16:01.041 17588 17618 I python  : [INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
01-24 00:16:01.063 17588 17618 I python  :  Traceback (most recent call last):
01-24 00:16:01.063 17588 17618 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/urllib3/connection.py", line 174, in _new_conn
01-24 00:16:01.063 17588 17618 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/urllib3/util/connection.py", line 72, in create_connection
01-24 00:16:01.064 17588 17618 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/python3/arm64-v8a__ndk_target_21/python3/Lib/socket.py", line 954, in getaddrinfo
01-24 00:16:01.064 17588 17618 I python  :  socket.gaierror: [Errno 7] No address associated with hostname
01-24 00:16:01.065 17588 17618 I python  :
01-24 00:16:01.065 17588 17618 I python  :  During handling of the above exception, another exception occurred:
01-24 00:16:01.065 17588 17618 I python  :
01-24 00:16:01.065 17588 17618 I python  :  Traceback (most recent call last):
01-24 00:16:01.066 17588 17618 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/urllib3/connectionpool.py", line 703, in urlopen
01-24 00:16:01.066 17588 17618 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/urllib3/connectionpool.py", line 386, in _make_request
01-24 00:16:01.066 17588 17618 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/urllib3/connectionpool.py", line 1042, in _validate_conn
01-24 00:16:01.067 17588 17618 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/urllib3/connection.py", line 358, in connect
01-24 00:16:01.067 17588 17618 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/urllib3/connection.py", line 186, in _new_conn
01-24 00:16:01.068 17588 17618 I python  :  urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x727d79aaf0>: Failed to establish a new connection: [Errno 7] No address associated with hostname
01-24 00:16:01.068 17588 17618 I python  :
01-24 00:16:01.068 17588 17618 I python  :  During handling of the above exception, another exception occurred:
01-24 00:16:01.069 17588 17618 I python  :
01-24 00:16:01.069 17588 17618 I python  :  Traceback (most recent call last):
01-24 00:16:01.069 17588 17618 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/requests/adapters.py", line 489, in send
01-24 00:16:01.070 17588 17618 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/urllib3/connectionpool.py", line 787, in urlopen
01-24 00:16:01.070 17588 17618 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/urllib3/util/retry.py", line 592, in increment
01-24 00:16:01.070 17588 17618 I python  :  urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='cdn.nba.com', port=443): Max retries exceeded with url: /static/json/liveData/scoreboard/todaysScoreboard_00.json (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x727d79aaf0>: Failed to establish a new connection: [Errno 7] No address associated with hostname'))
01-24 00:16:01.071 17588 17618 I python  :
01-24 00:16:01.071 17588 17618 I python  :  During handling of the above exception, another exception occurred:
01-24 00:16:01.071 17588 17618 I python  :
01-24 00:16:01.071 17588 17618 I python  :  Traceback (most recent call last):
01-24 00:16:01.072 17588 17618 I python  :    File "/content/.buildozer/android/app/main.py", line 220, in <module>
01-24 00:16:01.072 17588 17618 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/kivy/app.py", line 954, in run
01-24 00:16:01.073 17588 17618 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/kivy/app.py", line 924, in _run_prepare
01-24 00:16:01.073 17588 17618 I python  :    File "/content/.buildozer/android/app/main.py", line 121, in build
01-24 00:16:01.074 17588 17618 I python  :    File "/content/.buildozer/android/app/main.py", line 74, in get_games
01-24 00:16:01.074 17588 17618 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/nba_api/live/nba/endpoints/scoreboard.py", line 24, in __init__
01-24 00:16:01.074 17588 17618 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/nba_api/live/nba/endpoints/scoreboard.py", line 27, in get_request
01-24 00:16:01.075 17588 17618 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/nba_api/library/http.py", line 130, in send_api_request
01-24 00:16:01.075 17588 17618 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/requests/api.py", line 73, in get
01-24 00:16:01.076 17588 17618 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/requests/api.py", line 59, in request
01-24 00:16:01.076 17588 17618 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/requests/sessions.py", line 587, in request
01-24 00:16:01.077 17588 17618 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/requests/sessions.py", line 701, in send
01-24 00:16:01.077 17588 17618 I python  :    File "/content/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/nbaV18/arm64-v8a/requests/adapters.py", line 565, in send
01-24 00:16:01.078 17588 17618 I python  :  requests.exceptions.ConnectionError: HTTPSConnectionPool(host='cdn.nba.com', port=443): Max retries exceeded with url: /static/json/liveData/scoreboard/todaysScoreboard_00.json (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x727d79aaf0>: Failed to establish a new connection: [Errno 7] No address associated with hostname'))
01-24 00:16:01.078 17588 17618 I python  : Python for android ended.

Robert

unread,
Jan 23, 2023, 7:13:41 PM1/23/23
to Kivy users support
Read about Android permissions.

Alon Treitel

unread,
Jan 24, 2023, 12:28:30 AM1/24/23
to Kivy users support
what do you mean can you explain a llitle more?

Pete Kovac

unread,
Jan 26, 2023, 10:43:08 AM1/26/23
to Kivy users support
Once you start working with Android its another ballgame from your python project - you're entering into the world of Android - when you use Buildozer you have left the python world. With that comes other challenges - mainly you need to ask android for permissions to do certain things. In your case you're asking the app to go and connect to the outside world - but Android needes to know that you actually can. So we have to give permissions in both the code as well as in the Buildozer file itself. You'll need to research what permissions you need and where for Android to be happy.

A high level view point, that is in my Android code is in the main.py file
from android.permissions import request_permissions, Permission

in one of the classes where I need to invoke Android to do something I call it out
request_permissions(
[Permission.VIBRATE, Permission.CHANGE_WIFI_STATE, Permission.ACCESS_WIFI_STATE, Permission.INTERNET,
Permission.ACCESS_FINE_LOCATION, Permission.ACCESS_COARSE_LOCATION, Permission.ACCESS_NETWORK_STATE])

This tells Android that I need the following in this class - it pops up a user prompt asking the user if the user really wants to grant these permissions

Then finally you have to declare it in your Buildozer config file
...
# (str) Adaptive icon of the application (used if Android API level is 26+ at runtime)
#icon.adaptive_foreground.filename = %(source.dir)s/data/icon_fg.png
#icon.adaptive_background.filename = %(source.dir)s/data/icon_bg.png

# (list) Permissions
android.permissions = INTERNET, VIBRATE, CHANGE_WIFI_STATE,ACCESS_WIFI_STATE,ACCESS_FINE_LOCATION,ACCESS_COARSE_LOCATION,ACCESS_NETWORK_STATE


# (list) features (adds uses-feature -tags to manifest)
#android.features = android.hardware.usb.host
...

That should put you on the right path to start to research - it should be that difficult since you're just going out and grabbing API data vs using the internal hardware like I am. 

Good luck and keep with it - you'll get there sooner or later. 


Reply all
Reply to author
Forward
0 new messages