Many people wonder why some apps in the Google Play store did not appear on their phones or their friends' phones. This was something that many of my relatives and friends went through and they asked me about it, and their phones were always weak or medium or did not have many features.
So the Google Play Store is evolving day by day, and it supports a really awesome filtering feature that is actually in collaboration with application developers.
I will explain to you in detail how filtering is done according to the device used to search, starting with the development of any application or game.
Some applications do not use all the features of the device, but some of them, and some applications such as heavy games require certain hardware that does not exist in all devices. Some require at least 2 GB RAM and some of them only work on a certain Android version , And some other applications use certain camera features may not exist in all devices and that is why the need for filtering to get the greatest compatibility between devices and applications This process is as follows:
At first, when an application developer writes the code to implement it, it has to declare the features and type of hardware it needs to work smoothly and do so through the Android Package Manager or the Android management package, which contains many of the functions and constants that we can use as application developers to define Features needed by the application such as:
Call the Bluetooth feature: android.hardware.bluetooth
Which is used to indicate that the application needs the Bluetooth feature on the device to work
Call feature fingerprint: android.hardware.fingerprint
Used if the application needs a fingerprint reader to work, meaning that if the device does not have a fingerprint reader, the application will not appear on this device and I will explain later how.
But some applications may not need certain features to work but need to work better or full, such as fingerprint feature Some applications give us the ability to document our account within the application through the fingerprint is an additional advantage that the application works without them, but if we like to take advantage of these The feature must contain a fingerprint reader. In order for the programmer to determine this, we have some functions that take either True or False values so that True is used to indicate that the application will not work without this feature. In this case, the application will not appear on the machines that Do not carry this feature, either Paypal For False, it indicates that the application works on devices that do not have this property but preferably exist, so the application appears to most users.
In addition, there are some features that carry multiple versions such as Bluetooth 5.0, we can also programmers and application developers to determine what version supported and required in the device to run the application.
When a user opens the Google Play application, the store requests a list of the physical and software features of the device from the Android management package by calling (getSystemAvailableFeatures)
At the same time, when the programmer downloads its own application on the Google Play store, the store checks its Manifest file and looks at the features required by the application to work fully, along with some other features and some additional information, after which the store stores this information Internally as additional information about the application or so-called Metadata for the Android application .apk
Each time we search for an application on the Google Play store, it compares the features of the device obtained by the call (getSystemAvailableFeatures) as mentioned earlier with the Metadata of each application, check the presence of all the features required by the application in the device The store offers us this application so we can upload it, or we will not show the app in-store.
In general, this was a simple overview of the subject, and of course anyone interested could go to Google's developer site to get extensive information on this topic, but I did not want to convert the article into a software tutorial and mentioned all the supported features as well as the different Api versions and more.