I checked using my mobile phone and two other friends' devices. I discovered that the Google playstore shows that "app is not compatible" with newer Android versions, including 13, but it does show compatibility with older versions, such as <=11.But I found that even tough Google playstore shows it's not compatible still I am able to install it through ADB on my device.
I did some research and found some answers that it is because of this permission. Making it required= false will solve it.
<uses-feature
android:name="android.hardware.camera2"
android:required="false" />
But I have doubt. Then why actually I am able to install it via ADB but Google playstore shows not compatible? Moreover it is already required=false.
Will upgrading SDK versions to latest and modifying AndroidManifest.xml by upgrading user-permission to the latest version, Plus upgrading files that have functionalities that require user’s permission need to be changed to runtime permission solve this problem?
I am asking because this is not mine project so I don't have ability to publish it in Google Playstore and check whether changes worked or not.
So, If any other changes are required, please let me know. I would greatly appreciate it.
My device is Vivo T1 5G which is not compatible.
AndroidManifest.xml file is
<manifest package="org.catrobat.catroid"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:installLocation="auto">
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="false" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" tools:node="remove" />
<uses-feature
android:name="android.hardware.camera2"
android:required="false" />
<uses-permission android:name="android.permission.CAMERA" />
<!-- bluetooth -->
<uses-feature
android:name="android.hardware.bluetooth"
android:required="false" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS"
tools:ignore="ProtectedPermissions" />
<!-- gps -->
<uses-feature
android:name="android.hardware.location.gps"
android:required="false" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- nfc -->
<uses-feature
android:name="android.hardware.nfc"
android:required="false" />
<uses-permission android:name="android.permission.NFC" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<application
android:name=".CatroidApplication"
android:allowBackup="false"
android:icon="${appIcon}"
android:label="${appName}"
android:theme="@style/Catroid"
android:supportsRtl="true"
android:requestLegacyExternalStorage="false"
tools:ignore="UnusedAttribute"
tools:replace="android:label,android:allowBackup,android:name"
android:usesCleartextTraffic="true">
.....................
<service android:name=".transfers.project.ProjectUploadService" />
<service android:name=".transfers.project.ProjectDownloadService" />
<service android:name=".transfers.MediaDownloadService" />
<service android:name=".utils.notifications.StatusBarNotificationManager$NotificationActionService" />
<service android:name=".cast.CastService" android:exported="false"/>
<provider
android:authorities="${applicationId}.fileProvider"
android:name="androidx.core.content.FileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
</application>
</manifest>
And build.gradle file is
android {
compileSdkVersion 30
buildFeatures {
viewBinding true
}
defaultConfig {
minSdkVersion 23
targetSdkVersion 30
}
}
Your build.gradle file is specifying a minimum API of 23 (Android 6.0) and a maximum API of 30 (Android 11.0), so Google Play Store will not install it to anything outside of this range.
To enable Google Play Store to deliver to all of the latest versions, you should change the targetSDKVersion to 34 (Android 14) or 35 (Android 15 to come).
see https://apilevels.com/
You should of course build and test your App on those higher versions of Android, and deal with any issues, before you update it on Play Store.
The issue is probably related to Permissions. For example I see that you have permssion FOREGROUND_SERVICE. For the latest versions >=34 (Build.VERSION_CODES_UPSIDE_DOWN_CAKE) you need to request FOREGROUND_SERVICE_XXX where _XXX is one of a set, e.g. FOREGROUND_SERVICE_LOCATION Below 34, in your code, you need to request FOREGROUND_SERVICE
There may be others, but I know that one from my own experience.