cordova - 删除不必要的权限

vbe*_*nar 9 android cordova android-permissions

我需要在游戏中播放声音,所以我将org.apache.cordova.media插件添加到我的应用程序中.现在platforms/android/AndroidManifest.xml包含我不需要的2个条目:

<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
Run Code Online (Sandbox Code Playgroud)

如果删除这些行,则会重新生成此文件,并再次添加权限.删除这些权限的正确方法是什么?我使用apache cordova 3.5.0

小智 14

在项目的根目录中创建一个文件,并将其重命名为remove_permissions.js,然后将以下代码放入其中:

var permissionsToRemove = [ "RECORD_AUDIO", "MODIFY_AUDIO_SETTINGS"];

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++)
        result = result.replace( "<uses-permission android:name=\"android.permission." + permissionsToRemove[i] + "\" />", "" );

    fs.writeFile( manifestFile, result, "utf8", function( err )
    {
        if (err)
            return console.log( err );
    } );
} );
Run Code Online (Sandbox Code Playgroud)

打开config.xml并在Android部分中添加下面的行:

<platform name="android">
...
     <hook type="after_prepare" src="remove_permissions.js"/>
...
</platform>
Run Code Online (Sandbox Code Playgroud)

现在重建APK文件.

  • 在更高的cordova 版本中,AndroidManifest.xml 文件的位置已更改为platforms/android/app/src/main/AndroidManifest.xml 否则这是一个不错的方法。 (2认同)

cod*_*ion 12

你必须打开plugins/android.json,找到那个看起来像的文件部分

"AndroidManifest.xml": {
     "parents": {
         "/*": [
......
{
      "xml": "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\" />",
       "count": 1
},
......
{
      "xml": "<uses-permission android:name=\"android.permission.RECORD_AUDIO\" />",
       "count": 1
},
......
],
Run Code Online (Sandbox Code Playgroud)

并删除这些文件.删除该行后,请确保android.json仍然是有效的JSON文件.另请注意该count属性,该属性指示有多少插件使用权限.如果您的值超过1,您应该找到哪些其他插件可以使用该权限.此外,我不确定Cordova插件是否在没有适当权限的情况下被测试为可行,所以当您从该文件中删除权限时,您自己就可以了.

如果您将系统置于损坏状态,则始终可以删除平台和插件文件夹的所有内容,并通过运行重新创建项目

cordova create ...
cordova platform add ...
cordova plugin add ...
Run Code Online (Sandbox Code Playgroud)