android react-native在谷歌审批过程中避免 "Background location access not declared"

标签 android react-native react-native-android android-manifest android-permissions

好的,所以 Google 告诉我们“未声明后台位置访问”并且不允许我们发布我们的应用程序。我们没有使用背景位置,所以我们试图完全消除它。
当然我的 list 没有它:

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
    <uses-permission android:name="com.android.vending.BILLING" />
    <uses-feature android:name="android.hardware.location.gps"/>

我已经到处搜索了可能将 ACCESS_BACKGROUND_LOCATION 添加到我们的应用程序的任何内容,但一无所获。
使用银色搜索器:
ag ACCESS_BACKGROUND_LOCATION .
我已经检查了责备报告以寻找线索,并在任何带有“背景”一词的内容上倒退,但无济于事:
android/app/build/intermediates/manifest_merge_blame_file/myAppRelease/manifest-merger-blame-myapp-release-report.txt
我确实找到了一些额外的权限:
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

但我在那里没有看到任何危险信号..
我试过节点删除选项:
<manifest ...xmlns:tools="http://schemas.android.com/tools"...>
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" tools:node="remove" />
但什么都没有。
我也运行过 aapt2
$ aapt2 d permissions android/app/build/outputs/apk/myapp/release/app-myapp-release.apk
package: com.myapp
uses-permission: name='android.permission.INTERNET'
uses-permission: name='android.permission.ACCESS_COARSE_LOCATION'
uses-permission: name='android.permission.ACCESS_FINE_LOCATION'
uses-permission: name='android.permission.SYSTEM_ALERT_WINDOW'
uses-permission: name='com.android.vending.BILLING'
uses-permission: name='android.permission.ACCESS_NETWORK_STATE'
uses-permission: name='android.permission.ACCESS_WIFI_STATE'
uses-permission: name='android.permission.WAKE_LOCK'
这并没有告诉我更多..
我还观看了谷歌发布的关于背景位置的整个 youtube 视频,阅读了官方文档,并检查了关于此的每个堆栈溢出帖子——但他们只是推荐了我已经采取的步骤。
这是一个令人筋疲力尽的过程!我累极了。我最好的猜测是我们的一个依赖是问题,但我没有很好的线索来判断它可能是哪一个。
真的很感激一些新鲜的眼睛..也许有人在下面的这些包中遇到了这个,就像,就是那个!删除它!
否则,它会回到绝望的搜索和基于最少信息的蛮力重建..
  "dependencies": {
    "@mapbox/geo-viewport": "0.4.1",
    "@mapbox/geojson-extent": "0.3.2",
    "@mapbox/polyline": "1.1.1",
    "@ptomasroos/react-native-multi-slider": "1.0.0",
    "@react-native-community/async-storage": "1.12.0",
    "@react-native-community/masked-view": "0.1.10",
    "@react-native-community/netinfo": "4.7.0",
    "@react-native-mapbox-gl/maps": "7.0.8",
    "@sentry/react-native": "1.8.2",
    "@turf/along": "^6.0.1",
    "@turf/bearing": "^6.0.1",
    "@turf/distance": "^6.0.1",
    "@turf/helpers": "^6.1.4",
    "@turf/line-distance": "^4.7.3",
    "@turf/nearest": "^4.7.3",
    "check-node-version": "4.0.3",
    "deprecated-react-native-listview": "^0.0.6",
    "eslint-plugin-react": "7.21.2",
    "install": "^0.13.0",
    "npm": "6.14.8",
    "prop-types": "^15.6.0",
    "react": "16.11.0",
    "react-native": "0.62.2",
    "react-native-billing": "^3.0.0",
    "react-native-config": "^1.4.2",
    "react-native-elements": "^1.2.7",
    "react-native-gesture-handler": "1.8.0",
    "react-native-in-app-utils": "6.1.0",
    "react-native-linear-gradient": "^2.5.6",
    "react-native-mixpanel": "1.2.5",
    "react-native-rate": "1.0.9",
    "react-native-safe-area-context": "^3.1.8",
    "react-native-screens": "2.8.0",
    "react-native-splash-screen": "3.2.0",
    "react-native-sqlite-2": "1.7.0",
    "react-native-vector-icons": "^6.6.0",
    "react-native-webview": "10.9.3",
    "react-navigation": "4.0.10",
    "react-navigation-stack": "2.0.16",
    "url": "^0.11.0",
    "util": "0.12.3",
    "which-polygon": "2.2.0"
  },
  "devDependencies": {
    "babel-eslint": "^10.1.0",
    "eslint": "^6.8.0",
    "eslint-plugin-import": "2.22.1",
    "fs-extra": "^8.1.0",
    "jetifier": "1.6.6",
    "metro-react-native-babel-preset": "^0.58.0",
    "minimatch": "^3.0.4",
    "node-watch": "0.6.4",
    "rimraf": "2.7.1"
  }
希望右眼能看到这一点,或者可以指出一些东西..谢谢!
更新,从谷歌获得了更多细节:

Since your app does not need background location, please request to remove background usage and reach compliance:

If you are targeting Android 10 or newer (SDK level 29 or higher): Remove the ACCESS_BACKGROUND_LOCATION permission from your app APK or app bundle. If you’re using ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION, examine your code paths and restrict usage to foreground purposes only. (learn more: https://developer.android.com/training/location/background) You should no longer see the Location declaration listed in console under App Content. If your are targeting Android 9 or older (SDK level 28 or lower): If you’re already using ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION, examine your code paths and restrict usage to foreground purposes only. (learn more: https://developer.android.com/training/location/background) In your console declaration, select “No” to the question “Does your app access location in the background in APKs or app bundles targeting Android 9 or older?

最佳答案

我不是通过从 .js 中删除“ACCESS_BACKGROUND_LOCATION”来解决这个问题的。喜欢 grep -r "ACCESS_BACKGROUND_LOCATION" . | cut -c1-150确实如此,但只是从 .java 中删除“ACCESS_BACKGROUND_LOCATION”喜欢:

sed -i -e "s/.*ACCESS_BACKGROUND_LOCATION.*/return true;/g" node_modules/expo-location/android/src/main/java/expo/modules/location/LocationModule.java

关于android react-native在谷歌审批过程中避免 "Background location access not declared",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66362196/

相关文章:

react-native - 发生配置项目 ':app' 。 > 未能通知项目评估监听器

android - READ_EXTERNAL_STORAGE 权限在 list 中,但仍然不起作用

java - 有什么方法可以在按住另一个 View 一段时间后在另一个 View 之上打开一个不同的 View

java - getQuantityString(id,quantity,formatArgs)不适用于韩文字符串

android - 从 KOTLIN 的图库中选择多个图像(想要图像路径)

firebase - 将 Geofirex 与 React Native 和 rnfirebase 结合使用

reactjs - 如何从 React Native 上的 uri 获取图像高度和宽度?

java - 添加react navigation 6.x后无法使用yarn android

https - React-native 0.40+ 获取自签名证书

javascript - iOS 项目中缺少的 .a 文件