【发布时间】:2021-05-27 10:33:27
【问题描述】:
好的,所以 Google 告诉我们“未声明后台位置访问权限”并且不允许我们发布我们的应用。我们没有使用背景位置,因此我们正在尝试完全消除它。
我的清单当然没有:
<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"
}
希望右眼能看到这一点,或者可以指出一些东西..谢谢!
更新,从谷歌获得了更多细节:
由于您的应用不需要后台定位,请向 删除后台使用并达到合规性:
如果您的目标是 Android 10 或更高版本(SDK 级别 29 或更高版本): 从您的应用 APK 中删除 ACCESS_BACKGROUND_LOCATION 权限或 应用程序包。如果您使用 ACCESS_COARSE_LOCATION 或 ACCESS_FINE_LOCATION,检查您的代码路径并将使用限制为 仅用于前台目的。 (了解更多: https://developer.android.com/training/location/background) 你应该 不再看到应用程序下控制台中列出的位置声明 内容。如果您的目标是 Android 9 或更低版本(SDK 级别 28 或 较低):如果您已经在使用 ACCESS_COARSE_LOCATION 或 ACCESS_FINE_LOCATION,检查您的代码路径并将使用限制为 仅用于前台目的。 (了解更多: https://developer.android.com/training/location/background) 在你的 控制台声明,对问题“您的应用程序是否可以访问”选择“否” 定位于 Android 9 的 APK 或 app bundle 中的后台位置 还是更老?
【问题讨论】:
-
这个问题你解决了吗?我有同样的情况。我找不到请求位置的功能,甚至删除所有广告 SDK 也无济于事。
-
暂无解决方案,希望有人能帮助我们。更奇怪的是,这是一个白标应用程序,我们有同一个应用程序的多个版本——另一个版本刚刚被批准,没有问题。这个几乎是一样的。
-
这里描述了同样的情况stackoverflow.com/questions/65976756/…
-
是的,我遇到了那个.. 不幸的是,我们的问题已经持续了一段时间,并且没有任何修复的迹象..
-
您解决问题了吗?我还是没有。
标签: android react-native react-native-android android-manifest android-permissions