Mac运行安卓集成测试时如何给应用授予相关权限?
安卓模拟器adb权限授予不生效解决方案
核心原因
默认情况下flutter drive运行时会自动重新安装应用,你提前执行的adb shell pm grant命令授权的是安装前的旧应用,新安装的应用权限会被重置,这是最常见的失效原因。
其他可能原因
- 安卓版本权限适配问题:Android 13(API 33)及以上版本废弃了
WRITE_EXTERNAL_STORAGE、READ_EXTERNAL_STORAGE等旧存储权限,未补充对应新媒体权限会导致存储授权不生效 - 多设备/模拟器同时连接时,adb命令未指定目标设备,权限被授予到其他设备上
- 模拟器未完全启动就执行adb命令,授权请求未被正确接收
修复方案
1. 调整脚本执行逻辑
先手动构建安装应用,授予权限后再执行测试,跳过flutter drive的默认安装步骤。如果你的应用targetSdk版本≥33,需要额外补充媒体权限授权命令。
2. 修复后的脚本示例
integration_test.sh # for tablet iPad Pro 9.7 inch # xcrun simctl privacy 33FCDA0F-76BB-412B-A99B-FDD0F423A9B9 grant location-always br.com.xxx.app # for iphone # xcrun simctl privacy EED25E77-2BC6-4FB1-9061-FC8F7E57B0B4 grant location-always br.com.xxx.app # 等待模拟器完全启动 adb wait-for-device # 构建安卓测试包 flutter build apk --debug # 卸载原有应用避免缓存冲突 adb uninstall br.com.xxx.app # 安装新构建的测试包 adb install build/app/outputs/flutter-apk/app-debug.apk # 授予基础权限 adb shell pm grant br.com.xxx.app android.permission.WRITE_EXTERNAL_STORAGE adb shell pm grant br.com.xxx.app android.permission.READ_EXTERNAL_STORAGE adb shell pm grant br.com.xxx.app android.permission.CAMERA adb shell pm grant br.com.xxx.app android.permission.ACCESS_FINE_LOCATION adb shell pm grant br.com.xxx.app android.permission.ACCESS_COARSE_LOCATION adb shell pm grant br.com.xxx.app android.permission.ACCESS_BACKGROUND_LOCATION # 安卓13+版本补充以下媒体权限 # adb shell pm grant br.com.xxx.app android.permission.READ_MEDIA_IMAGES # adb shell pm grant br.com.xxx.app android.permission.READ_MEDIA_VIDEO # adb shell pm grant br.com.xxx.app android.permission.READ_MEDIA_AUDIO # 启动集成测试,跳过安装步骤 flutter drive \ --driver=integration_test/driver.dart \ --target=integration_test/app_test.dart \ --no-install
3. 多设备场景适配
如果同时连接多个模拟器/真机,先执行adb devices获取目标模拟器的序列号(例如emulator-5554),给所有adb命令加上-s 序列号参数指定目标设备,示例:adb -s emulator-5554 shell pm grant br.com.xxx.app android.permission.CAMERA
授权验证
执行完授权命令后可以运行以下命令,查看对应权限是否已经处于授予状态:adb shell dumpsys package br.com.xxx.app | grep "android.permission.CAMERA"
输出包含granted=true就代表授权生效。
内容的提问来源于stack exchange,提问作者djalmafreestyler
相关产品推荐
相关产品推荐

