来自包/组件的权限
现在 Xamarin 组件和 Xamarin 友好的 NuGet 包无处不在,值得注意的是,现在也可以通过AssemblyInfo.cs
这些引用引入权限。
由于某些库在没有特定权限的情况下将毫无用处,因此避免问题是有意义的。但是,如果不是一直都需要它们,您可以通过引用新的包或组件来引入您实际上并不想要的权限。
对于 NuGet 包中包含的可选权限,您可能需要在没有它们的情况下编译自己的库以避免额外的权限开销。我还没有找到一种很好的方法来轻松地在源代码不可免费获得的包中识别这些。ILSpy 似乎没有输出AssemblyInfo.cs
属性。
不幸的是,在旧的 Xamarin.Android 项目模板中,默认情况下添加了这些权限,并带有一条消息,如果您不需要它们,您可以将其删除。
// Add some common permissions, these can be removed if not needed
[assembly: UsesPermission(Android.Manifest.Permission.Internet)]
[assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)]
由于它们是如此常见的权限,因此该库的大多数作者和使用者都不会注意到(这可能在 Xam.PCL.Plugins 的 Settings 库中发生过)。