Android: This release is not compliant with the Google Play 64-bit requirement. How?
-
Hello all!
I am not so experienced in Android (mostly I am developing for iOS/Macos) and I've got from Google this message 5 minutes ago ...Warning This release is not compliant with the Google Play 64-bit requirement The following APKs or App Bundles are available to 64-bit devices, but they only have 32-bit native code: 6. From August 1, 2019 all releases must be compliant with the Google Play 64-bit requirement. Include 64-bit and 32-bit native code in your app. Use the Android App Bundle publishing format to automatically ensure that each device architecture receives only the native code it needs. This avoids increasing the overall size of your app. Learn More
Is there Android App Bundle publishing ability in Qt?
-
@Galbarad This notice disappeared for me since I've built and published 3 version of *.apk for one release, one for x86, one for armeabi-v7a and one for arm64-v8a Will look on it further ... Started reading information about Android App Bundle publishing format. For me it's a little curious, because I've just started to develop for Android. Before it I thought iOS - pain ... I've been wrong about it ... :-)
-
This is what I found for the purpose of building Android App Bundle from command line. But how to connect it to Qt Creator builds - have no any clue ...
Briefly - it is the new format of application archive that is going to be delivered to Google Play that will include all-in-one instead of separated builds like now. It looks like very soon it's might be very critical in case of using Qt Creator for Android applications developing because it's totally changing schema of application directory structure and supplying it by libraries.
Suggestions?
-
It's already reported in Qt Issue Tracker QTBUG-68202 But in this track - total silence more then one year. But! Google already announced 1 Aug 2019, it's mean less than 3 month for developing solution for this issue.
-
The fast solution (I am in very doubt that Qt Developers will solve it rapid) might be like a script that is gathering in one the data from different builds in special order. But I really don't know how to do it for Android. Is there Android/Qt professionals?
-
@bogong
May be something you'll have to bring to the mailing list the actual qt developer are much more active over there then in this user based forum :) -
This has been discussed on mailing list before.
Uploading 3 different .apks works, is supported by Google, and solves the issue. Additional benefit is that your users will not have to download APK weighting 60+MB (that's 3x all Qt libraries, compiled for each architecture), but "just" 20MB instead. Everybody wins (except us poor developers who now have to produce 3 builds for each release...).
That's why there is silence in QTBUG-68202 - it is not urgent to support the new bundles.
-
However is not very clear to me the procedre to upload multiple apk compiled with different libraries. I guess the documentation is this but I don't understand very well this point:
Each APK must have a different version code, specified by the android:versionCode attribute.
That's mean if I want to upload an app version in two configuration 32 and 64 bit I have to upload the first apk 32 bit with version code, example, 1 and than upload the same apk but 64 bit with version code 2?
-
@Suppaman said in Android: This release is not compliant with the Google Play 64-bit requirement. How?:
However is not very clear to me the procedre to upload multiple apk compiled with different libraries. I guess the documentation is this but I don't understand very well this point:
Each APK must have a different version code, specified by the android:versionCode attribute.
That's mean if I want to upload an app version in two configuration 32 and 64 bit I have to upload the first apk 32 bit with version code, example, 1 and than upload the same apk but 64 bit with version code 2?
Yes, exactly. This can be done automatically using QMAKE_SUBSTITUTES:
.pro
# Increment by 3! ITERATION=1 android:contains(QT_ARCH, i386) { win32 { ITERATION = $$system("set /a $$ITERATION + 1") } else:unix { ITERATION = $$system("echo $(($$ITERATION + 1))") } manifest.input = $$PWD/AndroidManifest.xml.in manifest.output = $$PWD/i386/AndroidManifest.xml QMAKE_SUBSTITUTES += manifest } contains(ANDROID_TARGET_ARCH, arm64-v8a) { win32 { ITERATION = $$system("set /a $$ITERATION + 2") } else:unix { ITERATION = $$system("echo $(($$ITERATION + 2))") } manifest.input = $$PWD/AndroidManifest.xml.in manifest.output = $$PWD/arm64/AndroidManifest.xml QMAKE_SUBSTITUTES += manifest } contains(ANDROID_TARGET_ARCH, armeabi-v7a) { manifest.input = $$PWD/AndroidManifest.xml.in manifest.output = $$PWD/arm32/AndroidManifest.xml QMAKE_SUBSTITUTES += manifest }
android:versionCode='"$${ITERATION}"'
With this you only have to maintain a single AndroidManifest, and all builds will get separate version code. You just have to remember to bump
ITERATION
by 3 every time you want to upload a new version to Play Store. -
@sierdzio Thanks man, it's working for me. This is a good solution provisionally.
-
Just for avoid mistakes I would like to have a clarification before try a new upload. In case of new version is needed to create a new release in the Android Console web site. Inside this release I upload the 32 version of apk with version number, for example, 1. Than I compile the same apk but with 64 bit libraries and increase the version number to 2. Now this "new" version have to be uploaded in the same new release session of the previous apk or I have to create a new release session specific for the 64 bit version?
Thank you -
Hi,
I tried like Suppaman has described. I uploaded three versions of the APK to my Alpha Track.
If I try to "Submit it", I don't know what the english text is. In German it is "ALPHVERSION EINFÜHREN".
I get the Warning that I have to use "Android App Bundle". This is a Warning I can not Ignore. I can't submit the version to the Playstore.Hope you can help me
Sebastian
-
I also followed Suppamans advice when trying to create internal test but was unable to get it to work:
For the armeabi-v7a I get this warning
For arm64-v8a i get these
So at least for me this does not seem to work. I have built these packages normally as before, only now adding the 64bit version as suggested. There are OpenSSL libraries bundled in the packages, 32bit version for 32bit apk and 64bit version for 64bit apk, if that matters anything.
-Tuomo
-
Me too have same problems. It would be useful to have a setp by step guide from Qt team regarding how to bypass the Google Play warning without have the new App Bundle Apk. Final timeline date of 1 august is very close and after this date, winthout a solution, it will be impossible to upload new app made with Qt Creator...
-
We set different version code for the armv7, arm64 and x86 apks. We've been able to successfully upload the armv7 and arm64 apks to the same Google Play store item without receiving any warning messages.
When we upload the x86 apk also along with the arm apks, we get a warning message for the 64bit requirement. I believe this is because of the missing x86_64 apk which is the 64bit variant for x86.
I just noticed that https://bugreports.qt.io/browse/QTBUG-47672 is marked as resolved in Qt5.13.
-
hi @sierdzio
I'm working on this now, too, release state, finally !!
And I wanted to implement your version/build control
Question if I may, why do you go the way over
QMAKE_SUBSTITUTES
instead of using the predefined variableANDROID_VERSION_CODE
?Is it only to reduce the number of AndroidManifest.xml files down to 1, instead of 1 per build architecture ?
-
@J.Hilk said in Android: This release is not compliant with the Google Play 64-bit requirement. How?:
hi @sierdzio
I'm working on this now, too, release state, finally !!
Congrats :-)
And I wanted to implement your version/build control
Question if I may, why do you go the way over
QMAKE_SUBSTITUTES
instead of using the predefined variableANDROID_VERSION_CODE
?Is it only to reduce the number of AndroidManifest.xml files down to 1, instead of 1 per build architecture ?
Yes - I used to have separate manifests but it was very tedious to maintain them all.
I also use
QMAKE_SUBSTITUTES
to keep a single version number, application name, the domain etc. - all info needed on all platforms (and also to update version string in doxygen configuration file).But definitely it's not a requirement to use
QMAKE_SUBSTITUTES
, just a convenience.