In https://android-developers.googleblog.com/2017/12/improving-app-security-and-performance.html:
In August 2019, Play will require that new apps and app updates with native libraries provide 64-bit versions in addition to their 32-bit versions.
I think we should default to arm64-v8a to prevent issues later, and start thinking how we can do multiple targets compilation and embedded them in one APK.
Hm, I wonder, I mean there are many armv7/32bit devices still out there now, but even new more budget devices being launched like the S9 mini are 64bit now. I don't want to stop anyone from working on this, but given how we're behind with other things, I can't help but wonder if multiple targets in one APK even worth this effort given it might largely solve itself in 2-3ish years
Edit: just been trying to find some reliable stats on how much ARM64 devices (compared to arm v7) are out there in consumer hands, couldn't find any. Anyone knows a good source? Would be interesting to see how the current market is divided up
Checking on this - August is fast approaching; are 64 bit builds now possible with python-for-android?
@brentpicasso This has worked for a long time, use --arch=arm64-v8a. However, it isn't tested that well right now, we're working to improve this and probably to update some defaults. Some recipes may have issues, feel free to log issues about it if you find any.
It looks like Google encourages one APK targeting multiple libs, so we don't have to submit multiple APKs.
https://developer.android.com/distribute/best-practices/develop/64-bit
Is this the approach p4a will ultimately support?
Further note, I think that specifying a comma separated list of architectures in buildozer could work well with p4a supporting multiple archs in the APK.
Is this the approach p4a will ultimately support?
Probably not any time soon, in that I don't intend to work on it and I don't expect that anyone else is either, but contributions for this would be welcome.
The reasons are:
Is there a significant advantage to a single APK with multiple archs over just uploading multiple APKs separately? Otherwise I'm wondering if it is worth the complexity in p4a, even though of course this will possibly increase build times for everyone going through the build twice - but then again, the time consuming compilation itself cannot be cut down anyway because it needs to be redone for each architecture in any case
I think there's a genuine convenience perspective, especially since a lot of people might not care about the size difference for simple apps (although I do!), so I've tended to think a PR for it would be okay. But, I've no expectation or desire for anyone to do it.
I did look into this when first setting up the arch stuff, I think at the time I thought it shouldn't actually be too bad in terms of complexity, although I didn't work through all the fiddly bits.
I don't use the play store much, so forgive my ignorance: but wouldn't the play store just automatically pick the right APK anyway? How does it make any difference in convenience for the end user?
I don't think it's that major, it's just simpler to not have to worry about it. Plus people do distribute apks in other ways.
I just managed to update my app with 64 bits. The biggest pains are the recipes that don't work for it because they're hard-coded for 32 bits (eg. ffmpeg), and having to do this manually (I don't think there's a way to tell buildozer to do that?). Other than that, everything was rather smooth to be honest, signing as usual and uploading two APKs instead of one.
Oh and also, I'll have to update my target API to 28 soon apparently, that's going to be a new requirement of the Play Store somehow.
I tryed to change android.arch to arm64-v8a in buildozer.spec but it didn't help. Google Play still tells me that my apk is armeabi-v7a.
@Cheaterman can you please help me? How can I change my recipes to 64 bits?
Hi @tito you're raising two things in this ticket.
Both are very valid point, but I would recommend narrowing the scope to ease the discussions. Let's create two dedicated ticket for both points.
For instance 1) is probably easier to address (at least at buildozer level) while 2) might be a lot more painful
So the suggestion when distributing apps on Google Play is to build two apks, one for armeabi-v7a, and one for arm64-v8a.
When using buildozer+p4a, what is the suggested way of doing this?
As in, only one arch can be specified in android.arch in buildozer.spec.
Should I script it such that the build runs twice and in-between git apply a diff that changes android.arch? Or is there a better way?
For example, it would be nice to be able to pass android.arch to buildozer on the CLI.
@SomberNight tito has created a PR at https://github.com/kivy/buildozer/pull/957 to make buildozer use per-arch build directories, but I'm intending to actually fix this transparently in p4a so that you don't have to worry about it.
For setting the arch differently on different buildozer runs, I think you can use the APP_ANDROID_ARCH environment variable, but it would be nice to have a better api for this.
Below is our current approach, but specifying a comma separated list of architectures would be ideal, each creating an APK file with an arch prefix.
# (str) The Android arch to build for, choices: armeabi-v7a, arm64-v8a, x86 android.arch = armeabi-v7a, arm64-v8a
# build 32 bit APK
buildozer -v android clean
export APP_ANDROID_ARCH=armeabi-v7a
./build_release_apk.sh
#rename APK to 32 bit version
cd bin; find -name "race*" -printf "%f\0" | xargs --null -I{} mv {} "32bit_{}"; cd ..
# build 64 bit APK
buildozer -v android clean
export APP_ANDROID_ARCH=arm64-v8a
./build_release_apk.sh
#rename APK to 64 bit version
cd bin; find -name "race*" -printf "%f\0" | xargs --null -I{} mv {} "64bit_{}"; cd ..
It would be much cleaner if buildozer support comma on arch right. Let's see.
When I used two arches(armeabi-v7a, arm64-v8a), I have an error attached.
So I tried to use only armeabi-v7a, I could do the debug on Android Phone, but couldn't upload it on Google play because Google 64 bit was required.
Lastly if I use only arm64-v8a, I can't do the debug because kivy might be not compatible with it, but can upload it on Google play even if that app doesn't work on Android Phone.
Basically I have used two basic Python-packages, kivy and request. This app is just a simple app. Does someone have any idea about this problem?
#
1.android.arch = armeabi-v7a, arm64-v8a
sudo buildozer android debug
error :
Command failed: /usr/bin/python3 -m pythonforandroid.toolchain clean_builds --color=always --storage-dir="/home/userName/Desktop/kivy/kivy_v7a_v8a/.buildozer/android/platform/build" --ndk-api=21
ENVIRONMENT:
LS_COLORS = 'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:.tar=01;31:.tgz=01;31:.arc=01;31:.arj=01;31:.taz=01;31:.lha=01;31:.lz4=01;31:.lzh=01;31:.lzma=01;31:.tlz=01;31:.txz=01;31:.tzo=01;31:.t7z=01;31:.zip=01;31:.z=01;31:.Z=01;31:.dz=01;31:.gz=01;31:.lrz=01;31:.lz=01;31:.lzo=01;31:.xz=01;31:.zst=01;31:.tzst=01;31:.bz2=01;31:.bz=01;31:.tbz=01;31:.tbz2=01;31:.tz=01;31:.deb=01;31:.rpm=01;31:.jar=01;31:.war=01;31:.ear=01;31:.sar=01;31:.rar=01;31:.alz=01;31:.ace=01;31:.zoo=01;31:.cpio=01;31:.7z=01;31:.rz=01;31:.cab=01;31:.wim=01;31:.swm=01;31:.dwm=01;31:.esd=01;31:.jpg=01;35:.jpeg=01;35:.mjpg=01;35:.mjpeg=01;35:.gif=01;35:.bmp=01;35:.pbm=01;35:.pgm=01;35:.ppm=01;35:.tga=01;35:.xbm=01;35:.xpm=01;35:.tif=01;35:.tiff=01;35:.png=01;35:.svg=01;35:.svgz=01;35:.mng=01;35:.pcx=01;35:.mov=01;35:.mpg=01;35:.mpeg=01;35:.m2v=01;35:.mkv=01;35:.webm=01;35:.ogm=01;35:.mp4=01;35:.m4v=01;35:.mp4v=01;35:.vob=01;35:.qt=01;35:.nuv=01;35:.wmv=01;35:.asf=01;35:.rm=01;35:.rmvb=01;35:.flc=01;35:.avi=01;35:.fli=01;35:.flv=01;35:.gl=01;35:.dl=01;35:.xcf=01;35:.xwd=01;35:.yuv=01;35:.cgm=01;35:.emf=01;35:.ogv=01;35:.ogx=01;35:.aac=00;36:.au=00;36:.flac=00;36:.m4a=00;36:.mid=00;36:.midi=00;36:.mka=00;36:.mp3=00;36:.mpc=00;36:.ogg=00;36:.ra=00;36:.wav=00;36:.oga=00;36:.opus=00;36:.spx=00;36:.xspf=00;36:'
LC_MEASUREMENT = 'ja_JP.UTF-8'
LESSCLOSE = '/usr/bin/lesspipe %s %s'
LC_PAPER = 'ja_JP.UTF-8'
LC_MONETARY = 'ja_JP.UTF-8'
XDG_MENU_PREFIX = 'xfce-'
LANG = 'en_US.UTF-8'
GDM_LANG = 'en_US'
DISPLAY = ':0.0'
OLDPWD = '/home/userName/Desktop/kivy'
GTK_OVERLAY_SCROLLING = '0'
COLORTERM = 'truecolor'
XDG_VTNR = '7'
SSH_AUTH_SOCK = '/run/user/1000/keyring/ssh'
GLADE_CATALOG_PATH = ':'
LC_NAME = 'ja_JP.UTF-8'
XDG_SESSION_ID = 'c1'
XDG_GREETER_DATA_DIR = '/var/lib/lightdm-data/userName'
USER = 'userName'
GLADE_MODULE_PATH = ':'
DESKTOP_SESSION = 'xubuntu'
QT_QPA_PLATFORMTHEME = 'gtk2'
PWD = '/home/userName/Desktop/kivy/kivy_v7a_v8a'
HOME = '/home/userName'
SSH_AGENT_PID = '1070'
QT_ACCESSIBILITY = '1'
XDG_SESSION_TYPE = 'x11'
XDG_DATA_DIRS = '/usr/share/xubuntu:/usr/share/xfce4:/usr/local/share:/usr/share:/var/lib/snapd/desktop:/usr/share'
XDG_SESSION_DESKTOP = 'xubuntu'
LC_ADDRESS = 'ja_JP.UTF-8'
LC_NUMERIC = 'ja_JP.UTF-8'
GLADE_PIXMAP_PATH = ':'
CLUTTER_BACKEND = 'x11'
SHELL = '/bin/bash'
VTE_VERSION = '5202'
TERM = 'xterm-256color'
XDG_SEAT_PATH = '/org/freedesktop/DisplayManager/Seat0'
XDG_CURRENT_DESKTOP = 'XFCE'
GPG_AGENT_INFO = '/run/user/1000/gnupg/S.gpg-agent:0:1'
XDG_SEAT = 'seat0'
SHLVL = '1'
LANGUAGE = 'en_US'
WINDOWID = '60817411'
LC_TELEPHONE = 'ja_JP.UTF-8'
GDMSESSION = 'xubuntu'
LOGNAME = 'userName'
DBUS_SESSION_BUS_ADDRESS = 'unix:path=/run/user/1000/bus'
XDG_RUNTIME_DIR = '/run/user/1000'
XAUTHORITY = '/home/userName/.Xauthority'
XDG_SESSION_PATH = '/org/freedesktop/DisplayManager/Session0'
XDG_CONFIG_DIRS = '/etc/xdg/xdg-xubuntu:/etc/xdg:/etc/xdg'
PATH = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin'
LC_IDENTIFICATION = 'ja_JP.UTF-8'
SESSION_MANAGER = 'local/userName-VirtualBox:@/tmp/.ICE-unix/1088,unix/userName-VirtualBox:/tmp/.ICE-unix/1088'
LESSOPEN = '| /usr/bin/lesspipe %s'
LC_TIME = 'ja_JP.UTF-8'
_ = '/usr/local/bin/buildozer'
Buildozer failed to execute the last command
The error might be hidden in the log above this error
Please read the full log, and search for it before
raising an issue with buildozer itself.
In case of a bug report, please add a full log with log_level = 2
Please post the full log of the failing build.
On 05/09/2019 21:29, Erick Lee wrote:
>
When I used two arches(armeabi-v7a, arm64-v8a), I have an error attached.
So I tried to use only armeabi-v7a, I could do the debug on Android
Phone, but couldn't upload it on Google play because Google 64 bit was
required.
Lastly if I use only arm64-v8a, I can't do the debug because kivy
might be not compatible with it, but can upload it on Google play even
if that app doesn't work on Android Phone.Basically I have used basic Python-package, kivy and request. This app
is just a simple app. Does someone have any idea about this problem?1.android.arch = armeabi-v7a, arm64-v8a
- sudo buildozer android debug
error :
Command failed: /usr/bin/python3 -m pythonforandroid.toolchain
clean_builds --color=always
--storage-dir="/home/sangwon/Desktop/kivy/kivy_v7a_v8a/.buildozer/android/platform/build"
--ndk-api=21ENVIRONMENT:
LS_COLORS =
'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:/.tar=01;31:/.tgz=01;31:/.arc=01;31:/.arj=01;31:/.taz=01;31:/.lha=01;31:/.lz4=01;31:/.lzh=01;31:/.lzma=01;31:/.tlz=01;31:/.txz=01;31:/.tzo=01;31:/.t7z=01;31:/.zip=01;31:/.z=01;31:/.Z=01;31:/.dz=01;31:/.gz=01;31:/.lrz=01;31:/.lz=01;31:/.lzo=01;31:/.xz=01;31:/.zst=01;31:/.tzst=01;31:/.bz2=01;31:/.bz=01;31:/.tbz=01;31:/.tbz2=01;31:/.tz=01;31:/.deb=01;31:/.rpm=01;31:/.jar=01;31:/.war=01;31:/.ear=01;31:/.sar=01;31:/.rar=01;31:/.alz=01;31:/.ace=01;31:/.zoo=01;31:/.cpio=01;31:/.7z=01;31:/.rz=01;31:/.cab=01;31:/.wim=01;31:/.swm=01;31:/.dwm=01;31:/.esd=01;31:/.jpg=01;35:/.jpeg=01;35:/.mjpg=01;35:/.mjpeg=01;35:/.gif=01;35:/.bmp=01;35:/.pbm=01;35:/.pgm=01;35:/.ppm=01;35:/.tga=01;35:/.xbm=01;35:/.xpm=01;35:/.tif=01;35:/.tiff=01;35:/.png=01;35:/.svg=01;35:/.svgz=01;35:/.mng=01;35:/.pcx=01;35:/.mov=01;35:/.mpg=01;35:/.mpeg=01;35:/.m2v=01;35:/.mkv=01;35:/.webm=01;35:/.ogm=01;35:/.mp4=01;35:/.m4v=01;35:/.mp4v=01;35:/.vob=01;35:/.qt=01;35:/.nuv=01;35:/.wmv=01;35:/.asf=01;35:/.rm=01;35:/.rmvb=01;35:/.flc=01;35:/.avi=01;35:/.fli=01;35:/.flv=01;35:/.gl=01;35:/.dl=01;35:/.xcf=01;35:/.xwd=01;35:/.yuv=01;35:/.cgm=01;35:/.emf=01;35:/.ogv=01;35:/.ogx=01;35:/.aac=00;36:/.au=00;36:/.flac=00;36:/.m4a=00;36:/.mid=00;36:/.midi=00;36:/.mka=00;36:/.mp3=00;36:/.mpc=00;36:/.ogg=00;36:/.ra=00;36:/.wav=00;36:/.oga=00;36:/.opus=00;36:/.spx=00;36:/.xspf=00;36:'LC_MEASUREMENT = 'ja_JP.UTF-8'
LESSCLOSE = '/usr/bin/lesspipe %s %s'
LC_PAPER = 'ja_JP.UTF-8'
LC_MONETARY = 'ja_JP.UTF-8'
XDG_MENU_PREFIX = 'xfce-'
LANG = 'en_US.UTF-8'
GDM_LANG = 'en_US'
DISPLAY = ':0.0'
OLDPWD = '/home/sangwon/Desktop/kivy'
GTK_OVERLAY_SCROLLING = '0'
COLORTERM = 'truecolor'
XDG_VTNR = '7'
SSH_AUTH_SOCK = '/run/user/1000/keyring/ssh'
GLADE_CATALOG_PATH = ':'
LC_NAME = 'ja_JP.UTF-8'
XDG_SESSION_ID = 'c1'
XDG_GREETER_DATA_DIR = '/var/lib/lightdm-data/sangwon'
USER = 'sangwon'
GLADE_MODULE_PATH = ':'
DESKTOP_SESSION = 'xubuntu'
QT_QPA_PLATFORMTHEME = 'gtk2'
PWD = '/home/sangwon/Desktop/kivy/kivy_v7a_v8a'
HOME = '/home/sangwon'
SSH_AGENT_PID = '1070'
QT_ACCESSIBILITY = '1'
XDG_SESSION_TYPE = 'x11'
XDG_DATA_DIRS =
'/usr/share/xubuntu:/usr/share/xfce4:/usr/local/share:/usr/share:/var/lib/snapd/desktop:/usr/share'XDG_SESSION_DESKTOP = 'xubuntu'
LC_ADDRESS = 'ja_JP.UTF-8'
LC_NUMERIC = 'ja_JP.UTF-8'
GLADE_PIXMAP_PATH = ':'
CLUTTER_BACKEND = 'x11'
SHELL = '/bin/bash'
VTE_VERSION = '5202'
TERM = 'xterm-256color'
XDG_SEAT_PATH = '/org/freedesktop/DisplayManager/Seat0'
XDG_CURRENT_DESKTOP = 'XFCE'
GPG_AGENT_INFO = '/run/user/1000/gnupg/S.gpg-agent:0:1'
XDG_SEAT = 'seat0'
SHLVL = '1'
LANGUAGE = 'en_US'
WINDOWID = '60817411'
LC_TELEPHONE = 'ja_JP.UTF-8'
GDMSESSION = 'xubuntu'
LOGNAME = 'sangwon'
DBUS_SESSION_BUS_ADDRESS = 'unix:path=/run/user/1000/bus'
XDG_RUNTIME_DIR = '/run/user/1000'
XAUTHORITY = '/home/sangwon/.Xauthority'
XDG_SESSION_PATH = '/org/freedesktop/DisplayManager/Session0'
XDG_CONFIG_DIRS = '/etc/xdg/xdg-xubuntu:/etc/xdg:/etc/xdg'
PATH =
'/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin'LC_IDENTIFICATION = 'ja_JP.UTF-8'
SESSION_MANAGER =
'local/sangwon-VirtualBox:@/tmp/.ICE-unix/1088,unix/sangwon-VirtualBox:/tmp/.ICE-unix/1088'LESSOPEN = '| /usr/bin/lesspipe %s'
LC_TIME = 'ja_JP.UTF-8'
_ = '/usr/local/bin/buildozer'
Buildozer failed to execute the last command
The error might be hidden in the log above this error
Please read the full log, and search for it before
raising an issue with buildozer itself.
In case of a bug report, please add a full log with log_level = 2
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/kivy/python-for-android/issues/1519?email_source=notifications&email_token=AAJVBG42CGW3367B7GVJFD3QIFT27A5CNFSM4GJUB4V2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6AU7EA#issuecomment-528568208,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAJVBGZFAODTHFVYGOC4ZO3QIFT27ANCNFSM4GJUB4VQ.
Here are the full log and buildozer.spec.
briefly, I have an error on the log (toolchain.py: error: unrecognized arguments: arm64-v8a), while I have used both of them(android.arch = armeabi-v7a, arm64-v8a).
sudo buildozer android debug
Check configuration tokens
Buildozer is running as root!
This is not recommended, and may lead to problems later.
Are you sure you want to continue [y/n]? y
Ensure build layout
Check configuration tokens
Preparing build
Check requirements for android
Run 'dpkg --version'
Cwd None
Debian 'dpkg' package management program version 1.19.0.5 (amd64).
This is free software; see the GNU General Public License version 2 or
later for copying conditions. There is NO warranty.
Search for Git (git)
-> found at /usr/bin/git
Search for Cython (cython)
-> found at /usr/local/bin/cython
Search for Java compiler (javac)
-> found at /usr/lib/jvm/java-8-openjdk-amd64/bin/javac
Search for Java keytool (keytool)
-> found at /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/keytool
Install platform
Run 'git config --get remote.origin.url'
Cwd /home/userName/Desktop/kivy/kivy_v7a_v8a/.buildozer/android/platform/python-for-android
https://github.com/kivy/python-for-android.git
Run 'git branch -vv'
Cwd /home/userName/Desktop/kivy/kivy_v7a_v8a/.buildozer/android/platform/python-for-android
Buildozer failed to execute the last command
The error might be hidden in the log above this error
Please read the full log, and search for it before
raising an issue with buildozer itself.
In case of a bug report, please add a full log with log_level = 2
[app]
(str) Title of your application
title = test1
(str) Package name
package.name = myapp
(str) Package domain (needed for android/ios packaging)
package.domain = org.englishApp
(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 = 1.4
(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,pyjnius,requests
(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
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 = WRITE_EXTERNAL_STORAGE,READ_EXTERNAL_STORAGE, INTERNET
(int) Target Android API, should be as high as possible.
android.api = 28
(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 = 17c
(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 = ~/.buildozer/android/android-ndk-r17c
(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
(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) Java classes to add as activities to the manifest.
android.add_activites = 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
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
android.uses_library =
(str) Android logcat filters to use
android.logcat_filters = *:S python:D
(bool) Copy library instead of making a libpymodules.so
android.copy_libs = 1
(str) The Android arch to build for, choices: armeabi-v7a, arm64-v8a, x86, x86_64
android.arch = armeabi-v7a, arm64-v8a
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:
(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
I tried to do all arches on buildozer.spec and notice that Kivy doesn't work on Google play which requires arm64-v8a and armeabi_v7a simultaneously. Does anyone succeed in building those together? Maybe not working...
I have recently uploaded kivy app to google play successfully. I don't use buildozer, just p4a. I had to build 2 apks for 64 and 32 bits and uploaded both of them to google play.
@snmsung716 python-for-android does not support building multi-arch apks. It's probably possible with some work, but would have the disadvantage of the apk being almost double the size. For this reason, nobody is actively working on it, but a pull request to add such a feature would be welcome.
The supported alternative is, as @Fak3 said, to build one apk for each architecture.
Thank you for the idea! Finally, I succeeded in building both of them separately and uploaded and published those on Google Play!
You can upload both versions, the requirement is that you provide _at
least_ a 64 bit version.
That said, you should also check if your phone is 64 bit. If it is
supposed to be, the crash could be for some other reason.
On 03/08/2020 19:23, abstractdonut wrote:
>
I have a brand new phone but only the .apk targeting armeabi-v7a runs
on it. The arm64-v8a version simply crashes immediately. Yet Google
will only accept the 64-bit version. What a headache.—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/kivy/python-for-android/issues/1519#issuecomment-668172320,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAJVBGY23Y3MUSVZH5DQW3DR636BTANCNFSM4GJUB4VQ.
You can upload both versions, the requirement is that you provide _at least_ a 64 bit version. That said, you should also check if your phone is 64 bit. If it is supposed to be, the crash could be for some other reason.
…
On 03/08/2020 19:23, abstractdonut wrote: I have a brand new phone but only the .apk targeting armeabi-v7a runs on it. The arm64-v8a version simply crashes immediately. Yet Google will only accept the 64-bit version. What a headache. — You are receiving this because you commented. Reply to this email directly, view it on GitHub <#1519 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAJVBGY23Y3MUSVZH5DQW3DR636BTANCNFSM4GJUB4VQ.
Hi! I have the same issue. The armeabi-v7 compilation works on my phone, and I upload it to Google Play , but the arm64-v8a shows that "Is not compatible" in my phone. I'm affraid to upload this version to GooglePlay without testing in any phone.... Do you think that Google will test it before launching??
I have done this via buildozer two times separately. First v7 , deleting all .buildozer and then v8...
Any suggestions??
Most helpful comment
Please post the full log of the failing build.
On 05/09/2019 21:29, Erick Lee wrote:
>