欢迎光临散文网 会员登陆 & 注册

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

2022-07-15 16:01 作者:晓月君_  | 我要投稿

原项目地址: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来更改成国内源

切换源的界面(使用空格选中,ENTER键确认)

可选:使用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不是吗(

如何在旧安卓手机上跑Amiya-Bot(纯小白向)的评论 (共 条)

分享到微博请遵守国家法律