So I haven\'t released in a while. Android Studio used to generate only one apk, which was a release version. This time it generated 3 like the following:
1
The generated apks each is for specific CPU Architecture. They usually are generated when using a native library inside the apk (more at Add C and C++ Code to Your Project). You can read about it in ABI Management, here the excerpt:
Different Android handsets use different CPUs, which in turn support different instruction sets. Each combination of CPU and instruction sets has its own Application Binary Interface, or ABI. The ABI defines, with great precision, how an application's machine code is supposed to interact with the system at runtime. You must specify an ABI for each CPU architecture you want your app to work with.
Each will contain specific instruction for the Architecture, except the app-universal-release.apk
.
app-armeabi-v7a-release.apk
is for v7-a ARM devices
app-x86-release.apk
is for "x86" or "IA-32"
app-universal-release.apk
contains both of the specific instruction in app-armeabi-v7a-release.apk
and app-x86-release.apk
You can use just the universal one, but you probably will not want to use it if the generated apk is too big. User tend to avoid a big application in the play store. So, to overcome this, you need to break the apk to a specific one so the resulted apk is smaller.
If you don't want to use the universal one, then you need to upload each of the specific apk to the Play Store. When user visit the application in the Play Store, he/she will be served with the specific apk matching with his/her device CPU type.