Удалите дополнительные нежелательные разрешения из манифеста Android

У меня есть приложение для Android, я хочу проверить, требуются ли все разрешения, упомянутые в манифесте, или нет?

В основном я хочу удалить нежелательные разрешения.

Что я должен делать?

заранее спасибо


person Mitul Nakum    schedule 24.11.2011    source источник
comment
Связанные/обман: очистить неиспользуемые разрешения Android   -  person blahdiblah    schedule 29.04.2015


Ответы (5)


Ответ пользователя 370305, как правило, правильный. Ваш сторонний код должен адекватно документировать, какие разрешения ему нужны — объедините это с разрешениями, которые нужны вашему собственному коду, и вы должны быть настроены.

Если вы чувствуете, что этого недостаточно, то:

Шаг № 1: Напишите набор модульных тестов.

Шаг № 2: Добавляйте тесты в набор, пока не получите полное покрытие операторов.

Шаг № 3: Пройдите все тесты в наборе модульных тестов.

Шаг № 4: Удалите разрешение и посмотрите, не пройдут ли тесты. Восстановите разрешения, которые вызывают сбой набора тестов. Повторите для всех разрешений, в которых вы не уверены.

person CommonsWare    schedule 24.11.2011

Для Android-студии:

1) Найдите, какие разрешения добавлены (приложение\сборка\промежуточные\манифесты)

2) Добавьте эти разрешения с помощью tools:node="remove"

Пример:

Я обнаружил, что у меня есть нежелательное разрешение:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

И я удалил его, добавив это в манифест моего приложения:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove"/>
person Michal    schedule 13.10.2015

Вы можете удалить разрешение и проверить результаты анализа. Если результаты чистые, разрешение не используется.

Analyse -> Run Inspection by Name -> Type "Missing Permissions" -> Run

Студия Android Версия: 3.0.1

person Sameer Tanuj    schedule 29.12.2017

Вы должны знать, какие функции и компоненты используются в вашем приложении. На основе необходимости этого компонента вы должны добавить только эти разрешения. Не все. Джуси проверяет и удаляет другие разрешения вручную из манифеста.

person user370305    schedule 24.11.2011
comment
иногда мы принимаем открытый исходный код, чтобы выполнить нашу задачу, и есть вероятность, что мы не известны. и удалить разрешения вручную, может случиться так, что по ошибке я удалю нужное, и это сгенерирует исключение. - person Mitul Nakum; 24.11.2011

если кто-то использует Ionic: вы можете написать хук для удаления нежелательных разрешений. это может помочь с ci-cd

Например, в вашем проекте Cordova создайте hooks/remove_permissions.js:

#!/usr/bin/env node
'use strict';
var permissionsToRemove = ['BLUETOOTH', 'WAKE_LOCK', 'FOREGROUND_SERVICE', 'BACKGROUND_SERVICE'];

var fs = require('fs');
var path = require('path');
var rootdir = '';
var manifestFile = path.join(rootdir, 'platforms/android/app/src/main/AndroidManifest.xml');

fs.readFile(manifestFile, 'utf8', function (err, data) {
    if (err) {
        return console.log(err);
    }

    var result = data;
    for (var i = 0; i < permissionsToRemove.length; i++) {

        console.log('Removing: <uses-permission android:name="android.permission.' + permissionsToRemove[i] + '" />');
        result = result.replace(
            '<uses-permission android:name="android.permission.' + permissionsToRemove[i] + '" />', '');
    }

    fs.writeFile(manifestFile, result, 'utf8', function (err) {
        if (err) {
            return console.log(err);
        }
    });
});

Затем сошлитесь на него из вашего config.xml:

<platform name="android">
...
<hook type="after_prepare" src="hooks/remove_permissions.js" />
</platform>
person Ragesh Pikalmunde    schedule 04.09.2020