如何在旧安卓手机上跑Amiya-Bot(纯小白向)

原项目地址:https://www.amiya.cn/
(头图来自于网络,侵删)
-1.开篇废话
本文为作者第一次写技术类文章,也是第一次尝试使用markdown
若有不当之处请指出,我会加以改正
并且,这篇文章面向的更多是小白(大概
可能对有一定开发基础的dalao来说有过多的废话
也请见谅
为什么要用旧手机跑兔兔?
诚然,你完全可以花不算过高的价格来上云租一台服务器,同时你也将可以获得更好的部署与维护体验
但是,本着能省就省以及不闲置身边可利用资源的原则,很明显,手头的手机就是一个优秀的选择
(大部分)被你淘汰下来的上一代手机,完全可以胜任搭建一个简易linux平台并运行兔兔的任务
那么,对爱折腾的你来说,又为什么不呢(狗头
0.事前准备
一部安卓手机
理论上安卓5.0以上即可,但仍强烈建议安卓7.0及以上
预留好不少于3G空间最佳
良好的网络环境
由于一些未知原因,对于arm64架构的ubuntu软件包使用国内源替换时会提示没有这个包
所以必要时建议上科学手段
一台电脑
电脑仅为部署兔兔时使用
(个人认为)电脑上用ssh操作会比手机上操作方便得多
并且后续也需要另一台电脑当做临时的文件服务器
所以需要准备一台电脑
请确保手机与电脑在同一局域网下
并且已经安装了python3(任意版本)
1.安装termux并配置
termux官网:https://termux.com/
从GitHub或F-Droid下载并安装
文末也会提供国内下载地址
安装好后,打开termux
输入
termux-setup-storage
来初始化存储权限输入
termux-change-repo
来更改成国内源

可选:使用ssh来操作手机
在termux中输入
安装完后 输入
passwd
来配置密码
linux的密码输入界面是不会有提示的,输入后看起来就像没有输入一样,这是正常的
转战电脑端,使用cmd,输入
提示Are you sure you want to continue connecting (yes/no/[fingerprint])?
时,填写yes
再输入先前配置的密码
当出现Welcome to Termux!
的欢迎语时,就代表你成功了
接下来的步骤都可以在电脑上操作了
2.安装与配置完整版ubuntu22.04
下载与安装
这一步中由于要访问国外的服务器来下载文件
裸连速度可能会比较慢
可以选择使用科学来提高下载速度
依次输入以下指令
若是成功,命令行的开头应该变成root@localhost:~#
的样子
3.编译安装python
由于ubuntu22.04库中python版本默认为3.10
与兔兔所要求的3.7~3.8不同
故我们需要重新编译安装一份python
这一步中 由于涉及大量外网的下载
强烈建议使用科学以提高下载速度
安装GCC编译器
安装其他依赖
安装过程中会提示选择时区,根据要求选择即可
下载python源代码
使用wget下载
此处以3.8.13为例
配置python
这一步耗时较长,请耐心等待
此处使用了三个可选配置项,具体含义如下:
--enable-optimizations
:用 PROFILE_TASK 启用以配置文件主导的优化(PGO)--with-lto
:在编译过程中启用链接时间优化(LTO)--enable-shared
:启用共享 Python 库libpython
的编译
编译
配置完成后就可以进行下一步编译了
这一步耗时较长,可以通过-j
选项指定参与编译的CPU核心数,请按需调整
安装
这一步同样耗时也很长
增加软链接
由于编译时加入了--enable-shared
参数,故此时直接使用命令python3.8
会提示无法找到libpython3.8.so.1.0
的错误。
我们需要将这个动态库以软链接的形式放到/usr/lib
下
验证python
至此,python的安装就完成了
换源
由于pip的服务器在国外
正常情况下下载会很慢
所以要切换成国内的镜像站以提高下载速度
下文将以清华镜像站为例
4.获取兔兔
这里将使用另一设备上搭建的python的简易服务器来进行网络传输
若是想有线传输,这边给出一个思路,请自行实践:
termux模拟出来的ubuntu文件系统在手机的/data/data/com.termux/files/home/ubuntu-in-termux/ubuntu-fs中
可以将文件用数据线复制到内部存储再使用cp命令复制到ubuntu的文件系统中
找到另一台电脑,下载网盘地址中的三个文件/文件夹
放入电脑同一个文件夹中(此处以D盘根目录为例)
请按照网盘里的格式放置你所下载的文件
新开一个cmd,输入
回到手机上
至此,兔兔文件的下载部分已经结束
5.各种依赖的安装
更换ubuntu源
注意
上述步骤安装的ubuntu版本为22.04
但很不幸的,ubuntu22.04缺少后续安装playwright的chromium时的依赖包
然而,这些包可以在ubuntu20.04的库中找到
并且可以被安装使用
我并不倡导如上做法,这可能为其他项目带来不可预料的严重后果
但如果只是着眼于兔兔的部署,这个方法可能是最简单实惠的解决方案了
然后前往清华镜像站Ubuntu Ports镜像,选择ubuntu版本为20.04 LTS
注意是20.04 LTS 而不是22.04 LTS
将代码部分全部复制到sources.list中
关于vim
你都来看我教程了,总不可能精通了个vim啥的吧
下面是一些基本操作,应该足够你应付部署兔兔甚至基本使用的情况了左下角显示文件名或者没有显示时,输入
i
进入编辑模式,此时左下角会变成-- INSERT --
字样,该模式下你输入的一切内容都将直接反馈到文档中,你可以像编辑word一样编辑内容了
编辑完成后,按ESC
退出编辑模式,输入:wq
并回车以保存并退出
安装python与playwright依赖
通常,在此处会报error
信息中通常会含有The following packages have unmet dependencies
这种情况是由于设备上已经安装了ubuntu22.04版本的一些包,与20.04的playwright的依赖冲突导致的
只需要找到错误提示中的Depends后面的包名称
然后对每个包依次运行
再运行上面的最后一行代码
重复这个过程,直到能够成功安装
特别地,有些包在卸载时也会提示依赖包版本不正确,也可以用上述方法重新安装
以我自己设备为例,错误的是
libglvnd0
和libegl-mesa0
这两个包
其中libegl-mesa0
所依赖的包中有一个libglapi-mesa
版本错误
所以对应代码如下
当出现
这两条信息时,就说明你成功了
至此,兔兔所需的环境与依赖已经全部安装完成
恭喜你,你已经完成了教程中最困难的一步
6.配置mirai与Amiya-Bot
由于安卓系统限制,你无法通过
ps
命令来查看系统进程并结束它
所以我推荐在独立的screen中来进行操作
这样你在杀死screen时就同时杀死了screen中的进程
初始化mirai
当出现I/main: mirai-console started successfully.
时即成功初始化了,可以关闭mirai了
关闭mirai:
配置mirai
重新启动mirai
初始化Amiya-Bot
当控制台没有新输出时即可退出
配置Amiya-Bot
重新启动Amiya-Bot
当出现[INFO] Chromium launched successful.
[INFO] Building materials names keywords dict...
这两条字样时,就代表你成功了
至此,你已经成功地完成了兔兔的部署
7.一些琐事
保活
由于大部分手机会限制应用的后台活动和熄屏状态下的活动,所以要进行一些配置
而这些配置根据手机型号不同也会有不同的操作,所以请各位自行百度
总的来说就是如下内容休眠时始终保持网络连接
电池优化中不允许对termux的电池优化
手机管家(之类的)应用启动管理 termux 手动管理 允许自启动 允许关联启动 允许后台活动
这个东西 我用的华为是有的 其他机型我不确定是否有这个东西
最后在通知栏选中termux下拉栏,点击 ACQUIRE WAKELOCK
,确保1 session后有 wake lock held
即可
资源地址
/s/1RXQYCs2bnTeNubTmJLB6Jg?pwd=akat
最后的一点闲话
本人也是小白一枚,本着探索的精神才有了能不能在手机上跑兔兔的想法
部署过程中(很可能)遇到问题的话,可以评论区留言
虽然我没什么技术力,不过也会尝试帮忙解决
同时也可以诱捕路过的dalao不是吗(