Подтвердить что ты не робот

Очистка неиспользуемых прав Android

Если бы я хотел исследовать, как и где разрешения [запрошенные в Mainfest.xml] были использованы в приложении для Android в целях их удаления, есть ли простой способ сделать это? Поддерживает ли lint или findbugs какую-либо поддержку для отслеживания разрешений, используемых/злоупотребляемых в проекте?

4b9b3361

Ответ 1

Я пришел из будущего, чтобы спасти твою жизнь.

Здесь (в будущем) LINT проверяет отсутствие разрешений, как вы можете видеть на LINT проверяет.

  • Итак, перейдите к AndroidManifest.xml и удалите все теги <uses-permission> с помощью разрешений для Android (это означает, что не удалять разрешения, принадлежащие вашему приложению, например UA_DATA и C2D_MESSAGE).
  • Затем запустите анализ LINT. Нажмите Analyze, затем Inspect Code...
  • Посмотрите под Android -> Constant and Resource Type Mismatches
  • Вы должны увидеть все отсутствующие разрешения.
  • Затем вы можете просто щелкнуть их правой кнопкой мыши и выбрать Apply fix "Add Permission". Если вы выберете этот вариант, Android Studio будет включать одно разрешение для каждой ошибки. Таким образом, вы получите несколько копий того же разрешения в вашем файле манифеста, просто удалите дубликаты. Вы также можете сделать это вручную.

Вот описание правила LINT:

ID ResourceType

Описание

В этой проверке отображаются вызовы Android API, которые были аннотированы с помощью различных аннотаций поддержки (таких как RequiresPermission или UiThread) и помечены любые вызовы, которые не используют API правильно, как указано аннотациями. Примеры ошибок, отмеченных этой проверкой:

  • Передача неправильного типа целочисленного ресурса (например, R.string) в API, который ожидает другого типа (например, R.dimen).
  • Забыть вызывать переопределенный метод (через супер) в методах, требующих его
  • Вызов метода, который требует разрешения без объявления этого разрешения в манифесте
  • Передача ссылки цвета ресурса на метод, который ожидает целочисленное значение RGB.

... и многое другое. Для получения дополнительной информации см. Документацию по адресу http://developer.android.com/tools/debugging/annotations.html


Я использую Android Studio 2.1.2.

Ответ 2

То, как я буду делать это для приложения, для которого я не написал код, - это удалить разрешения один за другим и каждый раз тестировать приложение. Когда это не удается, сузите его. Если нет, это разрешение не может быть использовано.

Ответ 3

Вам придется попытаться удалить их один за другим и проверить, что приложение все еще работает нормально. Это не проверяется линией каким-либо образом (это должно быть).

Когда они возвращаются (они в настоящее время недоступны), вы можете загрузить свой apk на этот сайт (если это нормально с вами) и позволить им статически анализировать разрешения, которые вы используете: http://www.android-permissions.org/

Ответ 4

Лучший способ - понять, что на самом деле может сделать. Если он когда-либо будет использовать камеру, то вы знаете, что вам нужно разрешение камеры.

Ответ 5

В вашем файле манифеста приложения вы должны иметь вкладку "Объединенный манифест" , там вы можете увидеть свой последний манифест и разрешения, которые вы запрашиваете, вы можете щелкнуть по разрешению, чтобы узнать, откуда оно взялось. (кто добавил его - ex ': sdk или какой код он пришел)

Существует также простой способ удалить разрешение, добавив в манифест:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" 
tools:node="remove" />

Также не забудьте добавить инструменты вверху:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="...">

Ответ 7

Или вы могли бы просто узнать, что делает ваше приложение, а затем пройти через разрешения и посмотреть, какие из них являются дополнительными. Что делает ваше приложение, какие функции телефона он использует. Там должна быть какая-то документация где-то о том, что она должна делать и какие методы там