如何从弹出的 Expo 项目中删除 "android.hardware.location" 权限请求?

How to remove "android.hardware.location" permission request from ejected Expo project?

我有一个 React Native Expo 项目,它开始使用 Expo "managed workflow"。但是,从那时起我就退出了托管工作流程(同时仍在使用一些 expo 模块)。

我遇到的问题是 Expo 似乎向我的 Android 应用添加了任意权限请求。 我必须从应用程序中删除此特定权限请求:android.hardware.location.

我已经尝试了很多方法在我的 AndroidManifest.xml 文件中删除它,例如:

<uses-permission tools:node="remove" android:name="LOCATION_HARDWARE" />
<uses-permission tools:node="remove" android:name="ACCESS_COARSE_LOCATION" />
<uses-permission tools:node="remove" android:name="ACCESS_FINE_LOCATION" />
<uses-feature android:name="android.hardware.location" android:required="false" tools:node="remove" />

但最终捆绑的 Android 应用程序仍然请求 android.hardware.location 权限。

如何在捆绑应用程序之前删除它?

此问题已通过从 package.json 中删除 expo 依赖项得到解决。

expo 依赖项需要 expo-location,后者又请求各种 android 位置权限。

为了排除 expo 自动添加的任何权限,根据 expo documentation 你应该只添加 tools:node="remove" 到你的清单权限元素。现在,如果您想删除位置权限,这应该可以解决您的问题:

<manifest ... xmlns:tools="http://schemas.android.com/tools">
 ...
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" tools:node="remove" />
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" tools:node="remove" />
 ...
</manifest>

通过添加这些,硬件位置权限也应该消失。 不要忘记将 tools 命名空间添加到清单

的根元素