添加工作配置文件后Expo安卓应用无法安装的解决咨询
解决Expo React Native在多用户Android设备上的构建权限问题
问题背景
基于Expo的React Native应用在单用户Android设备上运行正常,但在三星S20添加工作配置文件后,执行expo run:android时出现权限错误。通过adb shell pm list packages复现问题时,报错提示Shell无权限访问用户10,设备当前存在三个运行中的用户:
Users: UserInfo{0:MyUsername:c13} running UserInfo{10:Work profile:1030} running UserInfo{150:Secure Folder:10021030} running
已知单独执行adb shell pm list packages --user 0可正常运行,但不清楚如何将--user 0参数传递给Expo构建流程。
解决方案
方法1:通过环境变量指定adb用户
Expo支持通过ANDROID_ADB_USER环境变量指定adb操作的用户ID,直接在执行命令时添加该变量即可:
Linux/macOS:
ANDROID_ADB_USER=0 expo run:android
也可以修改package.json中的scripts,以后直接运行npm run android:
"scripts": { "android": "ANDROID_ADB_USER=0 expo run:android", }
Windows:
set ANDROID_ADB_USER=0 && expo run:android
修改scripts:
"scripts": { "android": "set ANDROID_ADB_USER=0 && expo run:android", }
方法2:配置adb默认使用用户0
修改adb的全局配置,让它默认以用户0执行操作:
- 创建或编辑adb配置文件:
- Linux/macOS:
~/.android/adb_config.ini - Windows:
%USERPROFILE%\.android\adb_config.ini
- Linux/macOS:
- 在文件中添加一行:
adb_user=0 - 重启adb服务:
adb kill-server && adb start-server
之后再执行expo run:android就会自动使用用户0,无需每次指定参数。
方法3:切换到个人用户后再执行构建
先通过adb切换到个人用户(用户0),再运行Expo构建命令:
adb shell am start-user 0 expo run:android
内容的提问来源于stack exchange,提问作者WrRaThY
相关产品推荐
相关产品推荐

