Имам приложение за Android, искам да проверя дали всички разрешения, споменати в манифеста, са необходими или не?
По принцип искам да премахна нежеланите разрешения.
Какво трябва да направя?
Благодаря предварително
Имам приложение за Android, искам да проверя дали всички разрешения, споменати в манифеста, са необходими или не?
По принцип искам да премахна нежеланите разрешения.
Какво трябва да направя?
Благодаря предварително
Отговорът, даден от user370305, като цяло е правилният. Вашият код на трета страна трябва адекватно да документира от какви разрешения се нуждае - комбинирайте това с разрешенията, от които се нуждае вашият собствен код, и трябва да сте готови.
Ако смятате, че това е недостатъчно, тогава:
Стъпка #1: Напишете модулен тестов пакет.
Стъпка 2: Добавете тестове към пакета, докато получите пълно покритие на изявленията.
Стъпка #3: Получете преминаване на всички тестове в пакета за тестове на единица.
Стъпка #4: Премахнете разрешение и вижте дали тестовете са неуспешни. Възстановете разрешенията, които причиняват повреда на тестовия пакет. Повторете за всички разрешения, за които не сте сигурни.
За Android Studio:
1) Намерете кои разрешения са добавени (app\build\intermediates\manifests)
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"/>
Можете да премахнете разрешението и да проверите резултатите от lint. Ако резултатите са чисти, тогава разрешението не се използва.
Analyse -> Run Inspection by Name -> Type "Missing Permissions" -> Run
Android studio Версия: 3.0.1
Трябва да знаете коя функция и компонент се използват във вашето приложение. Въз основа на нуждите на този компонент трябва да добавите само тези разрешения. Не всички. Jusi проверете и премахнете други разрешения ръчно от манифеста.
ако някой използва 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>