Apk Upload error in playstore - 64 bit warning

2020-03-03 08:27发布

问题:

I am using this implementation: 'com.google.vr:sdk-panowidget:1.160.0' in order to show 360 image, but I get the error below; while uploading app to play store:

Error
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: 130.

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 that it needs. 
This avoids increasing the overall size of your app. Learn More

Note: The lib is not creating lib/x86_64.so file.

Please help!

回答1:

I had the same problem with my app and this is what worked for me.

I'm using the AAB format to upload the app and my build.gradle had this architecture targets: "armeabi-v7a", "arm64-v8a, "x86","x86_64". But after building the project, the 'x86_64' folder was not created inside the AAB. So I decided to remove 'x86' and 'x86_64' and now my build.graddle looks like this

     defaultConfig {
        ...
        ndk {
            abiFilters  "armeabi-v7a", "arm64-v8a"
        }
        ...
     }
     splits {
        abi {
            ...
            include  "armeabi-v7a", "arm64-v8a"
        }
     }
     applicationVariants.all { variant ->
        variant.outputs.each { output ->
            // For each separate APK per architecture, set a unique version code as described here:
            // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
            def versionCodes = ["armeabi-v7a":1, "arm64-v8a":2]
            def abi = output.getFilter(OutputFile.ABI)
            if (abi != null) {  // null for the universal-debug, universal-release variants
                output.versionCodeOverride =
                        versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
            }
        }
     }

This allow me to publish in google playstore with any problems. Hope it helps!

NOTE: Please, note that removing target architectures results in less target devices, as @UzairAslam says in comments below. So, try to understand if this workaround fits to your project needs.



回答2:

Starting August 1, 2019:

  • All new apps and app updates that include native code are required to provide 64-bit versions in addition to 32-bit versions when publishing to Google Play.
  • Extensions: Google Play will continue to accept 32-bit only updates to existing games that use the following SDKs:

    • Corona Labs SDK - until August 2020
    • Adobe Air software and the AIR SDK - until August 2020
    • Unity 5.6.7 or older - until August 2021

See https://android-developers.googleblog.com/2019/01/get-your-apps-ready-for-64-bit.html for more info



回答3:

Check for analyzation. steps are Here. After follwing the steps and generating apk, When uploaded to play store it gives same error.

Before uploading to play store check whether your apk is supporting 64 bit architecture or not. Follow and check instructions given Here. Specially follow Using Bundletool which is mentioned in link.

Hint: while Using bundle tool. keep your jks, aab, and build tool jar file in same folder.

If still you are getting a warning in command prompt as "WARNING: App Bundle contains 32-bit RenderScript bitcode file (.bc) which disabl es 64-bit support in Android. 64-bit native libraries won't be included in gener ated APKs." then you need to check your code.

Possibilities are, you may added a project as a module and that may have native code. So how to check your project has native code. for this check res/raw folder in each and every module. It may have *.bc files. Try to update renderscriptTargetApi in your modules gradle file if your module is using any scripting files/classes.

If the issues got fixed then probably you will not see *.bc files in any folder and then check once again in command prompt for support of 64 bit. If you won't get any warning then your are good to go and deploy.