如何解决React Native应用提交PlayStore时的后台位置权限报错?
问题:未使用位置权限的ToDoList应用提交Google Play时触发后台位置访问报错
我开发了一个简易ToDoList应用,完全没有添加任何访问位置信息的代码或依赖包,但提交到Google Play Store时,收到了应用正在访问后台位置的报错。
项目仅安装了ion icons相关依赖,检查AndroidManifest.xml后也没发现任何和后台位置相关的配置。
Package.json 内容
{ "name": "todolist", "version": "1.0.0", "main": "node_modules/expo/AppEntry.js", "scripts": { "start": "expo start", "android": "expo start --android", "ios": "expo start --ios", "web": "expo start --web" }, "dependencies": { "eas": "^0.1.0", "expo": "~46.0.9", "expo-status-bar": "~1.4.0", "expo-updates": "~0.14.5", "react": "18.0.0", "react-native": "0.69.5", "react-native-ionicons": "^4.6.5", "react-native-vector-icons": "^9.2.0" }, "devDependencies": { "@babel/core": "^7.12.9" }, "private": true }
AndroidManifest.xml 内容
<uses-permission android:name="android.permission.INTERNET" /> <application android:name=".MainApplication" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" android:allowBackup="false" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" android:launchMode="singleTask" android:windowSoftInputMode="adjustResize" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>
排查与解决方法
- 检查Expo隐式权限:Expo核心包可能默认注入权限,可通过
eas build --local生成本地构建包,查看产物中最终的AndroidManifest.xml;或运行expo prebuild生成原生项目后直接检查Manifest。 - 主动屏蔽权限:在
app.json/app.config.js中添加配置,强制移除位置相关权限:"android": { "blockedPermissions": [ "ACCESS_BACKGROUND_LOCATION", "ACCESS_FINE_LOCATION", "ACCESS_COARSE_LOCATION" ] } - 排查深层依赖:运行
npm ls查看完整依赖树,确认图标依赖的子依赖是否引入了位置相关包。 - 核对Play Console声明:进入Google Play Console的权限声明页面,确认所有位置相关选项都设为"不使用",避免误勾选导致的报错。
内容的提问来源于stack exchange,提问作者Arjun Tandon
相关产品推荐
相关产品推荐

