Ce que cela signifie
Android 14 a rendu obligatoire le type de chaque service de premier plan, pour que le système et Google Play sachent pourquoi le service tourne (lecture multimédia, localisation, synchronisation de données, etc.). Chaque type a sa propre permission en plus de android.permission.FOREGROUND_SERVICE ; certains types exigent aussi une permission d'exécution, comme la caméra ou la localisation.
Le contrôle signale deux cas : l'application demande FOREGROUND_SERVICE mais aucun service ne déclare de type, et un service déclare un type sans sa permission FOREGROUND_SERVICE_*. Les deux sont signalés en info : ils ne plantent à l'exécution que si le service est réellement lancé, et les services déclarés par des bibliothèques listent souvent des types que l'application n'utilise jamais.
Échéance
Pas de date propre au store : la règle s'applique dès que targetSdkVersion vaut 34 ou plus, ce que rend obligatoire l'exigence de niveau d'API cible de Google Play.
Corriger
1. Déclarer le type et sa permission
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
<service
android:name=".PlayerService"
android:foregroundServiceType="mediaPlayback"
android:exported="false" />2. Passer le type au lancement
ServiceCompat.startForeground(
this, NOTIFICATION_ID, notification,
ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK
)3. Retirer ce qui ne sert pas
Si l'application demande FOREGROUND_SERVICE sans lancer de service de premier plan, retirez la permission. Si une bibliothèque déclare un type que vous ne lancez jamais, la permission manquante est sans effet à l'exécution, mais le type exige quand même une déclaration dans la Play Console (voir la page liée).
Vérifier avant de soumettre
Déposez l'APK, AAB ou lot d'APK fractionnés (XAPK, APKS, APKM) sur la page de contrôle des stores. Elle exécute PLAY-FGS-TYPE PLAY-FGS-PERMISSION avec les dates de cette page, puis supprime le fichier : rien de l'application n'est conservé. Le même moteur tourne hors ligne dans la CLI Narvy et renvoie le code 1 quand un point bloquant est trouvé, ce qui permet de bloquer un job de CI.
narvy store-check app-release.aab --lang frQuestions fréquentes
Quel type choisir ?
Celui qui correspond à ce que voit l'utilisateur : mediaPlayback, location, dataSync, connectedDevice, camera, microphone, phoneCall, health, remoteMessaging, mediaProjection, mediaProcessing, shortService, specialUse ou systemExempted. La page des types de services d'Android détaille les conditions de chacun.
shortService a-t-il besoin d'une permission dédiée ?
Non. shortService n'a besoin que de FOREGROUND_SERVICE ; le contrôle n'attend pas de permission spécifique pour ce type.