惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
人人都是产品经理
人人都是产品经理
V
Visual Studio Blog
罗磊的独立博客
Last Week in AI
Last Week in AI
爱范儿
爱范儿
The Cloudflare Blog
有赞技术团队
有赞技术团队
博客园 - 三生石上(FineUI控件)
美团技术团队
Apple Machine Learning Research
Apple Machine Learning Research
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
月光博客
月光博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 司徒正美
IT之家
IT之家
博客园 - 【当耐特】
雷峰网
雷峰网
博客园_首页
Jina AI
Jina AI
Hugging Face - Blog
Hugging Face - Blog
阮一峰的网络日志
阮一峰的网络日志
量子位
V
V2EX

/home/hexchain

跨架构升级 Fedora 使用 networkd 管理 HE.net TunnelBroker LaTeX 笔记 OpenWrt 编译配置笔记 tar 分卷压缩与解压缩 为不同 GitHub repo 使用不同 ssh key Linux 上使用财付通控件
在 Linux 上使用 Docker 和 Java 开发酷 Q 插件
hexchain · 2018-04-30 · via /home/hexchain

最近出于一些奇怪的原因,我需要写个 QQ 机器人。

酷 Q 是个比较常见且好用的机器人框架,但很可惜是 Windows only 的。虽然有官方支持的(使用 Wine 的) Linux Docker 镜像,但为了开发插件,还要设立交叉编译开发环境,十分麻烦。在论坛上发现酷 Q 有 Java 插件,就可以借助 JVM 使用各种原生的工具开发插件,然后扔进 Docker 里的 Wine 的 JRE 去运行。

获取 Docker 镜像和 Java 插件

首先要获取 CoolQ 的 Docker 镜像,并启动一次。这是为了建立基本的酷 Q 目录结构:

coolq/
├── app
│   ├── com.coxxs.music.cpk
│   ├── com.coxxs.start
│   │   └── start.cfg
│   ├── com.coxxs.start.cpk
│   ├── com.coxxs.status.cpk
│   └── moe.min.qa.cpk
├── bin
│   ├── CQP.dll
│   ├── gzip.dll
│   ├── htmlayout.dll
│   ├── libeay32.dll
│   ├── libiconv.dll
│   ├── sqlite3.dll
│   └── zlib1.dll
├── conf
└── CQA.exe

然后下载 酷 Q Java SDK 并按提示放入 coolq/app/ 目录中,启动酷 Q 并在插件管理器中启用 Java 插件。插件会提示找不到 JRE,暂时忽略。

做插件

参考论坛提供的 Demo 写插件。需要注意 json 文件中的 appid 字段,和 appInfo() 的返回格式。

然后编译构建,将 jar 包和 json 按正确的名称复制到 coolq/app/com.sobte.cqp.jcq/app/ 下,重启酷 Q 就会生效。

使用 maven-assembly-plugin 可以将依赖打进最终生成的 jar 包中。

stdout(竟然)是可用的,可以简单的使用 println() 输出调试信息。但输出的中文会乱码,原因是 Java 在 Windows 上的输出并不是 UTF-8 编码的。参考 https://stackoverflow.com/a/29231668 修改 System.out 的编码后解决。