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
Related
I know this question has been asked before, but I am still struggling to find a functioning answer on how to properly achieve this. When I upload our APK to the Google Play dev console, I get the following warning:
Our application uses three jniLibs that fall into the following architectures: arm4-v8a, armeabi-v7a, and x86. Clicking the Learn More link attached to the error gives the following solution to this problem:
However, adding this ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86' in my default config in my build.gradle stills gives the same error referenced above. I am kind of lost on this as I am following what Google recommends and would appreciate any help on the matter.
Here's some additional information:
APK Analyzer Results
I am building a signed APK using the V2 (Full APK Signature).
Removing the x86 jniLib allows me to upload the APK to the Google Play store with zero errors, however, then I am unable to run the Android Emulator because the AVDs only support x86.
An optimal solution would either be: Upload the to the playstore with the x86 support without encountering any errors or upload to the Playstore without the x86 library and still be able to run the emulator within Android Studio. Any ideas?
I'd see two whole other options there ...
A) You'd have to exclude that Epson native assembly for x86 from the release build... because when x86 is present, it will also demand x86_64. I'd assume it is there for x86 emulation, but for debug builds this isn't the problem. Removing it and using a slow ARM emulator might not be the answer. Try adding this into buildTypes.release (in order to keep it for debugging purposes):
packagingOptions {
exclude "lib/x86/*.so"
}
B) Seiko Epson would meanwhile offer native assembly for x86_64 ...if you'd update their SDK.
Technically speaking, option A would be a whole lot better, because of a smaller package size.
Google Play Console states that if you support a 32-bit architecture, you must also support the corresponding 64-bit version.
I see two options:
Provide the x86_64 versions of your libs.
Remove the x86 version of your libs and use an arm architecture AVD system image, which are available.
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
I have an android app which I am trying to upload to Google Play Console.
After analyzing the apk, I can find the same .so files in x86, arm64-v8a and armeabi-v7a folders.
I don't have a x86_64 though.
But still, when I upload my apk to google play console, I get this error:
APKs or App Bundles are available to 64-bit devices, but they only
have 32-bit native code
I have followed the documentation to add
ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
in my build.gradle file, but that doesn't the structure of the apk.
This is how my analyzed apk looks like:
Please help.
The Agora SDK unfortunately does not support x86_64, which means you'll need to drop support for x86 altogether to be able to upload to the Play Console. Remove 'x86' and 'x86_64' from the list of abiFilters.
At the same time, I would recommend reaching our to the SDK developers to ask them to add support for it so you don't lose on potential users.
I recently get this error from google play console stating that
"This release is not compliant with Google Play 64-bit requirement.The following APKS are available with 64-bit devices but they only have 32-bit native code".
So I found the solution in google support and I am writing this piece of code in my defaultconfig in build.gradle
defaultConfig {
applicationId "com.abcdef"
multiDexEnabled true
ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64' //This line added
}
Note->My project is a hybrid project and not native
And after analyzing my apk after build I see two folders in lib directory i.e x86 & armeabi-v7a. There is no x86_64 & arm64-v8a directories present
So I am having a confusion that the APK That I have build is only 32 bit apk or will support both 32 and 64 bit.
It is having .so files also.
Its is just a query as from august 1st google play will not take apps with 64-bit compliance as stated in their documentation.
There is option in android studio to analyse APK. By this analysis you can confirm about what architecture (32/64 bit) your APK is supporting. Follow the below link having complete steps,
https://developer.android.com/distribute/best-practices/develop/64-bit
I am using mobile first development MFP-STUDIOS-7.1.0 so by configuring the project with latest ifix of MFP7.1.0 I was able to solve this problem by using MobileFirst Platform Studio 7.1.0.00-20190730-1558
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.