在 Linux 上部署 OpenShamrock 的一种方案

前言

由于 QQ 最近对于机器人的严格管控,以往的很多协议与部署办法都已失效。目前比较靠谱的办法是使用 OpenShamrock 在真机或是虚拟机上真实运行一个安卓端 QQ,据此搭建 QQ 机器人。

前置条件

  • Ubuntu 20.04 或其他 Linux 系统(如果使用的不是 Ubuntu 20.04,需要你自行安装 redroid
  • 机器的内存应当在 4G 以上,否则可能会卡死;
  • 优先 arm64 架构,x86_64 架构也行;
  • 如果 Linux 机器没有图形界面,则你需要准备另一台 具有图形界面、且能够 连接上这台 Linux 机器 的机器(比如 Windows 个人电脑)。

下载必要的文件

LSPatch - manager:🔗 GitHub Release
scrcpy:🔗 GitHub Release
QQ安卓版:🔗 官网
OpenShamrock:🔗 GitHub Action

在 Ubuntu 20.04 上安装 redroid

首先更新内核:

1
2
3
sudo apt update
sudo apt upgrade
sudo reboot

然后安装 Linux 额外模块:

1
2
3
sudo apt install linux-modules-extra-`uname -r`
sudo modprobe binder_linux devices="binder,hwbinder,vndbinder"
sudo modprobe ashmem_linux

安装 docker(如果之前没有安装):

1
sudo apt install docker.io -y

在 docker 上运行 redroid 镜像:

1
2
3
4
5
6
sudo docker run -itd --rm --privileged \
--pull always \
-v ~/data:/data \
-p 5555:5555 \
redroid/redroid:11.0.0-latest \
androidboot.redroid_gpu_mode=guest

如果你的机器支持 GPU 加速,可以去掉 androidboot.redroid_gpu_mode=guest

配置 redroid

如果你的 Linux 机器具有图形界面,且你准备在本机配置,则:

1
2
adb connect 127.0.0.1:5555
scrcpy -s 127.0.0.1:5555

如果你打算远程配置,则需要先打开 Linux 机器的入站端口 5555,然后:

1
2
adb connect your_ip:5555
scrcpy -s your_ip:5555

首先使用 adb install 安装 LSPatchOpenShamrock

1
2
adb install lspatch.apk
adb install openshamrock.apk

然后将 QQ安卓版 的安装包推送到设备上:

1
adb push Android_9.0.0_64.apk /sdcard/Download 

然后在图形界面里,打开 LSPatch 并在管理页面选择 + 新建修补,选择刚刚推送过去的 QQ apk。

修补模式默认且应该优先选择本地模式,这样方便直接更新 Shamrock 模块而不用重新修补,缺点是需要 LSPatch 保持后台运行。

其他配置保持默认,然后点击开始修补,修补完成后进行安装。

安装 Shamrock 模块后在管理页面点击修补好的 QQ 选择模块作用域 勾选上 Shamrock 模块然后保存。

最后,启动 Shamrock 并重新启动 QQ 客户端,完成~

本作品 [页面标题] 创作,采用 CC BY-NC-SA 4.0