web-dev-qa-db-fra.com

Comment vérifier si l'autorisation Android est réellement utilisée?


Je maintiens une application Android existante (très énorme, très sensible). 
L’autre jour, j’ai reçu un courrier électronique de la part de mon client indiquant que l’application déclarait peut-être les autorisations qui ne sont pas utilisées activement.

Par exemple, ils veulent que je supprime l'autorisation "WRITE_EXTERNAL_STORAGE".
Je l'ai enlevé et compilé et lance l'application. Il n'y a aucune erreur du tout. 
Mais, à cause de cela, je ne pense pas pouvoir présumer que l'autorisation n'est pas utilisée activement.

Ma question est "Est-ce que de toute façon je peux facilement et simplement vérifier l'autorisation si elle est utilisée activement?"

Franchement, je ne veux pas passer en revue tous les petits détails de cette application simplement pour préciser si la permission est requise ou non.
Je n'ai tout simplement pas le temps.

Mon objectif est de vérifier si l'autorisation est utilisée activement. Sinon, supprimez l'autorisation.
J'espère que cela prend moins de temps.

Cordialement

43
Aung Pyae

Dans Android Studio 1.3 et Android Support Library v7: 22.2.0, vous avez la solution.

Pas:

  1. Mettre à jour Android Studio vers la V1.3
  2. Mettez à jour votre bibliothèque de support Android en v7: 22.2.0
  3. Exécuter Android Lint (Analyser -> Inspecter le code), Dans Lint Error, reportez-vous au type "Android -> Constante et type de ressource MisMatch", qui indique toutes les méthodes nécessitant une autorisation.

Explication

  1. Android a introduit la nouvelle annotation @requirespermission.
  2. Toutes les méthodes du Kit de développement logiciel (SDK) nécessitant une autorisation sont annotées avec @requirespermission.
  3. Lorsque nous appelons une méthode sdk qui requiert une autorisation sans vérifier correctement si nous en avons la permission, Android studio commettra une erreur de lint.
22
Vasanth

Un groupe de Berkeley a écrit un papier à propos des autorisations Android. Ils parlent de sur-autorisations et ont développé un outil appelé Stowaway qui analyserait votre APK pour les autorisations non utilisées. L'analyse était basée sur les appels d'API de l'application et sur leur propre mappage des autorisations nécessaires pour chaque appel d'API (voir l'article pour plus de détails). L'outil génère un indicateur s'il existe dans le manifeste une autorisation qui n'est mappée à aucun des appels d'API trouvés dans l'APK.

Pendant un certain temps, une version Web de l'outil était disponible à l'adresse http://www.Android-permissions.org/ , mais elle date de l'époque de Gingerbread et n'a jamais été mise à jour. La page suggère maintenant d’utiliser PScout .

PScout réussit mieux que Stowaway à générer les cartes de permissions. Toutefois, PScout n’inclut pas d’analyseur APK. Vous devrez donc comparer manuellement les mappages qu’ils fournissent aux appels d’API effectués par votre application. Malheureusement, si vous souhaitez utiliser des cartes pour les versions ultérieures à la version 5.1.1, vous devrez les générer vous-même à l'aide du code fourni par PScout et de votre propre source Framework.

Vous pouvez également consulter les différents analyseurs APK ici pour voir s’ils incluent les fonctionnalités que vous recherchez.

13
Paul Ratazzi

J'ai essayé la méthode suggérée par Vasanth mais cela ne fonctionne pas pour moi. En fait, parce que mon projet contient des arômes et que l'inspection de code ne fonctionne pas pour le projet avec des arômes. Voir https://code.google.com/p/Android/issues/detail?id=210073 .

Mais exécuter Lint à partir de la console fonctionne. Donc, les étapes sont simples:

  1. Supprimer les autorisations de votre manifeste.
  2. Exécutez Lint pour la saveur comme décrit ici https://stackoverflow.com/a/32708435/1170154 .
  3. Ouvrez le résultat Lint et trouvez la section Correctness> Error MissingPermission: Permissions manquantes. Il contiendra tous les appels nécessitant des autorisations.
2
Yuriy Ashaev

À partir d'Android Studio 3.3, l'exécution de Analyze → Inspect Code vous informera des autorisations manquantes sous Android → Lint → Correctness → Missing Permissions.

0
WeNeigh