Google is warning developers that starting Aug 1, 2019, all apps must be 64-bit.
I use Cordova to build our web app into an Android app and upload the generated 32-bit APK file into google play store
The Cordova crosswalk plugin allow me to build both 32-bit and 64-bit versions using the commands cordova build android --release and cordova build android --release --xwalk64bit respectively.
I used the same android version code for both the APKs when build
Questions:
Earlier I used to upload only the 32-bit version into the play store(Production Track). Right now, Since I have both 32-bit and 64-bit versions of APKs, should I upload both of the APKs into play store to support 32-bit and 64-bit mobiles?
What would be the process to upload both of 32-bit and 64-bit versions into production release? There is Google doc about multiple APKs but there is no mention about 32-bit and 64-bit versions.
Will play store take care of delivering 32-bit APK to 32-bit mobile and 64-bit APK to 64-bit mobile?
Note: I can't generate .aab using Android App Bundle package format since cordova-android is not started supporting yet and there is a Github issue created for that
I was facing issue in play store when uploading both 32-bit and 64-bit versions. It seems there an issue with crosswalk plugin while generating version code during the build. The issue is explained here https://stackoverflow.com/a/43570109/2474301
I had to make plugin code change as the answer explained in the StackOverflow link
After I made both 32-bit and 64-bit builds with proper version code, I'm able to upload both 32-bit and 64-bit APKs into google play store. Both the APKs are delivered to the appropriate mobile.
Related
I have built a game in Unity Android.
I want to upload multiple APKs targeting different CPU architectures in Google Play Developer Console.
Targeting 64 bit CPU architecture is compulsory, we cannot publish apps without targeting 64-bit architecture. I have uploaded APK targeting ARM64 CPU architecture and rolled it out to production successfully.
Now the problem is that I want to add APKs targeting ARMv7 (32-bit) and x86 CPU architectures.
For that, I have:
Created New Release.
Uploaded APK that targets ARMv7 with different Version code.
I have retained previous APK that was targeting ARM64 so that current release will offer 64-bit version for 64-bit devices.
Now when I Proceed to Review I am getting errors
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: 8.
Fully shadowed APK
Problem:
This APK will not be served to any users because it is completely shadowed by one or more APKs with higher version codes.
Here is the Screesnhot:
It is saying that I need to include support for 64-bit architecture. But I have already uploaded APK previously for the same. I cannot upload ARMv7 and x86 versions of the app.
Starting August 1, 2019, your apps published on Google Play will need to support 64-bit architectures. 64-bit CPUs deliver faster, richer experiences for your users. Adding a 64-bit version of your app provides performance improvements, makes way for future innovation, and sets you up for devices with 64-bit-only hardware.
Source: Support 64-bit architectures
If you are using a version of Unity that supports 64-bit Android libraries, you can generate a 64-bit version of your app by adjusting your build settings. You will also need to use the IL2CPP backend as your Scripting Backend (details here). To set up your Unity project to build 64-bit architecture, do the following:
Go to Build Settings and ensure you are building for Android by
verifying that the Unity symbol is next to Android under Platform.
If the Unity symbol is not next to the Android platform, select
Android and click Switch Platform.
Click Player settings.
Player settings in Unity
Navigate to Player Settings Panel > Settings for Android > Other
settings > Configuration
Set Scripting Backend to IL2CPP.
Select the Target Architecture > ARM64 checkbox.
set target architectures in Unity
Build as normal!
You should provide bigger bundle version code for more enchansed apk.
In this case arm64 Version Code must be 8, and arm-v7 Version Code is 7.
This is because the "device" is looking for the first matching APK with the highest Version Code. And since arm64 cpu support arm-v7, then in your case they will all receive the arm-v7 version, since its Version is higher, ie it hides the assembly for arm 64.
when i try to upload my up to google play i receive this erreur
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: 6.
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.
yes, the issue is you have not updated your library in Gradle some of your libraries still build in native 32-bit that's why u are getting this issue to fix this see all folders have the same no of file. And update ur Gradle libraries
Just found out that an app I released back in 2017 was removed from Google Play. I have my project saved, so I repackaged it and tried to rollout a release. But I have the following 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: 9.
I used UE version 4.21 to package the app.
It seems that it is an easy fix for Unity but I could not find any solutions for Unreal Engine.
My native android app gets rejected from the google play console due to the 64-bit requirement, even though it contains 64bit libraries.
I followed the steps on https://developer.android.com/distribute/best-practices/develop/64-bit by checking there are x86_64 and arm64_v8a folders which contain all the .so files.
I tested installing the app using adb install --abi arm64-v8a YOUR_APK_FILE.apk which installed successfully and the app runs fine on my Pixel3a.
I do not use ndk.abiFilters in my gradle file (which defaults to all architectures).
targetSdkVersion and compileSdkVersion is 28
Screenshot of the libraries in my generated apk:
https://imgur.com/a/iBoIazG. I believe this are all from the Fresco library. Extract from my gradle file:
implementation 'com.facebook.fresco:fresco:1.13.0'
implementation 'com.facebook.fresco:animated-webp:1.13.0'
implementation 'com.facebook.fresco:webpsupport:1.13.0'
I am not using the androidX support libraries so cannot go higher than that version of fresco.
Here is the error I get when trying to upload to the console
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: 74.
I have seen a few other posts about this error but they are normally related to ReactNative or Expo, whereas my app is full native android.
Anyone got any idea on what I'm doing wrong, or how the google console checks if an app is 64bit ready?
Thanks
I am trying to build an android app using cordova 8. As soon as cordova build android --release with keystore.
It releases 5 apk file in 5 folder, but I am not sure, which one to upload:-
arm64
armeabi
armv7
x86
x86_64
Now, I am not sure, which one to release and upload for google play after signing.
Are you using a plugin containing native libraries? (I'm still using version 6 of Cordova and have only one apk, so either it's new in earlier versions or it's something to do with your project).
The different APKs you're seeing are to support different processors on the devices.
Most devices use armv7 so that's probably the one you want to upload first, but you can upload all the apks to google play.
It you upload only one (ore some) of the APKs, your app will be compatible only with device using corresponding kind of processor.