mrb*_*bay 6 permissions android command-line-interface cordova
我使用CLI来构建我的Cordova应用程序,并添加了Media插件.
'cordova build'会自动将android.permission.RECORD_AUDIO添加到我的AndroidManifest.xml中,即使我没有使用该权限.
那么我该如何删除它?每次我构建发布时,权限都会添加到apk中.
在你的项目中,编辑文件plugins/org.apache.cordova.media/plugin.xml你会看到android特定的配置
<platform name="android">
<config-file target="res/xml/config.xml" parent="/*">
<feature name="Media" >
<param name="android-package" value="org.apache.cordova.media.AudioHandler"/>
</feature>
</config-file>
<config-file target="AndroidManifest.xml" parent="/*">
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
</config-file>
...
Run Code Online (Sandbox Code Playgroud)
删除这样的行,<uses-permission android:name="android.permission.RECORD_AUDIO" />每次构建时都不会添加权限.
由于权限已经添加到AndroidManifest.xml,您必须手动删除它,然后它不会在下次构建时返回.
小智 6
为了防止插件重新添加不必要的权限编辑平台/ android/android.json.
找到这些行并删除它们:
{
"xml": "<uses-permission android:name=\"android.permission.RECORD_AUDIO\" />",
"count": 1
}
Run Code Online (Sandbox Code Playgroud)
请注意,这是一个"脏"的解决方案.添加/更新插件后,您可能需要重复此操作.
小智 5
我尝试了上述建议(来自QuickFix和leuk98743),但清单文件一直在重新生成。因此,我创建了一个挂钩来在构建过程中修改清单文件。
hooks/after_prepare/030_remove_permissions.js#!/usr/bin/env node
//
// This hook removes specific permissions from the AndroidManifest.xml
// The AndroidManifest is re-generated during the prepare stage,
// so this must be run on the "after_prepare" hook.
//
// Configure the permissions to be forcefully removed.
// NOTE: These permissions will be removed regardless of how many plugins
// require the permission. You can check the permission is only required
// by the plugin you *think* needs it, by looking at the "count" shown in
// your /plugins/android.json file.
// If the count is more than 1, you should search through
// the /plugins/<plugin-name>/plugin.xml files for <uses-permission> tags.
var permissionsToRemove = [ "RECORD_AUDIO", "MODIFY_AUDIO_SETTINGS", "READ_PHONE_STATE" ];
var fs = require('fs');
var path = require('path');
var rootdir = process.argv[2];
var manifestFile = path.join(rootdir, "platforms/android/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)
| 归档时间: |
|
| 查看次数: |
8910 次 |
| 最近记录: |