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?



  • received same alert right now(
    any solutions?



  • @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 ...

    This is application archive new architecture schema

    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?


  • Moderators

    @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 :)


  • Moderators

    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.



  • @J.Hilk Just sent. Will look on reply.



  • 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?


  • Moderators

    @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
    }
    
    

    AndroidManifest.xml.in

    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.

    0_1560177142611_3c8e3ddd-dd79-433b-823f-7816e81b7f80-image.png

    Hope you can help me

    Sebastian


  • Qt Champions 2018

    @Grisu Did you do what "Warnungen" suggest you to do? What warnings are those?



  • I also followed Suppamans advice when trying to create internal test but was unable to get it to work:

    0_1560442631386_7d90239f-6f3b-4c1b-8932-79ec5dce0874-image.png
    0_1560442667209_ac35bff6-cc25-4019-9df1-e52a3dbcaa1d-image.png

    For the armeabi-v7a I get this warning

    0_1560443090201_4f1634a4-5506-4e42-a8c8-26c551cae056-image.png

    For arm64-v8a i get these

    0_1560443038515_ef451566-d981-4c34-8cfb-1547d96774f3-image.png

    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.


  • Moderators

    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 variable ANDROID_VERSION_CODE ?

    Is it only to reduce the number of AndroidManifest.xml files down to 1, instead of 1 per build architecture ?


  • Moderators

    @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 variable ANDROID_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.


  • Moderators

    @sierdzio

    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.





  • @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.



  • @Suppaman
    Hi suppaman, I have not been able to publish a new app or update an existing app that complies with google as of a couple of weeks ago. I would like to update an existing app but google will not allow the process to get past the review stage.



  • 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: 
    

 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.