Tester le comportement de visibilité des packages

Si votre application s'appuie sur des interactions avec d'autres applications pour terminer ses cas d'utilisation, il est utile de tester l'impact sur votre application des modifications de la visibilité du package introduites par Android 11 (niveau d'API 30).

Ce guide propose également des suggestions pour tester les changements de comportement et vous aide à configurer des messages de journal afin de déterminer plus précisément l'impact sur votre application.

Tester les changements de comportement

Pour tester si ce changement de comportement affecte votre application, procédez comme suit :

  1. Installez Android Studio 3.6.1 ou une version ultérieure.
  2. Installez la dernière version de Gradle compatible avec Android Studio.
  3. Définissez le paramètre targetSdkVersion de votre application sur 30 ou une version ultérieure.
  4. N'incluez pas l'élément <queries> dans le fichier manifeste de votre application.
  5. Appelez getInstalledApplications() ou getInstalledPackages(). Les deux méthodes renvoient une liste filtrée lorsqu'elles aboutissent.
  6. Identifiez les fonctionnalités de votre appli qui ne fonctionnent pas.
  7. Introduisez les entrées <queries> appropriées pour corriger ces fonctionnalités.

Configurer les messages de journal pour le filtrage des packages

Pour en savoir plus sur l'impact de la visibilité par défaut des applications sur votre application, vous pouvez activer les messages de journal pour le filtrage des packages. Si vous développez une application de test ou une application pouvant être déboguée dans Android Studio, la fonctionnalité du journal système vous la fournit. Sinon, vous pouvez exécuter la commande suivante dans une fenêtre de terminal pour l'activer manuellement :

adb shell pm log-visibility --enable PACKAGE_NAME

Ensuite, lorsque des packages sont éliminés des valeurs renvoyées d'un objet PackageManager par filtrage, un message semblable au suivant s'affiche dans Logcat :

I/AppsFilter: interaction: PackageSetting{7654321 \
  com.example.myapp/12345} -> PackageSetting{...} BLOCKED