У меня есть приложение для Android, я хочу проверить, требуются ли все разрешения, упомянутые в манифесте, или нет?
В основном я хочу удалить нежелательные разрешения.
Что я должен делать?
заранее спасибо
У меня есть приложение для Android, я хочу проверить, требуются ли все разрешения, упомянутые в манифесте, или нет?
В основном я хочу удалить нежелательные разрешения.
Что я должен делать?
заранее спасибо
Ответ пользователя 370305, как правило, правильный. Ваш сторонний код должен адекватно документировать, какие разрешения ему нужны — объедините это с разрешениями, которые нужны вашему собственному коду, и вы должны быть настроены.
Если вы чувствуете, что этого недостаточно, то:
Шаг № 1: Напишите набор модульных тестов.
Шаг № 2: Добавляйте тесты в набор, пока не получите полное покрытие операторов.
Шаг № 3: Пройдите все тесты в наборе модульных тестов.
Шаг № 4: Удалите разрешение и посмотрите, не пройдут ли тесты. Восстановите разрешения, которые вызывают сбой набора тестов. Повторите для всех разрешений, в которых вы не уверены.
Для 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"/>
Вы можете удалить разрешение и проверить результаты анализа. Если результаты чистые, разрешение не используется.
Analyse -> Run Inspection by Name -> Type "Missing Permissions" -> Run
Студия Android Версия: 3.0.1
Вы должны знать, какие функции и компоненты используются в вашем приложении. На основе необходимости этого компонента вы должны добавить только эти разрешения. Не все. Джуси проверяет и удаляет другие разрешения вручную из манифеста.
если кто-то использует 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>