由于后台位置权限,应用程序在 Play 商店被拒绝
App rejected on play store because of background location permission
我在将应用程序的新版本放入 Play 商店时遇到问题,希望有人能帮助我。这个应用程序的以前版本基本上是一个不同的应用程序,新版本是从头开始构建的。当我上传应用程序包以供审核时,我最终得到一个状态更新,指出后台位置权限存在问题,并且权限声明表中缺少它(因为我删除了它,所以不再需要它)。它声明至少有一项功能使用此访问权限。在受影响的 APK 中,它显示了一年前发布的捆绑包,这让我感到困惑。
“新”应用使用 ACCESS_FINE_LOCATION 和 ACCESS_COARSE_LOCATION 权限,compileSdkVersion 30、minSdk 21 和 targetSdk 30。这个版本不应该使用后台位置访问,所以另外我已经将以下行添加到 AndroidManifest.xml:
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" tools:node="remove"/>
我还在文件顶部的清单标签内声明了工具。
当我 运行 应用程序并查看它在 apps/myapp/permissions 下的权限时,我看到粗略和精细的位置访问权限,但没有后台访问权限。在 Play 商店中浏览捆绑包时,后台访问也不在权限列表中,在 AndroidStudio 中分析捆绑包和清单时也找不到。
在浏览这些包时,我找不到可能插入此权限的包的指示。
我想知道是否有更好的方法让我调试它而不是上传到 Play 商店进行审核以及我可能会在这里缺少批准的内容。
如果您绝对确定您没有在代码中的任何地方使用该权限。是时候检查你的依赖关系了,如果他们中的任何一个正在使用这个权限。
Android 10(API 级别 29)引入了 some changes 位置权限。该更改对针对旧版本 Android 的应用的影响如下:
If your app runs on Android 10 or higher but targets Android 9 (API level 29) or lower, the platform applies the following behavior:
- If your app declares a element for either ACCESS_FINE_LOCATION or ACCESS_COARSE_LOCATION, the system automatically adds a element for ACCESS_BACKGROUND_LOCATION during installation.
- If your app requests either ACCESS_FINE_LOCATION or ACCESS_COARSE_LOCATION, the system automatically adds ACCESS_BACKGROUND_LOCATION to the request.
所以您的应用程序的任何版本在 Google Play 中仍然可用,它使用 ACCESS_FINE_LOCATION
and/or ACCESS_COARSE_LOCATION
,并且具有 targetSdkVersion
<= 28现在自动在设备 运行 Android 10 或更高版本上拥有 ACCESS_BACKGROUND_LOCATION
。它是否真的在后台读取位置数据是另一回事;这里重要的是它声明了权限。
这些规则适用于您的所有发布轨道 - 无论是生产轨道、alpha/beta 轨道、内部测试轨道等。如果其中任何一个符合上面列出的条件,您将必须在该发布轨道上发布您应用的更新版本。
我在将应用程序的新版本放入 Play 商店时遇到问题,希望有人能帮助我。这个应用程序的以前版本基本上是一个不同的应用程序,新版本是从头开始构建的。当我上传应用程序包以供审核时,我最终得到一个状态更新,指出后台位置权限存在问题,并且权限声明表中缺少它(因为我删除了它,所以不再需要它)。它声明至少有一项功能使用此访问权限。在受影响的 APK 中,它显示了一年前发布的捆绑包,这让我感到困惑。
“新”应用使用 ACCESS_FINE_LOCATION 和 ACCESS_COARSE_LOCATION 权限,compileSdkVersion 30、minSdk 21 和 targetSdk 30。这个版本不应该使用后台位置访问,所以另外我已经将以下行添加到 AndroidManifest.xml:
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" tools:node="remove"/>
我还在文件顶部的清单标签内声明了工具。
当我 运行 应用程序并查看它在 apps/myapp/permissions 下的权限时,我看到粗略和精细的位置访问权限,但没有后台访问权限。在 Play 商店中浏览捆绑包时,后台访问也不在权限列表中,在 AndroidStudio 中分析捆绑包和清单时也找不到。
在浏览这些包时,我找不到可能插入此权限的包的指示。
我想知道是否有更好的方法让我调试它而不是上传到 Play 商店进行审核以及我可能会在这里缺少批准的内容。
如果您绝对确定您没有在代码中的任何地方使用该权限。是时候检查你的依赖关系了,如果他们中的任何一个正在使用这个权限。
Android 10(API 级别 29)引入了 some changes 位置权限。该更改对针对旧版本 Android 的应用的影响如下:
If your app runs on Android 10 or higher but targets Android 9 (API level 29) or lower, the platform applies the following behavior:
- If your app declares a element for either ACCESS_FINE_LOCATION or ACCESS_COARSE_LOCATION, the system automatically adds a element for ACCESS_BACKGROUND_LOCATION during installation.
- If your app requests either ACCESS_FINE_LOCATION or ACCESS_COARSE_LOCATION, the system automatically adds ACCESS_BACKGROUND_LOCATION to the request.
所以您的应用程序的任何版本在 Google Play 中仍然可用,它使用 ACCESS_FINE_LOCATION
and/or ACCESS_COARSE_LOCATION
,并且具有 targetSdkVersion
<= 28现在自动在设备 运行 Android 10 或更高版本上拥有 ACCESS_BACKGROUND_LOCATION
。它是否真的在后台读取位置数据是另一回事;这里重要的是它声明了权限。
这些规则适用于您的所有发布轨道 - 无论是生产轨道、alpha/beta 轨道、内部测试轨道等。如果其中任何一个符合上面列出的条件,您将必须在该发布轨道上发布您应用的更新版本。