You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacOS下Flutter集成测试中Process.run无法找到adb的问题求助

Flutter集成测试setUp中调用adb报错的解决建议

以下是针对你遇到的ProcessException: No such file or directory错误的具体解决步骤:

  • 确认运行环境的PATH变量
    Flutter驱动进程的环境变量可能和你手动操作的终端不一致,先在setUp中打印当前环境的PATH和adb的定位结果,排查路径问题:

    setUp(() async {
      // 打印当前PATH
      final pathResult = await Process.run('echo', ['\$PATH'], runInShell: true);
      print('Current runtime PATH: ${pathResult.stdout}');
      
      // 定位adb的实际路径
      final whichResult = await Process.run('which', ['adb'], runInShell: true);
      print('adb path from which: ${whichResult.stdout.trim()}');
    });
    

    如果which adb返回空,说明当前环境没包含adb路径,可通过homebrew获取正确的安装路径:

    final brewPrefix = await Process.run('brew', ['--prefix', 'android-platform-tools']);
    final adbPath = '${brewPrefix.stdout.trim()}/bin/adb';
    // 使用该路径执行adb命令
    final permissionResult = await Process.run(adbPath, ['shell', 'pm grant com.your.package android.permission.YOUR_PERMISSION']);
    
  • 启用shell运行模式
    直接调用adb时可能缺少shell环境的支持,尝试开启runInShell参数:

    await Process.run('adb', ['shell', 'pm grant com.your.package android.permission.YOUR_PERMISSION'], runInShell: true);
    

    或者指定shell执行完整命令(以zsh为例):

    await Process.run('/bin/zsh', ['-c', 'adb shell pm grant com.your.package android.permission.YOUR_PERMISSION']);
    
  • 验证adb路径的有效性
    手动确认homebrew安装的adb路径是否正确,在终端执行:

    brew list android-platform-tools
    

    查看输出中是否包含/opt/homebrew/bin/adb,若路径不符,直接使用终端输出的正确路径调用。

  • 检查IDE运行环境的差异
    如果你在IDE(如Android Studio/VS Code)中运行测试,IDE的终端环境可能和系统终端的PATH不同。先在IDE的终端中执行which adb获取路径,再在测试代码中使用该路径;或者在IDE的环境变量设置中,将adb所在目录(如/opt/homebrew/bin)添加到PATH。

  • 确认adb的执行权限
    虽然homebrew安装的adb默认有执行权限,但可手动确认并修复:

    chmod +x /opt/homebrew/bin/adb
    

内容的提问来源于stack exchange,提问作者CODERjack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 09:06:10