Android: This release is not compliant with the Google Play 64-bit requirement. How?
-
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.
-
@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.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 ?
-
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. -
@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.thanks!
The only difference between the versions (at this moment at least) is the version code so I'm going with the following:
android { # Android Version code, needs to be uped by 3! Automatic increase for v7a (+1) and v8a(+2). +0 for x86 ITERATION=1 QT += androidextras SOURCES +=\ cpp/android/androidshareutils.cpp HEADERS +=\ cpp/android/androidshareutils.h ANDROID_VERSION_NAME = $$VERSION ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android DISTFILES += \ android/res/drawable-hdpi/icon.png \ android/res/drawable-hdpi/splashLandscape.png \ android/res/drawable-hdpi/splashPortait.png \ ... android/build.gradle \ android/gradle/wrapper/gradle-wrapper.jar \ android/gradle/wrapper/gradle-wrapper.properties \ android/gradlew \ android/gradlew.bat \ android/AndroidManifest.xml RESOURCES += translations.qrc } contains(ANDROID_TARGET_ARCH, x86) { ANDROID_VERSION_CODE = $$ITERATION } contains(ANDROID_TARGET_ARCH,armeabi-v7a) { win32 { ITERATION = $$system("set /a $$ITERATION + 1") } else:unix { ITERATION = $$system("echo $(($$ITERATION + 1))") } ANDROID_VERSION_CODE = $$ITERATION } contains(ANDROID_TARGET_ARCH, arm64-v8a) { win32 { ITERATION = $$system("set /a $$ITERATION + 2") } else:unix { ITERATION = $$system("echo $(($$ITERATION + 2))") } ANDROID_VERSION_CODE = $$ITERATION }
If I later on integrate precompiled libs or something along the line, then @Wiru 's solution may come in handy.
https://forum.qt.io/topic/104388/qt-5-12-4-armv7-application-not-working-if-arm64-libs-are-present
Also FYI for anyone who comes across this thread, there's now a blog post on the website https://blog.qt.io/blog/2019/06/28/comply-upcoming-requirements-google-play/
explaining step by step on how to comply with the play store requirements. Until Qt 5.14 - when the aab support is supposed to be added - goes online.
-
found useful link with detailed instruction
https://blog.qt.io/blog/2019/06/28/comply-upcoming-requirements-google-play/ -
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
@Tuomo-Pelkonen
I have had the same experience. I created a new app in google console added 32 added 64bit versions following the blog by Eskill Abrahamsen Blomfeldtl. (which is a great help) The warning issue appears when you select the "SAVE" and "REVIEW" buttons which is currently beyond the scope of the Blog. -
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...
-
Just got this message from Google
Hello Google Play Developer, By August 1, 2019, all apps that use native code must provide a 64-bit version in order to publish an update. As of the sending of this email, at least one of your apps* does not yet meet the requirement:
-
This post is deleted!