为什么我的 AndroidManifest 需要权限?

Why do I need permissions in my AndroidManifest?

我目前正在尝试从我的 AndroidManifest 中删除所有不需要的权限,我的第一个想法是删除所有权限,看看它是否会在构建时或 运行 时给我一个错误.当我删除所有这些时,我没有在构建或 运行 时失败。

更深入地观察,我发现生成的清单是在 /app/build/intermediates/manifest/full/debug/AndroidManifest 构建时生成的。令人惊讶的是,清单具有 几乎 我已删除的所有权限。

编辑

我想问一下,我是否可以接受将权限从我的 AndroidManifest 中删除,我知道这些权限将在构建时从我的 gradle 依赖项中合并。

如果在 gradle 中启用了清单合并,那么您将从依赖项 (https://developer.android.com/tools/building/manifest-merge.html) 中获取所有活动、权限和其他清单标签。您将只需要添加您的应用明确需要的那些。将您的应用程序依赖的权限添加到应用程序清单是一个很好的做法,即使它们是重复的,因为您的应用程序依赖项可能会在未来的版本中删除这些权限。

I am trying to ask if it is an acceptable practice for me to leave permissions out of my AndroidManifest that I know will be merged from my gradle dependencies at build.

从技术上讲它可以工作并且现在没有什么不好的,但是就像您不保留未使用的资产在您的应用 res/drawables 文件夹中一样,您的清单应该仅列出您的代码所需的这些权限。