Azure DevOps (vsts) 自托管代理上的 ADB RSA 密钥指纹更改

ADB RSA key fingerprint changes on Azure DevOps (vsts) self hosted agent

我有一个 VSTS/Azure DevOps 自托管代理 运行ning 作为服务 在一台机器上 Android 设备通过 USB 连接我想与 ADB 一起使用。

在构建期间,命令行任务调用 ADB 命令。我遇到一个问题,当有人登录机器时,设备会未经授权。我观察到的是

这似乎与 相似,但他们的问题是针对 docker/gitlab-ci。

要解决此问题,您需要创建一个系统范围的 ADB 密钥并告诉 ADB 它在哪里使用 ADB_VENDOR_KEYS 环境变量。

ADB_VENDOR_KEYS 被描述为以冒号分隔的键(文件或目录)列表。您应该能够将它设置为一个目录,但我当时只能让它与一个文件一起工作。由于 ADB 在服务中 运行,因此将其设置为 系统环境变量 而不是用户环境变量非常重要。

设置步骤为

  • 通过运行宁adb start-serveradb devices创建一个adbkey。他们的关键是 位于 C:\Users\<yourname>\.android。如果您已经运行正在使用 adb(可能是这种情况),adb 服务器将已经启动并且已经创建了一个密钥。
  • 创建文件夹如C:\adb_keys并将密钥复制到此文件夹
  • 添加名为 ADB_VENDOR_KEYS 的系统环境变量,其值为 C:\adb_keys\adbkey 或在上一步中放置密钥的位置。
  • 授权USB调试连接。下面的步骤可能有些矫枉过正,但应确保不会遇到障碍。
    • 关闭并重新打开命令提示符(或重新启动计算机)才能使用新的环境变量
    • 拔下设备
    • 终止 ADB 服务器。 adb kill-server
    • 撤销设备上的USB调试授权。设置 > 开发者选项 > 撤销 USB 调试授权。
    • 在设备上禁用并重新启用 USB 调试
    • 插入设备
    • 启动亚行服务器。 adb start-serveradb devices
    • 接受 "Allow USB debugging?" 并选中 "Always allow from this computer" 复选框

重新启动计算机并排队使用 ADB 的新构建,一切正常。