Expo - “从 5 月 5 日开始,您必须让我们知道为什么您的应用程序需要广泛的存储访问权限”

vin*_*hau 6 android react-native expo

谷歌游戏说。

Blockquote 我们检测到您的应用在 1 个或多个应用程序包或 APK 的清单文件中包含 requestLegacyExternalStorage 标志。

在运行 Android 11+ 的设备上拥有应用程序的 Blockquote 开发人员必须使用范围存储,以便用户更好地控制其设备存储。要在 5 月 5 日之后在 Android 11 或更高版本上发布您的应用,您必须:

Blockquote - 更新您的应用程序以使用更加隐私友好的最佳实践,例如存储访问框架或媒体存储 API - 更新您的应用程序以在清单文件中声明所有文件访问 (MANAGE_EXTERNAL_STORAGE) 权限,并完成所有文件访问权限声明从 5 月 5 日起在 Play 管理中心中 - 从您的应用中完全删除所有文件访问权限

Blockquote 对于面向 Android 11 的应用,将忽略 requestLegacyExternalStorage 标志。您必须使用所有文件访问权限才能保留广泛的访问权限。

未经允许使用而请求访问所有文件访问权限的 Blockquote 应用将从 Google Play 中删除,并且您将无法发布更新。

我的 package.json 文件如下。

 {
  "main": "node_modules/expo/AppEntry.js",
  "scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios",
    "web": "expo start --web",
    "eject": "expo eject"
  },
  "dependencies": {
    "@expo/vector-icons": "^12.0.2",
    "@react-native-community/async-storage": "^1.12.1",
    "@react-native-community/masked-view": "^0.1.10",
    "@react-navigation/drawer": "^5.11.4",
    "@react-navigation/native": "^5.8.10",
    "@react-navigation/stack": "^5.12.8",
    "expo": "~40.0.0",
    "expo-status-bar": "~1.0.3",
    "react": "16.13.1",
    "react-dom": "16.13.1",
    "react-native": "0.63.4",
    "react-native-base64": "^0.2.1",
    "react-native-gesture-handler": "^1.9.0",
    "react-native-maps": "0.27.1",
    "react-native-reanimated": "^1.13.2",
    "react-native-safe-area-context": "^3.1.9",
    "react-native-screens": "^2.16.1",
    "react-native-snap-carousel": "^3.9.1",
    "react-native-web": "~0.13.12",
    "react-navigation": "^4.4.3",
    "react-navigation-drawer": "^2.6.0",
    "react-navigation-stack": "^2.10.2",
    "react-redux": "^7.2.2",
    "redux": "^4.0.5",
    "expo-notifications": "~0.8.2",
    "expo-permissions": "~10.0.0"
  },
  "devDependencies": {
    "@babel/core": "~7.9.0"
  },
  "private": true
}
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?

vin*_*hau 4

@Tobias 分享了这个。https://github.com/expo/expo/issues/12603

SDK 41 包含使您的应用与 Android 11 兼容所需的所有更改,并且不应导致从 Play 商店中删除。您无需采取任何行动。仅仅因为您收到此警告,并不意味着您的应用程序违反了新的范围存储策略。根据 Google 某人的回复,他们向使用 requestLegacyExternalStorage 标志的任何人发送了此警告,因为这是他们可能需要声明 MANAGE_EXTERNAL_STORAGE 权限的应用程序的最佳指示器。没有 Expo 库需要 MANAGE_EXTERNAL_STORAGE 权限。

如果您使用的是 SDK 41 - 您无事可做,则可以忽略此警告。如果您使用的是 SDK 40 或更低版本 - 您可以忽略此警告,因为它特定于 Android 11。 裸工作流程 - 更新到最新版本的 expo-image-picker,并确保您的其他依赖项都不需要 MANAGE_EXTERNAL_STORAGE权限(从发布的 APK 中检查 AndroidManifest.xml)。