Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的Xamarin Android应用程序突然需要外部存储权限?_Android_Permissions_Xamarin.android_Xamarin - Fatal编程技术网

为什么我的Xamarin Android应用程序突然需要外部存储权限?

为什么我的Xamarin Android应用程序突然需要外部存储权限?,android,permissions,xamarin.android,xamarin,Android,Permissions,Xamarin.android,Xamarin,我有一个Xamarin Android应用程序,我一直在尝试为其创建更新。当一切都连接好并开始工作时,我终于发布了APK,我从Google Play收到一条消息,上传的APK现在需要两个额外的权限。用于读取和写入外部存储器!我的应用程序中根本不需要这些权限。我试着查看我的项目的Android清单,但没有看到列出这样的权限。我的应用程序的旧版本(使用旧版本的Xamarin Android)不需要这些权限。为什么Xamarin会突然注入我没有指定的权限 我可以证实,任何申请都是如此。我刚刚用它创建了

我有一个Xamarin Android应用程序,我一直在尝试为其创建更新。当一切都连接好并开始工作时,我终于发布了APK,我从Google Play收到一条消息,上传的APK现在需要两个额外的权限。用于读取和写入外部存储器!我的应用程序中根本不需要这些权限。我试着查看我的项目的Android清单,但没有看到列出这样的权限。我的应用程序的旧版本(使用旧版本的Xamarin Android)不需要这些权限。为什么Xamarin会突然注入我没有指定的权限


我可以证实,任何申请都是如此。我刚刚用它创建了一个新的android应用程序,它需要外部读/写权限,没有明显的方法来禁用该要求

查看
AssemblyInfo.cs
,默认模板底部有以下内容:

[assembly: UsesPermission(Android.Manifest.Permission.Internet)]
[assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)]
可以通过
AndroidManifest.xml
文件或通过
AssemblyInfo.cs
设置权限。删除这些行,不应再设置权限。

来自包/组件的权限 现在Xamarin组件和Xamarin友好的NuGet包无处不在,值得注意的是,现在也可以通过
AssemblyInfo.cs
从这些引用中引入权限

由于某些库在没有特定权限的情况下是无用的,因此避免出现问题是有意义的。但是,如果不需要它们,您可以通过引用一个新的包或组件来引入您实际上并不需要的权限

对于烘焙到NuGet包中的可选权限,您可能需要编译自己的库而不使用它们,以避免额外的权限开销。我还没有找到一种很好的方法来轻松地在源代码无法免费获得的包中识别这些代码。ILSpy似乎没有输出
AssemblyInfo.cs
属性

不幸的是,在中,默认情况下添加了这些权限,并显示一条消息,如果您不需要这些权限,可以将其删除

// Add some common permissions, these can be removed if not needed
[assembly: UsesPermission(Android.Manifest.Permission.Internet)]
[assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)]

由于它们是如此常见的权限,库的大多数作者和使用者都不会注意到(可能已经发生过这种情况)。

ugh为什么默认为可写外部存储?!无论如何,这实际上是一个bug,不是在我的应用程序中,而是我的应用程序正在使用的库!显然,Android库也默认拥有这些权限,这是非常意外的。Afaik,对于以前的版本,只有在调试版本中,这两个权限是默认添加的。然后,当人们的目标是发布,权限消失时,他们感到困惑。所以我认为Xamarin补充说,因为他们认为这是有用的。但你是对的。应用程序项目和库项目的默认模板都包括这些模板。如果您不需要它们,则需要将其移除。