-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Google requiring 64 bits binary in August 2019 #1519
Comments
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 |
It looks like Google encourages one APK targeting multiple libs, so we don't have to submit multiple APKs. 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. |
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. |
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. |
So the suggestion when distributing apps on Google Play is to build two apks, one for When using buildozer+p4a, what is the suggested way of doing this? For example, it would be nice to be able to pass |
@SomberNight tito has created a PR at kivy/buildozer#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 |
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. 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
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 Buildozer failed to execute the last command |
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
2. sudo buildozer android debug
3. 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=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/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
<#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). Logsudo buildozer android debug Check configuration tokens
Buildozer failed to execute the last command Buildozer.spec[app] (str) Title of your application (str) Package name (str) Package domain (needed for android/ios packaging) (str) Source code where the main.py live (list) Source files to include (let empty to include all the files) (list) List of inclusions using pattern matching (list) Source files to exclude (let empty to not exclude anything) (list) List of directory to exclude (let empty to not exclude anything) (list) List of exclusions using pattern matching (str) Application versioning (method 1) (str) Application versioning (method 2) (list) Application requirements (str) Custom source folders for requirements (list) Garden requirements (str) Presplash of the application (str) Icon of the application (str) Supported orientation (one of landscape, sensorLandscape, portrait or all) (list) List of service to declare OSX Specific author = © Copyright Info change the major version of python used by the app Kivy version to use Android specific (bool) Indicate if the application should be fullscreen or not (string) Presplash background color (for new android toolchain) (list) Permissions (int) Target Android API, should be as high as possible. (int) Minimum API your APK will support. (int) Android SDK version to use (str) Android NDK version to use (int) Android NDK API to use. This is the minimum API your app will support, it should usually match android.minapi. (bool) Use --private data storage (True) or --dir public storage (False) (str) Android NDK directory (if empty, it will be automatically downloaded.) (str) Android SDK directory (if empty, it will be automatically downloaded.) (str) ANT directory (if empty, it will be automatically downloaded.) (bool) If True, then skip trying to update the Android sdk (bool) If True, then automatically accept SDK license (str) Android entry point, default is ok for Kivy-based app (list) Pattern to whitelist for the whole project (str) Path to a custom whitelist file (str) Path to a custom blacklist file (list) List of Java .jar files to add to the libs so that pyjnius can access (list) List of Java files to add to the android project (can be java or a (list) Android AAR archives to add (currently works only with sdl2_gradle (list) Gradle dependencies to add (currently works only with sdl2_gradle (list) Java classes to add as activities to the manifest. (str) OUYA Console category. Should be one of GAME or APP (str) Filename of OUYA Console icon. It must be a 732x412 png image. (str) XML file to include as an intent filters in tag (str) launchMode to set for the main activity (list) Android additional libraries to copy into libs/armeabi (bool) Indicate whether the screen should stay on (list) Android application meta-data to set (key=value format) (list) Android library project to add (will be added in the (list) Android shared libraries which will be added to AndroidManifest.xml using tag (str) Android logcat filters to use (bool) Copy library instead of making a libpymodules.so (str) The Android arch to build for, choices: armeabi-v7a, arm64-v8a, x86, x86_64 Python for android (p4a) specific (str) python-for-android fork to use, defaults to upstream (kivy) (str) python-for-android branch to use, defaults to master (str) python-for-android git clone directory (if empty, it will be automatically cloned from github) (str) The directory in which python-for-android should look for your own build recipes (if any) (str) Filename to the hook for p4a (str) Bootstrap to use for android builds (int) port number to specify an explicit --port= p4a argument (eg for bootstrap flask) iOS specific (str) Path to a custom kivy-ios folder Another platform dependency: ios-deploy (str) Name of the certificate to use for signing the debug version (str) Name of the certificate to use for signing the release version [buildozer] (int) Log level (0 = error only, 1 = info, 2 = debug (with command output)) (int) Display warning if buildozer is run as root (0 = False, 1 = True) (str) Path to build artifact storage, absolute or relative to spec file (str) Path to build output (i.e. .apk, .ipa) storage
[app]
[app:source.exclude_patterns]
[app@demo] [app:source.exclude_patterns@demo]
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
<#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 guess that we can close this one.
|
In https://android-developers.googleblog.com/2017/12/improving-app-security-and-performance.html:
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.The text was updated successfully, but these errors were encountered: