Expo项目发布Google Play时出现未添加的位置权限问题求助
Expo应用发布Google Play Console时出现未手动添加的定位权限问题
我用Expo开发的应用在发布到Google Play Console时,发现自动多出了三个从未手动添加的权限:
- android.permission.ACCESS_COARSE_LOCATION
- android.permission.ACCESS_FINE_LOCATION
- android.permission.ACCESS_BACKGROUND_LOCATION
我怀疑是依赖包自动引入了这些权限,但检查node_modules后没找到相关线索;也尝试过在配置中用tools:node="remove"移除这些权限,同时检查了google-services配置,但Google Play Console仍然能检测到这些权限。有没有人遇到过类似问题?
package.json
{ "scripts": { "start": "expo start --dev-client", "android": "expo run:android", "ios": "expo run:ios", "web": "expo start --web", "eject": "expo eject" }, "dependencies": { "@expo/vector-icons": "^13.0.0", "@react-native-async-storage/async-storage": "~1.17.3", "@react-native-firebase/app": "^15.2.0", "@react-native-firebase/in-app-messaging": "^15.4.0", "@react-native-firebase/messaging": "^15.4.0", "@react-native-masked-view/masked-view": "0.2.6", "@react-navigation/bottom-tabs": "^6.3.1", "@react-navigation/material-top-tabs": "^6.2.3", "@react-navigation/native": "^6.0.6", "@react-navigation/stack": "^6.0.11", "dotenv": "^10.0.0", "expo": "^45.0.0", "expo-application": "~4.1.0", "expo-constants": "~13.1.1", "expo-image-picker": "~13.1.1", "expo-in-app-purchases": "^13.1.0", "expo-notifications": "~0.15.4", "expo-skeleton-loader": "^1.1.3", "expo-splash-screen": "~0.15.1", "expo-status-bar": "~1.3.0", "expo-updates": "~0.13.3", "firebase": "9.6.11", "formik": "2.1.4", "patch-package": "^6.4.7", "postinstall-postinstall": "^2.1.0", "react": "17.0.2", "react-dom": "17.0.2", "react-native": "0.68.2", "react-native-actionsheet": "^2.4.2", "react-native-animated-progress": "^1.0.2", "react-native-app-intro-slider": "^4.0.4", "react-native-dialog": "^9.2.2", "react-native-elements": "^3.4.2", "react-native-gesture-handler": "~2.2.1", "react-native-keyboard-aware-scroll-view": "^0.9.4", "react-native-pager-view": "^5.4.25", "react-native-reanimated": "~2.8.0", "react-native-safe-area-context": "^3.1.9", "react-native-screens": "~3.11.1", "react-native-snap-carousel": "^3.9.1", "react-native-tab-view": "^3.1.1", "react-native-web": "0.17.7", "yup": "0.27.0" }, "devDependencies": { "@babel/core": "^7.12.9", "@babel/runtime": "^7.9.0", "babel-preset-expo": "~9.1.0" }, "private": true, "version": "1.0.0", "name": "picpick" }
app.config.js
import 'dotenv/config'; export default { expo: { plugins: [ "@react-native-firebase/app" ], name: 'test', slug: 'test', privacy: 'public', platforms: ['ios', 'android'], version: '1.0.0', orientation: 'portrait', icon: './assets/flame.png', splash: { image: './assets/splash.png', resizeMode: 'contain', backgroundColor: '#fff' }, updates: { fallbackToCacheTimeout: 0 }, assetBundlePatterns: ['**/*'], ios: { supportsTablet: true, googleServicesFile: "./google-services.json" }, android: { package: "com.test", versionCode: 6, googleServicesFile: "./google-services.json"}, web: { config: { firebase: { apiKey: process.env.API_KEY, authDomain: process.env.AUTH_DOMAIN, projectId: process.env.PROJECT_ID, storageBucket: process.env.STORAGE_BUCKET, messagingSenderId: process.env.MESSAGING_SENDER_ID, appId: process.env.APP_ID, measurementId: process.env.MEASUREMENT_ID } } }, extra: { apiKey: process.env.API_KEY, authDomain: process.env.AUTH_DOMAIN, projectId: process.env.PROJECT_ID, storageBucket: process.env.STORAGE_BUCKET, messagingSenderId: process.env.MESSAGING_SENDER_ID, appId: process.env.APP_ID, measurementId: process.env.MEASUREMENT_ID } } };
AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.pixpix" xmlns:tools="http://schemas.android.com/tools"> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.RECORD_AUDIO"/> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> <uses-permission android:name="android.permission.VIBRATE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="com.android.vending.BILLING" /> <queries> <intent> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="https"/> </intent> </queries> <application android:name=".MainApplication" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:allowBackup="true" android:theme="@style/AppTheme" android:usesCleartextTraffic="true"> <meta-data android:name="expo.modules.updates.ENABLED" android:value="true"/> <meta-data android:name="expo.modules.updates.EXPO_RELEASE_CHANNEL" android:value="default"/> <meta-data android:name="expo.modules.updates.EXPO_SDK_VERSION" android:value="45.0.0"/> <meta-data android:name="expo.modules.updates.EXPO_UPDATES_CHECK_ON_LAUNCH" android:value="ALWAYS"/> <meta-data android:name="expo.modules.updates.EXPO_UPDATES_LAUNCH_WAIT_MS" android:value="0"/> <meta-data android:name="expo.modules.updates.EXPO_UPDATE_URL" android:value="https://exp.host/@user/test"/> <activity android:name=".MainActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" android:launchMode="singleTask" android:windowSoftInputMode="adjustResize" android:theme="@style/Theme.App.SplashScreen" android:exported="true" android:screenOrientation="portrait"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="com.pixpix"/> </intent-filter> </activity> <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" android:exported="false"/> </application> </manifest>
内容的提问来源于stack exchange,提问作者Sébastien
相关产品推荐
相关产品推荐

