GithubHelp home page GithubHelp logo

artemsbulgakov / buildozer-action Goto Github PK

View Code? Open in Web Editor NEW
68.0 2.0 62.0 501.39 MB

GitHub Action to build your Python application with Buildozer

License: MIT License

Dockerfile 10.62% Python 86.87% kvlang 2.51%

buildozer-action's Introduction

Buildozer action

Build workflow Build (with Buildozer master) workflow

Build your Python/Kivy applications for Android with Buildozer. This action uses official Buildozer Docker image, but adds some features and patches to use in GitHub Actions.

Full workflow

Full workflow with uploading binaries as artifact.

name: Build
on: [push, pull_request]

jobs:
  # Build job. Builds app for Android with Buildozer
  build-android:
    name: Build for Android
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Build with Buildozer
        uses: ArtemSBulgakov/buildozer-action@v1
        id: buildozer
        with:
          workdir: test_app
          buildozer_version: stable

      - name: Upload artifacts
        uses: actions/upload-artifact@v2
        with:
          name: package
          path: ${{ steps.buildozer.outputs.filename }}
Full workflow with uploading binaries to branch

Builds app and uploads to the data branch. Also copy .ci/move_binary.py script and create data branch as described above.

name: Build
on:
  push:
    branches-ignore:
      - data
      - gh-pages
    tags:
      - '**'
  pull_request:
    branches-ignore:
      - data
      - gh-pages

jobs:
  # Build job. Builds app for Android with Buildozer
  build-android:
    name: Build for Android
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v2
        with:
          path: master

      - name: Build with Buildozer
        uses: ArtemSBulgakov/buildozer-action@v1
        id: buildozer
        with:
          repository_root: master
          workdir: test_app
          buildozer_version: stable

      - name: Upload artifacts
        uses: actions/upload-artifact@v2
        with:
          name: package
          path: ${{ steps.buildozer.outputs.filename }}

      - name: Checkout
        uses: actions/checkout@v2
        with:
          path: data
          ref: data # Branch name

      - name: Set up Python
        uses: actions/setup-python@v2
        with:
          python-version: 3.7
          architecture: x64

      - name: Push binary to data branch
        if: github.event_name == 'push'
        run: python master/.ci/move_binary.py "${{ steps.buildozer.outputs.filename }}" master data bin

Examples

You can search GitHub for repositories that use this action.

Some great examples:

  • kivymd/KivyMD
    • build several demo apps
    • push binaries to branch at another repository
    • push binaries by the account of bot (GitHub user)
    • set numeric version with environment variable

Inputs

command

Required Command to start Buildozer.

  • Default: buildozer android debug (iOS and OSX is not supported because Docker cannot run on MacOS).
  • For more commands use ; as delimiter: python3 pre_buildozer.py; buildozer android debug.

repository_root

Required Path to cloned repository.

  • Default: . (GitHub workspace).
  • Set to directory name if you specified path for actions/checkout action.

workdir

Required Working directory where buildozer.spec is located.

  • Default: . (top directory).
  • Set to src if buildozer.spec is in src directory.

buildozer_version

Required Version of Buildozer to install.

  • Default: stable (latest release on PyPI, pip install buildozer).
  • Set to master to use master branch (pip install git+https://github.com/kivy/buildozer.git@master).
  • Set to tag name 1.2.0 to use specific release (pip install git+https://github.com/kivy/[email protected]).
  • Set to commit hash 94cfcb8 to use specific commit (pip install git+https://github.com/kivy/buildozer.git@94cfcb8).
  • Set to git+ address git+https://github.com/username/buildozer.git@master to use fork.
  • Set to directory name ./my_buildozer to install from local path (pip install ./my_buildozer).
  • Set to nothing '' to not install buildozer

Outputs

filename

Filename of built package relative to GITHUB_WORKSPACE.

  • Example: master/test_app/bin/testapp-0.1-armeabi-v7a-debug.apk

Environment variables

You can set environment variables to change Buildozer settings. See Buildozer Readme for more information.

Example (change Android architecture):

env:
  APP_ANDROID_ARCH: armeabi-v7a

Caching

You can set up cache for Buildozer global and local directories. Global directory is in root of repository. Local directory is in workdir.

  • Global: .buildozer-global (sdk, ndk, platform-tools)
  • Local: test_app/.buildozer (dependencies, build temp, not recommended to cache)

I don't recommend to cache local buildozer directory because Buildozer doesn't automatically update dependencies to latest version.

Use cache only if it speeds up your workflow! Usually this only adds 1-3 minutes to job running time, so I don't use it.

Example:

- name: Cache Buildozer global directory
  uses: actions/cache@v2
  with:
    path: .buildozer_global
    key: buildozer-global-${{ hashFiles('test_app/buildozer.spec') }} # Replace with your path

Example usage

- name: Build with Buildozer
  uses: ArtemSBulgakov/buildozer-action@v1
  id: buildozer
  with:
    command: buildozer android debug
    workdir: src
    buildozer_version: stable

Uploading binaries

As artifact

You can upload binary as artifact to run. You will be able to download it by clicking on "Artifacts" button on run page (where you see logs).

- name: Upload artifacts
  uses: actions/upload-artifact@v2
  with:
    name: package
    path: ${{ steps.buildozer.outputs.filename }}

To branch

Artifacts use GitHub Storage and you have to pay for private repositories when limit exceeded. Another way to upload binary is pushing it to branch in your repository.

Copy .ci/move_binary.py script, edit it if you want and add this to your workflow:

- name: Checkout
  uses: actions/checkout@v2
  with:
    path: data
    ref: data # Branch name

- name: Set up Python
  uses: actions/setup-python@v2
  with:
    python-version: 3.7
    architecture: x64

- name: Push binary to data branch
  if: github.event_name == 'push'
  run: python master/.ci/move_binary.py "${{ steps.buildozer.outputs.filename }}" master data bin

Also you need to create data branch:

git checkout --orphan data
echo # Branch `data` > README.md
git add README.md
git commit -m "Add Readme"
git push origin data

Action versioning

Currently it is recommended to use v1 tag. This tag updates when new v1.x.x version released. All v1 versions will have backward compatibility. You will get warning when v2 will be released.

How to build packages locally

Use official Buildozer's Docker image (repository).

Contributing

Create Bug Request if you have problems with running this action or Feature Request if you have ideas how to improve it. If you know how to fix something, feel free to fork repository and create Pull Request. Test your changes in fork before creating Pull Request.

Format python files:

pip install pre-commit
pre-commit install

# Format all files
pre-commit run --all-files

License

ArtemSBulgakov/buildozer-action is released under the terms of the MIT License.

buildozer-action's People

Contributors

artemsbulgakov avatar chaiwa-berian avatar sobottasgithub avatar tmolitor-stud-tu avatar tshirtman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

buildozer-action's Issues

move_binary.py not in sync with README example for pushing to data branch

Run python master/.ci/move_binary.py "master/bin/codingtherapy-0.1-armeabi-v7a-debug.apk" master data
Traceback (most recent call last):
  File "master/.ci/move_binary.py", line 12, in <module>
    directory = sys.argv[4]
IndexError: list index out of range
Error: Process completed with exit code 1.

please add a good example for caching

There is a example for caching but not explained where to put it.

I'm using the fork of this repo, putting the cache part in anywhere in job section in the build.yml fails to cache since the main buildozer job is auto cleaning the files

autopoint is needed - error

When trying to build a app which uses pandas gives following error
Log:

  STDOUT:
autoreconf: Entering directory `.'
autoreconf: running: autopoint --force
Can't exec "autopoint": No such file or directory at /usr/share/autoconf/Autom4te/FileUtils.pm line 345.
autoreconf: failed to run autopoint: No such file or directory
autoreconf: autopoint is needed because this package uses Gettext

Workflow error "No jobs defined in jobs"

I use

name: Build
on: [push, pull_request]

jobs:
# Build job. Builds app for Android with Buildozer
build-android:
  name: Build for Android
  runs-on: ubuntu-latest

  steps:
    - name: Checkout
      uses: actions/checkout@v2

    - name: Build with Buildozer
      uses: ArtemSBulgakov/buildozer-action@v1
      id: buildozer
      with:
        #workdir: .
        buildozer_version: stable

    - name: Upload artifacts
      uses: actions/upload-artifact@v2
      with:
        name: package
        path: ${{ steps.buildozer.outputs.filename }}

but not working , when I clicked Actions it goes Failure

Buildozer doesnt include all of sqlalchemy

Versions

  • Python: 3.8.5
  • OS: ubuntu-latest github actions
  • Buildozer: ArtemSBulgakov/buildozer-action@v1

Description

Build an Android App that uses sqlalchemy to connect to a mysql database using pymysql

Somehow it doesnt find a file from sqlalchemy
Line in Logs:

04-24 15:11:16.977 28851  6381 I python  :  ImportError: cannot import name 'registry' from 'sqlalchemy.orm' (/data/user/0/ml.daniel.kiosk/files/app/_python_bundle/site-packages/sqlalchemy/orm/__init__.pyc)

works fine on windows just running it using python 3.10

buildozer.spec

Command:

buildozer android debug

Spec file:

[app]

# (str) Title of your application
title = Kiosk App

# (str) Package name
package.name = kiosk

# (str) Package domain (needed for android/ios packaging)
package.domain = ml.daniel

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

# (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,sqlalchemy,pymysql,registry

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

# (list) Garden requirements
#garden_requirements =

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

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

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

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

# (str) Android NDK version to use
#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 =

# (list) Gradle dependencies to add (currently works only with sdl2_gradle
# bootstrap)
#android.gradle_dependencies =

# (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 <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) 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.archs = 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 = kivy

# (str) python-for-android branch to use, defaults to master
#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: <lastname> <firstname> (<hexstring>)"

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

Logs

from logcat

04-24 15:11:12.272  5109  7329 I ActivityTaskManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=ml.daniel.kiosk cmp=ml.daniel.kiosk/org.kivy.android.PythonActivity} from uid 10106
04-24 15:11:12.284  5109  7329 D ActivityTaskManager: TaskLaunchParamsModifier:task=null activity=ActivityRecord{8206424 u0 ml.daniel.kiosk/org.kivy.android.PythonActivity display-area-from-source=DefaultTaskDisplayArea@249512069 task-display-area=DefaultTaskDisplayArea@249512069 display-area-windowing-mode=1
04-24 15:11:12.285  5109  7329 D ActivityTaskManager: TaskLaunchParamsModifier:task=null activity=ActivityRecord{8206424 u0 ml.daniel.kiosk/org.kivy.android.PythonActivity t-1} display-area-from-source=DefaultTaskDisplayArea@249512069 task-display-area=DefaultTaskDisplayArea@249512069 display-area-windowing-mode=1 inherit-from-source=fullscreen activity-options-fullscreen=Rect(0, 0 - 0, 0) non-freeform-display maximized-bounds
04-24 15:11:12.285  5109  5357 D DexPreloader: create a new DexPreloadTask pkg:ml.daniel.kiosk  path:/data/app/~~HZJ6jXhOUCl4sKkM_VEgUA==/ml.daniel.kiosk-neVlAlyH2pheeH1RkcFTPg==
04-24 15:11:12.296  5109  7329 D ActivityTaskManager: TaskLaunchParamsModifier:task=Task{c25cb8d #2656 visible=false type=standard mode=fullscreen translucent=true A=10480:ml.daniel.kiosk U=0 StackId=2656 sz=0} activity=ActivityRecord{8206424 u0 ml.daniel.kiosk/org.kivy.android.PythonActivity t-1} display-from-task=0 task-display-area=DefaultTaskDisplayArea@249512069 display-area-windowing-mode=1 inherit-from-source=fullscreen activity-options-fullscreen=Rect(0, 0 - 0, 0) non-freeform-display maximized-bounds
04-24 15:11:12.298  4849  6261 I SurfaceFlinger: id=11149 createSurf (0x0),-1 flag=80004, ActivityRecord{8206424 u0 ml.daniel.kiosk/org.kivy.android.PythonActivity t2656}#0
04-24 15:11:12.306  5109  7329 D WindowManager: CustomStartingWindowData: className=org.kivy.android.PythonActivity, packageName=ml.daniel.kiosk, taskUserId=0
04-24 15:11:12.308  5109  7329 D ActivityTaskManager: resumeTopActivityInnerLocked, prev=ActivityRecord{8206424 u0 ml.daniel.kiosk/org.kivy.android.PythonActivity t2656} next=ActivityRecord{8206424 u0 ml.daniel.kiosk/org.kivy.android.PythonActivity t2656} shouldSleepActivities()=false mLastPausedActivity=null caller=com.android.server.wm.ActivityStack.resumeTopActivityInnerLocked:2089 com.android.server.wm.ActivityStack.resumeTopActivityUncheckedLocked:1979 com.android.server.wm.RootWindowContainer.resumeFocusedStacksTopActivities:2725 com.android.server.wm.ActivityStarter.startActivityInner:2857 com.android.server.wm.ActivityStarter.startActivityUnchecked:2275 com.android.server.wm.ActivityStarter.executeRequest:1691 com.android.server.wm.ActivityStarter.execute:914 com.android.server.wm.ActivityTaskManagerService.startActivityAsUser:1738 com.android.server.wm.ActivityTaskManagerService.startActivityAsUser:1588 com.android.server.wm.ActivityTaskManagerService.startActivity:1540 android.app.IActivityTaskManager$Stub.onTransact:1743 android.os.Binder.execTransactInternal:1190 android.os.Binder.execTransact:1159 <bottom of call stack> <bottom of call stack> <bottom of call stack> <bottom of call stack> <bottom of call stack> <bottom of call stack> <bottom of call stack>
04-24 15:11:12.309  5109  7329 D MARsPolicyManager: onPackageResumedFG pkgName = ml.daniel.kiosk, userId = 0
04-24 15:11:12.320  5109  7311 D ActivityTaskManager: resumeTopActivityInnerLocked, prev=ActivityRecord{df41072 u0 com.google.android.packageinstaller/com.android.packageinstaller.InstallSuccess t2655 f}} next=ActivityRecord{8206424 u0 ml.daniel.kiosk/org.kivy.android.PythonActivity t2656} shouldSleepActivities()=false mLastPausedActivity=null caller=com.android.server.wm.ActivityStack.resumeTopActivityInnerLocked:2089 com.android.server.wm.ActivityStack.resumeTopActivityUncheckedLocked:1979 com.android.server.wm.RootWindowContainer.resumeFocusedStacksTopActivities:2725 com.android.server.wm.ActivityStack.completePauseLocked:1656 com.android.server.wm.ActivityRecord.activityPaused:6251 com.android.server.wm.ActivityTaskManagerService.activityPaused:2588 android.app.IActivityTaskManager$Stub.onTransact:2265 android.os.Binder.execTransactInternal:1190 android.os.Binder.execTransact:1159 <bottom of call stack> <bottom of call stack> <bottom of call stack> <bottom of call stack> <bottom of call stack> <bottom of call stack> <bottom of call stack> <bottom of call stack> <bottom of call stack> <bottom of call stack> <bottom of call stack>
04-24 15:11:12.320  5109  7311 D MARsPolicyManager: onPackageResumedFG pkgName = ml.daniel.kiosk, userId = 0
04-24 15:11:12.322  5109  7311 D MARsPolicyManager: onPackageResumedFG pkgName = ml.daniel.kiosk, userId = 0
04-24 15:11:12.330  5109  5154 D StorageManagerService: getExternalStorageMountMode: uid=10480 packageName=ml.daniel.kiosk
04-24 15:11:12.336  4849  5398 I SurfaceFlinger: id=11150 createSurf (0x0),-1 flag=80004, 73a369f Splash Screen ml.daniel.kiosk#0
04-24 15:11:12.348  5109  5155 V WindowManager: Relayout Window{73a369f u0 Splash Screen ml.daniel.kiosk}: viewVisibility=0 req=2000x1200 d0
04-24 15:11:12.359  5109  5155 D WindowManager: isScreenshotDisabledLocked - win: Window{73a369f u0 Splash Screen ml.daniel.kiosk}
04-24 15:11:12.360  4849  6261 I SurfaceFlinger: id=11151 createSurf (2000x1200),1 flag=404, Splash Screen ml.daniel.kiosk#0
04-24 15:11:12.361  5109  5155 D WindowManager: makeSurface duration=1 name=Splash Screen ml.daniel.kiosk
04-24 15:11:12.379  5109  5162 I ActivityManager: Start proc 28851:ml.daniel.kiosk/u0a480 for pre-top-activity {ml.daniel.kiosk/org.kivy.android.PythonActivity}
04-24 15:11:12.386  5109  5155 D WindowManager: finishDrawingWindow: Window{73a369f u0 Splash Screen ml.daniel.kiosk} mDrawState=DRAW_PENDING
04-24 15:11:12.479  5109  5875 I ActivityManager: DSS OFF for ml.daniel.kiosk
04-24 15:11:12.484  5109  5875 D ActivityManager: attachApplicationLocked() app=ProcessRecord{4771e54 28851:ml.daniel.kiosk/u0a480} app.isolatedEntryPoint=null instr2=null
04-24 15:11:12.495  5109  5875 D PkgDataHelper: notifyAppCreate(), pkgName: ml.daniel.kiosk, sendRet: true
04-24 15:11:12.495  5109  5267 D GameManagerService: onLooperPrepared(), msg: MSG_APP_CREATE, pkgName: ml.daniel.kiosk
04-24 15:11:12.501  5109  5267 D GameManagerService: onLooperPrepared(), msg: MSG_TASK_FOCUSED, focusedComponent: ComponentInfo{ml.daniel.kiosk/org.kivy.android.PythonActivity}
04-24 15:11:12.501  5109  5267 D GameManagerService:   handleTaskFocused(), pkgName: ml.daniel.kiosk, clsName: org.kivy.android.PythonActivity, userID:0
04-24 15:11:12.502  5109  5875 D MARsPolicyManager: onPackageResumedFG pkgName = ml.daniel.kiosk, userId = 0
04-24 15:11:12.503  5109  5267 D GameManagerService:   handleResume(). pkgName: ml.daniel.kiosk, isTunableApp: null
04-24 15:11:12.503  5109  5267 D GameManagerService: notifyFocusInOut(). of pkg: ml.daniel.kiosk, type: 4, isMinimized: false, isTunableApp: false
04-24 15:11:12.559 28851 28851 D ActivityThread: handleBindApplication()++ app=ml.daniel.kiosk
04-24 15:11:12.573  5109  5154 V ActivityManager: Changed top to 10480,ProcessRecord{4771e54 28851:ml.daniel.kiosk/u0a480}
04-24 15:11:12.586  5109  5152 D SehCodecSolutionService: Update top [ml.daniel.kiosk]
04-24 15:11:12.587  5109  5357 D PkgPredictorService: ml.daniel.kiosk go to foreground!
04-24 15:11:12.588  5109  5357 D PkgPredictorService: previous pkgs: ml.daniel.kiosk,org.joa.zipperplus,com.android.chrome running pkg: ml.daniel.kiosk, uid: 0 is system: false
04-24 15:11:12.588  5109  5357 D PkgPredictorService-Collector:  (hour:15 day:1 previous:[ml.daniel.kiosk, org.joa.zipperplus, com.android.chrome] activityName:unknown running:ml.daniel.kiosk userId:0 screenOrientation:1 wifi:1 bt:1 predictTime:0 apkVersion:0.1 consumeTime:-1 preloaded:false>)
04-24 15:11:12.588  5109  5357 D PkgPredictorService-NapPreloadController: User using: ml.daniel.kiosk
04-24 15:11:12.589  5109  5357 D DexPreloader: ml.daniel.kiosk pid:28851 dex profile begin
04-24 15:11:12.591  5109  5154 D SemGameManager: isGamePackage(), pkgName=ml.daniel.kiosk
04-24 15:11:12.591  5109  5154 D GameManagerService: identifyGamePackage. ml.daniel.kiosk, mCurrentUserId: 0, callerUserId: 0
04-24 15:11:12.591  5109  5154 D PkgDataHelper: getGamePkgData(). ml.daniel.kiosk
04-24 15:11:12.592  5109  5154 D GameManagerService: identifyGamePackage. ml.daniel.kiosk, mCurrentUserId: 0, callerUserId: 0
04-24 15:11:12.592  5109  5154 D PkgDataHelper: getGamePkgData(). ml.daniel.kiosk
04-24 15:11:12.593  5109  5154 D GameManagerService: noteResumeComponent(), received resumed-component: ml.daniel.kiosk
04-24 15:11:12.593  5109  5154 I GameSDK@LifeCycle: noteResumeComponent(): package name  : ml.daniel.kiosk
04-24 15:11:12.593  5109  5267 D GameManagerService: onLooperPrepared(), msg: MSG_APP_RESUME, resumeComponent: ComponentInfo{ml.daniel.kiosk/org.kivy.android.PythonActivity}
04-24 15:11:12.602  9419  9419 I Utils   : HomePackage : com.sec.android.app.launcher, resumePackageName : ml.daniel.kiosk
04-24 15:11:12.612  4849  4849 D SurfaceFlinger:      CLIENT | 0x710965da80 | 0002 | RGBA_8888    |    0.0    0.0 2000.0 1106.0 |    0    0 1106 2000 | Splash Screen ml.daniel.kiosk#0
04-24 15:11:12.638  4849  4849 D SurfaceFlinger:      CLIENT | 0x710965da80 | 0002 | RGBA_8888    |    0.0    0.0 2000.0 1145.0 |    0    0 1145 2000 | Splash Screen ml.daniel.kiosk#0
04-24 15:11:12.641  5109  5350 W SemWifiTransportLayerUtils: getApplicationCategory - IOException ml.daniel.kiosk
04-24 15:11:12.641  5109  5350 W System.err: java.io.FileNotFoundException: https://play.google.com/store/apps/details?id=ml.daniel.kiosk&hl=en
04-24 15:11:12.658 28851 28851 D LoadedApk: LoadedApk::makeApplication() appContext=android.app.ContextImpl@ec4156f appContext.mOpPackageName=ml.daniel.kiosk appContext.mBasePackageName=ml.daniel.kiosk appContext.mPackageInfo=android.app.LoadedApk@adf227c
04-24 15:11:12.804  4849  4849 D SurfaceFlinger:      CLIENT | 0x710965da80 | 0002 | RGBA_8888    |    0.0    0.0 2000.0 1194.0 |    0    0 1194 2000 | Splash Screen ml.daniel.kiosk#0
04-24 15:11:12.865 28851  6365 V pythonutil: Unpacking /data/app/~~HZJ6jXhOUCl4sKkM_VEgUA==/ml.daniel.kiosk-neVlAlyH2pheeH1RkcFTPg==/lib/arm/libpybundle app
04-24 15:11:12.866 28851  6365 V pythonutil: Extracting /data/app/~~HZJ6jXhOUCl4sKkM_VEgUA==/ml.daniel.kiosk-neVlAlyH2pheeH1RkcFTPg==/lib/arm/libpybundle assets.
04-24 15:11:12.882  4849  4884 I SurfaceFlinger: id=11166 createSurf (0x0),-1 flag=80004, d159798 ml.daniel.kiosk/org.kivy.android.PythonActivity#0
04-24 15:11:12.882  5109  7311 D WindowManager: isScreenshotDisabledLocked - win: Window{d159798 u0 ml.daniel.kiosk/org.kivy.android.PythonActivity}
04-24 15:11:12.906  4849  4849 D SurfaceFlinger:      DEVICE | 0x710965da80 | 0002 | RGBA_8888    |    0.0    0.0 2000.0 1200.0 |    0    0 1200 2000 | Splash Screen ml.daniel.kiosk#0
04-24 15:11:12.909  5109  7311 V WindowManager: Relayout Window{d159798 u0 ml.daniel.kiosk/org.kivy.android.PythonActivity}: viewVisibility=0 req=2000x1200 d0
04-24 15:11:12.911  5109  7311 D WindowManager: isScreenshotDisabledLocked - win: Window{d159798 u0 ml.daniel.kiosk/org.kivy.android.PythonActivity}
04-24 15:11:12.911  4849  4884 I SurfaceFlinger: id=11167 createSurf (2000x1200),1 flag=404, ml.daniel.kiosk/org.kivy.android.PythonActivity$_28851#0
04-24 15:11:12.912  5109  7311 D WindowManager: makeSurface duration=1 name=ml.daniel.kiosk/org.kivy.android.PythonActivity$_28851
04-24 15:11:12.916  5109  7311 V WindowManager: Changing focus from null to Window{d159798 u0 ml.daniel.kiosk/org.kivy.android.PythonActivity} displayId=0 Callers=com.android.server.wm.RootWindowContainer.updateFocusedWindowLocked:575 com.android.server.wm.WindowManagerService.updateFocusedWindowLocked:6338 com.android.server.wm.WindowManagerService.relayoutWindow:2726 com.android.server.wm.Session.relayout:240
04-24 15:11:12.919  5109  7311 D MARsPolicyManager: onPackageResumedFG pkgName = ml.daniel.kiosk, userId = 0
04-24 15:11:12.937  5109  5155 D ActivityTaskManager: finishFixedRotationTransform, r=ActivityRecord{8206424 u0 ml.daniel.kiosk/org.kivy.android.PythonActivity t2656}, caller=com.android.server.wm.WindowToken.finishFixedRotationTransform:669 com.android.server.wm.DisplayContent$FixedRotationTransitionListener.onAppTransitionFinishedLocked:7222 com.android.server.wm.AppTransition.notifyAppTransitionFinishedLocked:553 com.android.server.wm.ActivityRecord.onAnimationFinished:7702 com.android.server.wm.WindowContainer.doAnimationFinished:2704
04-24 15:11:12.941  4849  5995 I Layer   : id=11149 removeFromCurrentState ActivityRecord{8206424 u0 ml.daniel.kiosk/org.kivy.android.PythonActivity t2656}#0 (148)
04-24 15:11:12.941  4849  5995 I Layer   : id=11166 removeFromCurrentState d159798 ml.daniel.kiosk/org.kivy.android.PythonActivity#0 (148)
04-24 15:11:12.941  4849  5995 I Layer   : id=11167 removeFromCurrentState ml.daniel.kiosk/org.kivy.android.PythonActivity$_28851#0 (148)
04-24 15:11:12.941  4849  5995 I Layer   : id=11150 removeFromCurrentState 73a369f Splash Screen ml.daniel.kiosk#0 (148)
04-24 15:11:12.941  4849  5995 I Layer   : id=11151 removeFromCurrentState Splash Screen ml.daniel.kiosk#0 (148)
04-24 15:11:12.941  4849  5995 I Layer   : id=11149 addToCurrentState ActivityRecord{8206424 u0 ml.daniel.kiosk/org.kivy.android.PythonActivity t2656}#0 (148)
04-24 15:11:12.941  4849  5995 I Layer   : id=11166 addToCurrentState d159798 ml.daniel.kiosk/org.kivy.android.PythonActivity#0 (148)
04-24 15:11:12.941  4849  5995 I Layer   : id=11167 addToCurrentState ml.daniel.kiosk/org.kivy.android.PythonActivity$_28851#0 (148)
04-24 15:11:12.941  4849  5995 I Layer   : id=11150 addToCurrentState 73a369f Splash Screen ml.daniel.kiosk#0 (148)
04-24 15:11:12.941  4849  5995 I Layer   : id=11151 addToCurrentState Splash Screen ml.daniel.kiosk#0 (148)
04-24 15:11:12.958  4849  4849 D SurfaceFlinger:      DEVICE | 0x710965da80 | 0002 | RGBA_8888    |    0.0    0.0 2000.0 1200.0 |    0    0 1200 2000 | Splash Screen ml.daniel.kiosk#0
04-24 15:11:13.136  5109  7329 D WindowManager: finishDrawingWindow: Window{d159798 u0 ml.daniel.kiosk/org.kivy.android.PythonActivity} mDrawState=DRAW_PENDING
04-24 15:11:13.142  5109  5155 D PkgPredictorService: pkg:ml.daniel.kiosk activity:org.kivy.android.PythonActivity thisTime:870
04-24 15:11:13.148  5109  5160 D ArtManagerInternalImpl: /data/misc/iorapd/ml.daniel.kiosk/10211/org.kivy.android.PythonActivity/compiled_traces/compiled_trace.pb doesn't exist
04-24 15:11:13.156 28851 28851 V InputMethodManager: Starting input: tba=ml.daniel.kiosk ic=null mNaviBarColor -16711423 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
04-24 15:11:13.157  5109  5155 I WindowManager: Reparenting to leash, surface=Surface(name=73a369f Splash Screen ml.daniel.kiosk)/@0x2c43b6b, leashParent=Surface(name=ActivityRecord{8206424 u0 ml.daniel.kiosk/org.kivy.android.PythonActivity t2656})/@0x76a16c8
04-24 15:11:13.157  4849  4885 I SurfaceFlinger: id=11170 createSurf (0x0),-1 flag=24000, Surface(name=73a369f Splash Screen ml.daniel.kiosk)/@0x2c43b6b - animation-leash#0
04-24 15:11:13.158  5109  5155 D WindowManager: makeSurface duration=1 leash=Surface(name=Surface(name=73a369f Splash Screen ml.daniel.kiosk)/@0x2c43b6b - animation-leash)/@0x1ccd361
04-24 15:11:13.168 28851 28851 V InputMethodManager: Starting input: tba=ml.daniel.kiosk ic=null mNaviBarColor -16711423 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
04-24 15:11:13.199  5109  5160 I ActivityTaskManager: Displayed ml.daniel.kiosk/org.kivy.android.PythonActivity: +870ms
04-24 15:11:13.199  5109  5160 I Pageboost: Launch time gathered : pid 28851 ml.daniel.kiosk 870
04-24 15:11:13.210  4849  4849 D SurfaceFlinger:      DEVICE | 0x710965cf40 | 0002 | RGBA_8888    |    0.0    0.0 1200.0 2000.0 |    0    0 1200 2000 | ml.daniel.kiosk/org.kivy.android.PythonActivity$_28851#0
04-24 15:11:13.210  4849  4849 D SurfaceFlinger:      DEVICE | 0x710965da80 | 0002 | RGBA_8888    |    0.0    0.0 2000.0 1200.0 |    0    0 1200 2000 | Splash Screen ml.daniel.kiosk#0
04-24 15:11:13.213  5109  5155 I WindowManager: Reparenting to original parent: Surface(name=ActivityRecord{8206424 u0 ml.daniel.kiosk/org.kivy.android.PythonActivity t2656})/@0x76a16c8, destroy=true, surface=Surface(name=73a369f Splash Screen ml.daniel.kiosk)/@0x2c43b6b
04-24 15:11:13.214  5109  5155 E WindowManager: win=Window{73a369f u0 Splash Screen ml.daniel.kiosk EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=true win.mRemoveOnExit=true win.mViewVisibility=0 caller=com.android.server.wm.ActivityRecord.destroySurfaces:5699 com.android.server.wm.ActivityRecord.destroySurfaces:5680 com.android.server.wm.WindowState.onExitAnimationDone:5706 com.android.server.wm.WindowStateAnimator.onAnimationFinished:335 com.android.server.wm.WindowState.onAnimationFinished:6179 com.android.server.wm.-$$Lambda$dwJG8BAnLlvKNGuDY9U3-haNY4M.onAnimationFinished:2 com.android.server.wm.SurfaceAnimator.lambda$getFinishedCallback$0$SurfaceAnimator:112
04-24 15:11:13.215  5109  5155 I WindowManager: Destroying surface Surface(name=Splash Screen ml.daniel.kiosk)/@0x134c1f8 called by com.android.server.wm.WindowStateAnimator.destroySurface:1804 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:771 com.android.server.wm.WindowState.destroySurfaceUnchecked:3980 com.android.server.wm.WindowState.destroySurface:3954 com.android.server.wm.ActivityRecord.destroySurfaces:5699 com.android.server.wm.ActivityRecord.destroySurfaces:5680 com.android.server.wm.WindowState.onExitAnimationDone:5706 com.android.server.wm.WindowStateAnimator.onAnimationFinished:335
04-24 15:11:13.217  4849  4885 I Layer   : id=11151 removeFromCurrentState Splash Screen ml.daniel.kiosk#0 (141)
04-24 15:11:13.224  4849  4885 I Layer   : id=11150 removeFromCurrentState 73a369f Splash Screen ml.daniel.kiosk#0 (141)
04-24 15:11:13.224  4849  4885 I Layer   : id=11170 removeFromCurrentState Surface(name=73a369f Splash Screen ml.daniel.kiosk)/@0x2c43b6b - animation-leash#0 (141)
04-24 15:11:13.224  4849  4885 I SurfaceFlinger: id=11150 Removed 73a369f Splash Screen ml.daniel.kiosk#0 (141)
04-24 15:11:13.224  4849  4885 I SurfaceFlinger: id=11170 Removed Surface(name=73a369f Splash Screen ml.daniel.kiosk)/@0x2c43b6b - animation-leash#0 (141)
04-24 15:11:13.224  4849  5995 I SurfaceFlinger: id=11151 Removed Splash Screen ml.daniel.kiosk#0 (141)
04-24 15:11:13.226  5109  5152 D SehCodecSolutionService: Update top [ml.daniel.kiosk]
04-24 15:11:13.230  4849  4849 I Layer   : id=11170[1] Destroyed Surface(name=73a369f Splash Screen ml.daniel.kiosk)/@0x2c43b6b - animation-leash#0
04-24 15:11:13.230  4849  4849 I Layer   : id=11150[1] Destroyed 73a369f Splash Screen ml.daniel.kiosk#0
04-24 15:11:13.231  4849  4849 I Layer   : id=11151[1] Destroyed Splash Screen ml.daniel.kiosk#0
04-24 15:11:13.235  4849  4849 D SurfaceFlinger:      DEVICE | 0x710965cf40 | 0002 | RGBA_8888    |    0.0    0.0 1200.0 2000.0 |    0    0 1200 2000 | ml.daniel.kiosk/org.kivy.android.PythonActivity$_28851#0
04-24 15:11:13.238  5109  5152 D SehCodecSolutionService: Update top [ml.daniel.kiosk]
04-24 15:11:13.254  5109  7311 D MARsPolicyManager: onPackageResumedFG pkgName = ml.daniel.kiosk, userId = 0
04-24 15:11:13.675  5109  5154 D GameManagerService: identifyForegroundApp. ml.daniel.kiosk, mCurrentUserId: 0, callerUserId: 0
04-24 15:11:13.675  5109  5154 D PkgDataHelper: getGamePkgData(). ml.daniel.kiosk
04-24 15:11:14.636  5109  7311 V WindowManager: Relayout Window{d159798 u0 ml.daniel.kiosk/org.kivy.android.PythonActivity}: viewVisibility=0 req=2000x1200 d0
04-24 15:11:14.649  4849  5398 I SurfaceFlinger: id=11172 createSurf (0x0),-1 flag=80004, Bounds for - ml.daniel.kiosk/org.kivy.android.PythonActivity@0#0
04-24 15:11:14.650  4849  5398 I SurfaceFlinger: id=11173 createSurf (2000x1132),4 flag=404, SurfaceView - ml.daniel.kiosk/org.kivy.android.PythonActivity@11ff0ea@0#0
04-24 15:11:14.651  4849  5398 I SurfaceFlinger: id=11174 createSurf (0x0),-1 flag=20404, Background for -SurfaceView - ml.daniel.kiosk/org.kivy.android.PythonActivity@11ff0ea@0#0
04-24 15:11:14.670  4849  4849 D SurfaceFlinger:      DEVICE | 0x710965cf40 | 0000 | RGBA_8888    |    0.0    0.0 1200.0 2000.0 |    0    0 1200 2000 | ml.daniel.kiosk/org.kivy.android.PythonActivity$_28851#0
04-24 15:11:14.681 28851  6381 V SDL     : Running main function SDL_main from library /data/app/~~HZJ6jXhOUCl4sKkM_VEgUA==/ml.daniel.kiosk-neVlAlyH2pheeH1RkcFTPg==/lib/arm/libmain.so
04-24 15:11:14.685 28851  6381 I python  : /data/user/0/ml.daniel.kiosk/files/app
04-24 15:11:14.685  5109  7311 D WindowManager: finishDrawingWindow: Window{d159798 u0 ml.daniel.kiosk/org.kivy.android.PythonActivity} mDrawState=HAS_DRAWN
04-24 15:11:14.688 28851  6381 I python  : /data/user/0/ml.daniel.kiosk/files/app/_python_bundle/stdlib.zip:/data/user/0/ml.daniel.kiosk/files/app/_python_bundle/modules
04-24 15:11:14.690 28851 28851 V InputMethodManager: Starting input: tba=ml.daniel.kiosk ic=null mNaviBarColor -16711423 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
04-24 15:11:14.704 28851  6384 I SurfaceView: applySurfaceTransforms: t = android.view.SurfaceControl$Transaction@9c75551 surfaceControl = Surface(name=SurfaceView - ml.daniel.kiosk/org.kivy.android.PythonActivity@11ff0ea@0)/@0x38431b6 frame = 2
04-24 15:11:14.713  5109  7329 V WindowManager: Relayout Window{d159798 u0 ml.daniel.kiosk/org.kivy.android.PythonActivity}: viewVisibility=0 req=2000x1200 d0
04-24 15:11:14.716  5109  5152 D WindowManager: setDisableFlags: displayId=0, vis=0x8108, appearance=0, transientState=Pair{[I@a9d127 [I@1321fd4}, isFullscreen=false, isImmersive=false, barType=0, win=Window{d159798 u0 ml.daniel.kiosk/org.kivy.android.PythonActivity}
04-24 15:11:14.731 28851 28851 I ViewRootImpl@e562d62[PythonActivity]: updateBoundsLayer: shouldReparent = false t = android.view.SurfaceControl$Transaction@f32ceb7 sc = Surface(name=Bounds for - ml.daniel.kiosk/org.kivy.android.PythonActivity@0)/@0xc27f624 frame = 3
04-24 15:11:14.763  4728  4728 E audit   : type=1400 audit(1650805874.757:14469): avc:  granted  { execute } for  pid=28851 comm="SDLThread" path="/data/user/0/ml.daniel.kiosk/files/app/_python_bundle/modules/zlib.cpython-38.so" dev="sda32" ino=160827 scontext=u:r:untrusted_app_27:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=file SEPF_SM-P610_11_0010 audit_filtered
04-24 15:11:14.763  4728  4728 E audit   : type=1327 audit(1650805874.757:14469): proctitle="ml.daniel.kiosk"
04-24 15:11:14.799 28851  6381 I python  : Android path ['.', '/data/user/0/ml.daniel.kiosk/files/app/_python_bundle/stdlib.zip', '/data/user/0/ml.daniel.kiosk/files/app/_python_bundle/modules', '/data/user/0/ml.daniel.kiosk/files/app/_python_bundle/site-packages']
04-24 15:11:14.799 28851  6381 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/ext.jar:/system/framework/telephony-common.jar:/system/framework/smartbondingservice.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/knoxanalyticssdk.jar:/system/framework/fipstimakeystore.jar:/system/framework/timakeystore.jar:/system/framework/knoxsdk.jar:/system/framework/drutils.jar:/system/framework/framework-atb-backward-compatibility.jar:/system/framework/SmpsManager.jar:/system/framework/esecomm.jar:/system/framework/uibc_java.jar:/system/framework/ICDVerification.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:/apex/com.samsung.android.shell/javalib/framework-samsung-privilege.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/ext.jar:/system/framework/telephony-common.jar:/system/framework/smartbondingservice.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/knoxanalyticssdk.jar:/system/framework/fipstimakeystore.jar:/system/framework/timakeystore.jar:/system/framework/knoxsdk.jar:/system/framework/drutils.jar:/system/framework/framework-atb-backward-compatibility.jar:/system/framework/SmpsManager.jar:/system/framework/esecomm.jar:/system/framework/uibc_java.jar:/system/framework/ICDVerification.jar', 'SYSTEMSERVERCLASSPATH': '/system/framework/com.android.location.provider.jar:/system/framework/services.jar:/system/framework/ethernet-service.jar:/system/framework/ssrm.jar:/system/framework/semwifi-service.jar:/apex/com.android.permission/javalib/service-permission.jar:/apex/com.android.wifi/javalib/service-wifi.jar:/apex/com.android.ipsec/javalib/android.net.ipsec.ike.jar:/apex/com.samsung.android.shell/javalib/service-samsung-privilege.jar', 'DOWNLOAD_CACHE': '/data/cache', 'SECONDARY_STORAGE': '/storage/sdcard:/storage/usb1:/storage/usb2', 'KNOX_STORAGE': '/data/knox/ext_sdcard', 'ENC_EMULATED_STORAGE_TARGET': '/storage/enc_emulated', 'ANDROID_SOCKET_zygote_secondary': '16', 'ANDROID_SOCKET_usap_pool_secondary': '18', 'ANDROID_ENTRYPOINT': 'main.pyc', 'ANDROID_ARGUMENT': '/data/user/0/ml.daniel.kiosk/files/app', 'ANDROID_APP_PATH': '/data/user/0/ml.daniel.kiosk/files/app', 'ANDROID_PRIVATE': '/data/user/0/ml.daniel.kiosk/files', 'ANDROID_UNPACK': '/data/user/0/ml.daniel.kiosk/files/app', 'PYTHONHOME': '/data/user/0/ml.daniel.kiosk/files/app', 'PYTHONPATH': '/data/user/0/ml.daniel.kiosk/files/app:/data/user/0/ml.daniel.kiosk/files/app/lib', 'PYTHONOPTIMIZE': '2', 'P4A_BOOTSTRAP': 'SDL2', 'PYTHON_NAME': 'python', 'P4A_IS_WINDOWED': 'True', 'P4A_ORIENTATIO
04-24 15:11:14.832  4728  4728 E audit   : type=1400 audit(1650805874.829:14470): avc:  granted  { execute } for  pid=28851 comm="SDLThread" path="/data/user/0/ml.daniel.kiosk/files/app/_python_bundle/modules/_heapq.cpython-38.so" dev="sda32" ino=165164 scontext=u:r:untrusted_app_27:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=file SEPF_SM-P610_11_0010 audit_filtered
04-24 15:11:14.945 28851  6381 I python  : [INFO   ] [Logger      ] Record log in /data/user/0/ml.daniel.kiosk/files/app/.kivy/logs/kivy_22-04-24_0.txt
04-24 15:11:14.946 28851  6381 I python  : [INFO   ] [Kivy        ] Installed at "/data/user/0/ml.daniel.kiosk/files/app/_python_bundle/site-packages/kivy/__init__.pyc"
04-24 15:11:16.101  4728  4728 E audit   : type=1400 audit(1650805876.097:14484): avc:  granted  { execute } for  pid=28851 comm="SDLThread" path="/data/user/0/ml.daniel.kiosk/files/app/_python_bundle/modules/_socket.cpython-38.so" dev="sda32" ino=100350 scontext=u:r:untrusted_app_27:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=file SEPF_SM-P610_11_0010 audit_filtered
04-24 15:11:16.101  4728  4728 E audit   : type=1327 audit(1650805876.097:14484): proctitle="ml.daniel.kiosk"
04-24 15:11:16.109  4728  4728 E audit   : type=1400 audit(1650805876.105:14485): avc:  granted  { execute } for  pid=28851 comm="SDLThread" path="/data/user/0/ml.daniel.kiosk/files/app/_python_bundle/modules/_ssl.cpython-38.so" dev="sda32" ino=89235 scontext=u:r:untrusted_app_27:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=file SEPF_SM-P610_11_0010 audit_filtered
04-24 15:11:16.977 28851  6381 I python  :  ImportError: cannot import name 'registry' from 'sqlalchemy.orm' (/data/user/0/ml.daniel.kiosk/files/app/_python_bundle/site-packages/sqlalchemy/orm/__init__.pyc)
04-24 15:11:17.473  5109  5260 W InputDispatcher: channel 'd159798 ml.daniel.kiosk/org.kivy.android.PythonActivity (server)' ~ Consumer closed input channel or an error occurred.  events=0x9, fd=693
04-24 15:11:17.473  5109  5260 E InputDispatcher: channel 'd159798 ml.daniel.kiosk/org.kivy.android.PythonActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
04-24 15:11:17.475  4849  5398 I SurfaceFlinger: id=11173 Removed SurfaceView - ml.daniel.kiosk/org.kivy.android.PythonActivity@11ff0ea@0#0 (138)
04-24 15:11:17.475  4849  5398 I SurfaceFlinger: id=11174 Removed Background for -SurfaceView - ml.daniel.kiosk/org.kivy.android.PythonActivity@11ff0ea@0#0 (138)
04-24 15:11:17.475  5109  7244 I ActivityManager: Process ml.daniel.kiosk (pid 28851) has died: fg  TOP (113,900)
04-24 15:11:17.476  5109  5534 I WindowManager: WIN DEATH: Window{d159798 u0 ml.daniel.kiosk/org.kivy.android.PythonActivity}
04-24 15:11:17.477  5109  5534 W InputDispatcher: Attempted to unregister already unregistered input channel 'd159798 ml.daniel.kiosk/org.kivy.android.PythonActivity (server)'
04-24 15:11:17.477  5109  5534 D WindowManager: isScreenshotDisabledLocked - win: Window{d159798 u0 ml.daniel.kiosk/org.kivy.android.PythonActivity}
04-24 15:11:17.484  4849  5995 I SurfaceFlinger: id=11172 Removed Bounds for - ml.daniel.kiosk/org.kivy.android.PythonActivity@0#0 (139)
04-24 15:11:17.492  5109  5534 I WindowManager: Destroying surface Surface(name=ml.daniel.kiosk/org.kivy.android.PythonActivity$_28851)/@0x1311622 called by com.android.server.wm.WindowStateAnimator.destroySurface:1804 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:771 com.android.server.wm.WindowState.removeImmediately:2711 com.android.server.wm.WindowState.removeIfPossible:2876 com.android.server.wm.WindowState.access$300:302 com.android.server.wm.WindowState$DeathRecipient.binderDied:3469 android.os.IBinder$DeathRecipient.binderDied:311 android.os.BinderProxy.sendDeathNotice:719
04-24 15:11:17.496  4849  4885 I Layer   : id=11167 removeFromCurrentState ml.daniel.kiosk/org.kivy.android.PythonActivity$_28851#0 (139)
04-24 15:11:17.496  4849  4885 I Layer   : id=11172 removeFromCurrentState Bounds for - ml.daniel.kiosk/org.kivy.android.PythonActivity@0#0 (139)
04-24 15:11:17.496  4849  4885 I Layer   : id=11173 removeFromCurrentState SurfaceView - ml.daniel.kiosk/org.kivy.android.PythonActivity@11ff0ea@0#0 (139)
04-24 15:11:17.496  4849  4885 I Layer   : id=11174 removeFromCurrentState Background for -SurfaceView - ml.daniel.kiosk/org.kivy.android.PythonActivity@11ff0ea@0#0 (139)
04-24 15:11:17.509  4849  4885 I SurfaceFlinger: id=11167 Removed ml.daniel.kiosk/org.kivy.android.PythonActivity$_28851#0 (139)
04-24 15:11:17.514  4849  4885 I Layer   : id=11166 removeFromCurrentState d159798 ml.daniel.kiosk/org.kivy.android.PythonActivity#0 (139)
04-24 15:11:17.518  4849  4885 I SurfaceFlinger: id=11166 Removed d159798 ml.daniel.kiosk/org.kivy.android.PythonActivity#0 (139)
04-24 15:11:17.525  5109  5534 V WindowManager: Changing focus from Window{d159798 u0 ml.daniel.kiosk/org.kivy.android.PythonActivity} to null displayId=0 Callers=com.android.server.wm.RootWindowContainer.updateFocusedWindowLocked:575 com.android.server.wm.WindowManagerService.updateFocusedWindowLocked:6338 com.android.server.wm.WindowState.removeIfPossible:2891 com.android.server.wm.WindowState.access$300:302
04-24 15:11:17.527  4849  4849 I Layer   : id=11167[1] Destroyed ml.daniel.kiosk/org.kivy.android.PythonActivity$_28851#0
04-24 15:11:17.527  4849  4849 I Layer   : id=11172[1] Destroyed Bounds for - ml.daniel.kiosk/org.kivy.android.PythonActivity@0#0
04-24 15:11:17.527  4849  4849 I Layer   : id=11173[1] Destroyed SurfaceView - ml.daniel.kiosk/org.kivy.android.PythonActivity@11ff0ea@0#0
04-24 15:11:17.527  4849  4849 I Layer   : id=11174[1] Destroyed Background for -SurfaceView - ml.daniel.kiosk/org.kivy.android.PythonActivity@11ff0ea@0#0
04-24 15:11:17.528  4849  4849 I Layer   : id=11166[1] Destroyed d159798 ml.daniel.kiosk/org.kivy.android.PythonActivity#0
04-24 15:11:17.549  5109  7244 W ActivityTaskManager: Force removing ActivityRecord{8206424 u0 ml.daniel.kiosk/org.kivy.android.PythonActivity t2656}: app died, no saved state
04-24 15:11:17.551  5109  7244 I ActivityTaskManager: Removing activity ActivityRecord{8206424 u0 ml.daniel.kiosk/org.kivy.android.PythonActivity t2656 f}}(appDied)  from stack callers=com.android.server.wm.ActivityStack$RemoveHistoryRecordsForApp.processActivity:620 com.android.server.wm.ActivityStack$RemoveHistoryRecordsForApp.process:535 com.android.server.wm.ActivityStack.handleAppDied:3563 com.android.server.wm.RootWindowContainer.handleAppDied:3751 com.android.server.wm.ActivityTaskManagerService$LocalService.handleAppDied:8395
04-24 15:11:17.580  4849  4885 I Layer   : id=11149 removeFromCurrentState ActivityRecord{8206424 u0 ml.daniel.kiosk/org.kivy.android.PythonActivity t2656}#0 (134)
04-24 15:11:17.639  4849  4885 I SurfaceFlinger: id=11149 Removed ActivityRecord{8206424 u0 ml.daniel.kiosk/org.kivy.android.PythonActivity t2656}#0 (137)
04-24 15:11:17.642  4849  4849 I Layer   : id=11149[1] Destroyed ActivityRecord{8206424 u0 ml.daniel.kiosk/org.kivy.android.PythonActivity t2656}#0
04-24 15:11:17.677  5109  5357 D PkgPredictorService: previous pkgs: org.joa.zipperplus,ml.daniel.kiosk,org.joa.zipperplus running pkg: org.joa.zipperplus, uid: 0 is system: false
04-24 15:11:17.678  5109  5357 D PkgPredictorService-Collector:  (hour:15 day:1 previous:[org.joa.zipperplus, ml.daniel.kiosk, org.joa.zipperplus] activityName:unknown running:org.joa.zipperplus userId:0 screenOrientation:1 wifi:1 bt:1 predictTime:1 apkVersion:2.2.0 consumeTime:-1 preloaded:false>)
04-24 15:11:17.680  5109  5357 D PkgPredictorService-NapClassifier: Predict result: 0.0,10.0,157.0, - [0_&_com.android.chrome, 0_&_com.discord, 0_&_ml.daniel.kiosk]

the config for the action i use:

name: Buildozer
on: [push, pull_request, workflow_dispatch]

env:
  buildozer_workdir: .
  #buildozer_version: git+https://github.com/misl6/buildozer.git@feat/aab-support
  #buildozer_version: git+https://github.com/antocuni/buildozer.git@antocuni/aab-support-and-fileprovider
  buildozer_version: stable

  GITHUB_TOKEN: ${{ github.token }}

  # buildozer_workdir: Storage-Example
  # buildozer_version: stable

jobs:

  android_debug:
    name: Android (debug)
    runs-on: ubuntu-latest
    if: "!contains(github.event.head_commit.message, 'ignore build') && !${{ github.ref_type }} == 'tag'"

    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Build with Buildozer
        uses: ArtemSBulgakov/buildozer-action@v1
        id: buildozer
        with:
          workdir: ${{ env.buildozer_workdir }}
          buildozer_version: ${{ env.buildozer_version }}
          command: buildozer android debug

      - name: Upload artifacts
        uses: actions/upload-artifact@v2
        with:
          name: debug
          path: ${{ steps.buildozer.outputs.filename }}```

I got # AIDL not found, please install it.

I got this error, but I don't know how to instal aidl, can anyone help me?

Traceback:

Aidl not found, please install it.

Traceback (most recent call last):
File "/action/entrypoint.py", line 159, in
main()
File "/action/entrypoint.py", line 27, in main
run_command(env["INPUT_COMMAND"])
File "/action/entrypoint.py", line 135, in run_command
retcode = subprocess.check_call(command, shell=True)
File "/usr/lib/python3.8/subprocess.py", line 364, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command 'buildozer android debug' returned non-zero exit status 1.
##[debug]Docker Action run completed with exit code 1
##[debug]Finishing: Build with Buildozer

Create version for Gitlab Runners

I've noticed that your actions are being used by many projects, Thank you.

I wonder if possible to make a version for Gitlab so we can use gitlab runners to build our apps.

Thank you again.

I can't build an apk

I try to build it shows these error :

Build for Android
The following actions uses node12 which is deprecated and will be forced to run on node16: actions/checkout@v2. For more info: https://github.blog/changelog/2023-06-13-github-actions-all-actions-will-run-on-node16-instead-of-node12-by-default/

Build for Android
Failed to remove 'http.https://github.com/.extraheader' from the git config

main.yml code is :

name: Build

on: [push, pull_request]

jobs:

  # Build job. Builds app for Android with Buildozer

  build-android:

    name: Build for Android

    runs-on: ubuntu-latest

    steps:

      - name: Checkout

        uses: actions/checkout@v2

      - name: Build with Buildozer

        uses: ArtemSBulgakov/buildozer-action@v1

        id: buildozer

        with:

          workdir: .

          buildozer_version: stable

      - name: Upload artifacts

        uses: actions/upload-artifact@v2

        with:

          name: package

          path: ${{ steps.buildozer.outputs.filename }}

Please help me to fix this

Buildozer not including .kv and assets(.gif, .ttf, .json)

i have provided every proper info in buildozer.spec and stored everything where main.py and .spec file is...including .kv, .ttf(markup),.gif but gives logcat error. i was running .kv within the main.py file, after a series of errors i tried to put .kv aside and tried to run it but gave error of no such file in the directory main.kv. 20220306_214049.jpg
OS..win 7 virtual machine ubuntu

.spec file

[app]

# (str) Title of your application
title = dkapp14

# (str) Package name
package.name = mydkapp14

# (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,json,gif,ttf

# (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.2,sdl2_ttf==2.0.15,pillow==8.4.0,kivmob==2.0,pyrebase4==4.5.0,plyer==2.0.0,pygments==2.11.2,docutils==0.18.1,requests==2.27.1,jnius,android,cython,urllib3==1.26.8,charset-normalizer,idna,cython,oauth2client,httplib2,pyparsing,pyasn1,pyasn1_modules,absl-py,argon2-cffi,rsa,gcloud,google,google-api-python-client,google-auth,google-auth-httplib2,  google-auth-oauthlib,  jwt,jwcrypto,requests-toolbelt,certifi,pycryptodome,cryptography,python_jwt,deprecated,wrapt,kivymd_extensions,https://github.com/kivymd-extensions/akivymd/archive/main.zip,sdl2_image, sdl2_mixer,freetype, hostpython3,sdl2

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

# (list) Garden requirements
#garden_requirements =

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

# Kivy version to use
osx.kivy_version = 2.0.0

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

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

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

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

# (str) Android NDK version to use
#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

Example is not running

As stated in #9 I cloned this project and tried to execute it (build the app) after exchanging the line:
- name: Build with Buildozer
uses: ./master # REPLACE WITH ArtemSBulgakov/buildozer-action@v1

into
- name: Build with Buildozer
uses: ArtemSBulgakov/buildozer-action@v1

But I got a failure during the build:
[WARNING]: ERROR: /github/workspace/master/test_app/.buildozer/android/platform/build-armeabi-v7a/build/other_builds/hostpython3/desktop/hostpython3/native-build/python3 failed!

Command failed: ['/bin/python3', '-m', 'pythonforandroid.toolchain', 'create', '--dist_name=testapp', '--bootstrap=sdl2', '--requirements=python3,kivy', '--arch=armeabi-v7a', '--copy-libs', '--color=always', '--storage-dir=/github/workspace/master/test_app/.buildozer/android/platform/build-armeabi-v7a', '--ndk-api=21', '--ignore-setup-py', '--debug']

Is it possible, that the docker container is not working properly (anymore).

configparser.NoSectionError: No section: 'buildozer'

Hi, i am getting the following error triying to run a workflow manually

Log error
[25](https://github.com/Jalkhov/chichero/runs/5060474903?check_suite_focus=true#step:4:25)
Traceback (most recent call last):
[26](https://github.com/Jalkhov/chichero/runs/5060474903?check_suite_focus=true#step:4:26)
  File "/home/user/.local/bin/buildozer", line 8, in <module>
[27](https://github.com/Jalkhov/chichero/runs/5060474903?check_suite_focus=true#step:4:27)
    sys.exit(main())
[28](https://github.com/Jalkhov/chichero/runs/5060474903?check_suite_focus=true#step:4:28)
  File "/home/user/.local/lib/python3.8/site-packages/buildozer/scripts/client.py", line 13, in main
[29](https://github.com/Jalkhov/chichero/runs/5060474903?check_suite_focus=true#step:4:29)
    Buildozer().run_command(sys.argv[1:])
[30](https://github.com/Jalkhov/chichero/runs/5060474903?check_suite_focus=true#step:4:30)
  File "/home/user/.local/lib/python3.8/site-packages/buildozer/__init__.py", line 1026, in run_command
[31](https://github.com/Jalkhov/chichero/runs/5060474903?check_suite_focus=true#step:4:31)
    self.check_root()
[32](https://github.com/Jalkhov/chichero/runs/5060474903?check_suite_focus=true#step:4:32)
  File "/home/user/.local/lib/python3.8/site-packages/buildozer/__init__.py", line 1053, in check_root
[33](https://github.com/Jalkhov/chichero/runs/5060474903?check_suite_focus=true#step:4:33)
    warn_on_root = self.config.getdefault('buildozer', 'warn_on_root', '1')
[34](https://github.com/Jalkhov/chichero/runs/5060474903?check_suite_focus=true#step:4:34)
  File "/home/user/.local/lib/python3.8/site-packages/buildozer/__init__.py", line 1207, in _get_config_default
[35](https://github.com/Jalkhov/chichero/runs/5060474903?check_suite_focus=true#step:4:35)
    set_config_token_from_env(section, token, self.config)
[36](https://github.com/Jalkhov/chichero/runs/5060474903?check_suite_focus=true#step:4:36)
  File "/home/user/.local/lib/python3.8/site-packages/buildozer/__init__.py", line 1265, in set_config_token_from_env
[37](https://github.com/Jalkhov/chichero/runs/5060474903?check_suite_focus=true#step:4:37)
    config.set(section, token, env_var)
[38](https://github.com/Jalkhov/chichero/runs/5060474903?check_suite_focus=true#step:4:38)
  File "/usr/lib/python3.8/configparser.py", line 1201, in set
[39](https://github.com/Jalkhov/chichero/runs/5060474903?check_suite_focus=true#step:4:39)
    super().set(section, option, value)
[40](https://github.com/Jalkhov/chichero/runs/5060474903?check_suite_focus=true#step:4:40)
  File "/usr/lib/python3.8/configparser.py", line 902, in set
[41](https://github.com/Jalkhov/chichero/runs/5060474903?check_suite_focus=true#step:4:41)
    raise NoSectionError(section) from None
[42](https://github.com/Jalkhov/chichero/runs/5060474903?check_suite_focus=true#step:4:42)
configparser.NoSectionError: No section: 'buildozer'
[43](https://github.com/Jalkhov/chichero/runs/5060474903?check_suite_focus=true#step:4:43)
Traceback (most recent call last):
[44](https://github.com/Jalkhov/chichero/runs/5060474903?check_suite_focus=true#step:4:44)
  File "/action/entrypoint.py", line 159, in <module>
[45](https://github.com/Jalkhov/chichero/runs/5060474903?check_suite_focus=true#step:4:45)
    main()
[46](https://github.com/Jalkhov/chichero/runs/5060474903?check_suite_focus=true#step:4:46)
  File "/action/entrypoint.py", line 27, in main
[47](https://github.com/Jalkhov/chichero/runs/5060474903?check_suite_focus=true#step:4:47)
    run_command(env["INPUT_COMMAND"])
[48](https://github.com/Jalkhov/chichero/runs/5060474903?check_suite_focus=true#step:4:48)
  File "/action/entrypoint.py", line 135, in run_command
[49](https://github.com/Jalkhov/chichero/runs/5060474903?check_suite_focus=true#step:4:49)
    retcode = subprocess.check_call(command, shell=True)
[50](https://github.com/Jalkhov/chichero/runs/5060474903?check_suite_focus=true#step:4:50)
  File "/usr/lib/python3.8/subprocess.py", line 364, in check_call
[51](https://github.com/Jalkhov/chichero/runs/5060474903?check_suite_focus=true#step:4:51)
    raise CalledProcessError(retcode, cmd)
[52](https://github.com/Jalkhov/chichero/runs/5060474903?check_suite_focus=true#step:4:52)
subprocess.CalledProcessError: Command 'buildozer android debug' returned non-zero exit status 1.
The workflow file
name: Build
	on: workflow_dispatch
	
	jobs:
	  # Build job. Builds app for Android with Buildozer
	  build-android:
	    name: Build for Android
	    runs-on: ubuntu-latest
	
	    steps:
	      - name: Checkout
	        uses: actions/checkout@v2
	
	      - name: Build with Buildozer
	        uses: ArtemSBulgakov/buildozer-action@v1
	        id: buildozer
	        with:
	          workdir: elchichero
	          buildozer_version: stable
	
	      - name: Upload artifacts
	        uses: actions/upload-artifact@v2
	        with:
	          name: package
	          path: ${{ steps.buildozer.outputs.filename }}

EDIT: I can see in the repo action exist a similar error.

How to use

I am a complete novice in making android apps. I have made a simple kivy script, but I have no way to turn it into an apk.
Please provide some in-depth explanation of what I actually have to do to make my .py into an .apk.
Thanks

where is apk file saved

After running buildozer it shows apk is saved in bin folder but no bin folder is present and I can't find the apk file. Where is it saved?

Unable to use buildozer-action

Hi, I am new in the kivy deployment part. My system was not supporting .py to .apk conversion because of configuration issues. Today I found out about this github action. I am trying to use on a sample application but not able to perform it right. Is there any tutorial available for that or can you make a sample repository from which I can understand what all values to give to different parameters

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.