Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. Android: This release is not compliant with the Google Play 64-bit requirement. How?

Android: This release is not compliant with the Google Play 64-bit requirement. How?

Scheduled Pinned Locked Moved Solved Mobile and Embedded
26 Posts 12 Posters 13.8k Views 5 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • B Offline
    B Offline
    bogong
    wrote on last edited by bogong
    #4

    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?

    1 Reply Last reply
    2
    • B Offline
      B Offline
      bogong
      wrote on last edited by bogong
      #5

      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.

      1 Reply Last reply
      1
      • B Offline
        B Offline
        bogong
        wrote on last edited by
        #6

        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?

        J.HilkJ 1 Reply Last reply
        0
        • B bogong

          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?

          J.HilkJ Offline
          J.HilkJ Offline
          J.Hilk
          Moderators
          wrote on last edited by
          #7

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


          Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


          Q: What's that?
          A: It's blue light.
          Q: What does it do?
          A: It turns blue.

          B 1 Reply Last reply
          1
          • sierdzioS Offline
            sierdzioS Offline
            sierdzio
            Moderators
            wrote on last edited by
            #8

            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.

            (Z(:^

            1 Reply Last reply
            6
            • J.HilkJ J.Hilk

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

              B Offline
              B Offline
              bogong
              wrote on last edited by
              #9

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

              1 Reply Last reply
              0
              • deleted57D Offline
                deleted57D Offline
                deleted57
                wrote on last edited by
                #10

                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?

                sierdzioS 1 Reply Last reply
                0
                • deleted57D deleted57

                  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?

                  sierdzioS Offline
                  sierdzioS Offline
                  sierdzio
                  Moderators
                  wrote on last edited by
                  #11

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

                  (Z(:^

                  J.HilkJ 1 Reply Last reply
                  6
                  • J Offline
                    J Offline
                    julien_stalder_vysual
                    wrote on last edited by
                    #12

                    @sierdzio Thanks man, it's working for me. This is a good solution provisionally.

                    1 Reply Last reply
                    0
                    • deleted57D Offline
                      deleted57D Offline
                      deleted57
                      wrote on last edited by
                      #13

                      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

                      1 Reply Last reply
                      0
                      • G Offline
                        G Offline
                        Grisu
                        wrote on last edited by
                        #14

                        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

                        jsulmJ 1 Reply Last reply
                        0
                        • G Grisu

                          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

                          jsulmJ Offline
                          jsulmJ Offline
                          jsulm
                          Lifetime Qt Champion
                          wrote on last edited by
                          #15

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

                          https://forum.qt.io/topic/113070/qt-code-of-conduct

                          1 Reply Last reply
                          0
                          • T Offline
                            T Offline
                            Tuomo Pelkonen
                            wrote on last edited by
                            #16

                            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

                            M 1 Reply Last reply
                            1
                            • deleted57D Offline
                              deleted57D Offline
                              deleted57
                              wrote on last edited by
                              #17

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

                              M 1 Reply Last reply
                              0
                              • S Offline
                                S Offline
                                shob
                                wrote on last edited by
                                #18

                                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.

                                1 Reply Last reply
                                0
                                • sierdzioS sierdzio

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

                                  J.HilkJ Offline
                                  J.HilkJ Offline
                                  J.Hilk
                                  Moderators
                                  wrote on last edited by
                                  #19

                                  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 ?


                                  Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                                  Q: What's that?
                                  A: It's blue light.
                                  Q: What does it do?
                                  A: It turns blue.

                                  sierdzioS 1 Reply Last reply
                                  0
                                  • J.HilkJ J.Hilk

                                    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 ?

                                    sierdzioS Offline
                                    sierdzioS Offline
                                    sierdzio
                                    Moderators
                                    wrote on last edited by
                                    #20

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

                                    (Z(:^

                                    J.HilkJ 1 Reply Last reply
                                    1
                                    • sierdzioS sierdzio

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

                                      J.HilkJ Offline
                                      J.HilkJ Offline
                                      J.Hilk
                                      Moderators
                                      wrote on last edited by
                                      #21

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


                                      Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                                      Q: What's that?
                                      A: It's blue light.
                                      Q: What does it do?
                                      A: It turns blue.

                                      1 Reply Last reply
                                      1
                                      • G Offline
                                        G Offline
                                        Galbarad
                                        wrote on last edited by
                                        #22

                                        found useful link with detailed instruction
                                        https://blog.qt.io/blog/2019/06/28/comply-upcoming-requirements-google-play/

                                        1 Reply Last reply
                                        1
                                        • T Tuomo Pelkonen

                                          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

                                          M Offline
                                          M Offline
                                          mellon
                                          wrote on last edited by
                                          #23

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

                                          1 Reply Last reply
                                          0

                                          • Login

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved