# MiraiAndroider
**Repository Path**: Zaphkito/MiraiAndroider
## Basic Information
- **Project Name**: MiraiAndroider
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: AGPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 2
- **Created**: 2020-08-02
- **Last Updated**: 2021-06-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# MiraiAndroid
(实验性)在Android上运行Mirai-console
关于mirai项目的一切请点击[这里](https://github.com/mamoe/mirai)
**仅Android 6及以上可用**
相比使用`Termux`或者是`Linux Deploy`等应用运行mirai的方案,该项目提供的方案具有更好的性能以及更少的资源占用,但可能存在兼容性问题
最新的构建版本你可以到[这里](https://github.com/mzdluo123/MiraiAndroid/actions)找到,下载可能需要登录
更多信息请加QQ群`655057127`了解
# 已实现的功能
* 兼容mirai-console插件(实验性)
* 带验证码的登录处理
* 内置Google d8 dex编译器,可直接编译JVM的console插件在Android运行(实验性)
* lua脚本接口(测试版)
* 网络掉线提醒
# 安装脚本
目前MiraiAndroid已支持lua和JavaScript脚本,感谢[lua-mirai](https://github.com/only52607/lua-mirai)和[mirai-js](https://github.com/iTXTech/mirai-js)项目
## lua脚本
以下是一个简单的示例
```lua
Event.onLoad = function (bot)
bot:subscribeGroupMsg(
function(bot, msg, group, sender)
group:sendMsg( msg )
end
)
end
```
这个脚本实现了最简单的"复读机"功能,更多API请看[lua-mirai android api](https://github.com/only52607/lua-mirai/blob/master/docs/miraiandroid.md)
## JavaScript脚本
以下是一个~~简单~~复杂的示例
```JavaScript
// 插件信息
pluginInfo = {
name: "JsPluginExample",
version: "1.0.0",
author: "PeratX",
website: "https://github.com/iTXTech/mirai-js/blob/master/examples/reply.js"
};
let verbose = true;
// onLoad 事件
plugin.ev.onLoad = () => {
logger.info("插件已加载:" + plugin.dataDir);
// 插件数据读写
let file = plugin.getDataFile("test.txt")
// 第三个编码参数默认为 UTF-8,可空,同readText第二个参数
stor.writeText(file, "真的很强。", Charset.forName("GBK"));
logger.info("读取文件:" + file + " 内容:" + stor.readText(file, Charset.forName("GBK")));
let config = new JsonConfig(plugin.getDataFile("test.json"));
config.put("wow", "Hello World!");
config.save();
let v = 0;
// 启动协程
core.launch(() => {
v++;
logger.info("正在等待:" + v);
if (verbose) {
// 100ms执行一次
return 100;
}
// 停止协程,返回 -1
return -1;
});
// 延时1000ms执行一次
core.launch(() => {
verbose = false
return -1;
}, 1000);
// 命令名称,描述,帮助,别名,回调
core.registerCommand("test", "测试命令", "test", null, (sender, args) => {
logger.info("发送者:" + sender)
logger.info("参数:" + args)
return true
});
};
plugin.ev.onEnable = () => {
logger.info("插件已启用。" + (plugin.enabled ? "是真的" : "是假的"));
try {
// Http 基于 OkHttp,可使用 OkHttp 的 API 自行构造
let result = http.get("https://github.com/mamoe/mirai");
if (result.isSuccessful()) {
logger.info("Mirai GitHub主页长度:" + result.body().string().length());
} else {
logger.error("无法访问Mirai GitHub主页");
}
// 手动调用 OkHttp
let client = http.newClient()
.connectTimeout(5000, TimeUnit.MILLISECONDS)
.readTimeout(5000, TimeUnit.MILLISECONDS)
.build()
let response = client.newCall(
http.newRequest()
.url("https://im.qq.com")
.header("User-Agent", "NMSL Browser 1.0")
.build()
).execute();
if (response.isSuccessful()) {
logger.info("QQ主页长度:" + response.body().string().length());
} else {
logger.error("无法访问QQ主页");
}
} catch (e) {
logger.error("无法获取网页", e)
}
regEv();
};
plugin.ev.onDisable = () => {
logger.info("插件已禁用。");
};
plugin.ev.onUnload = () => {
logger.info("插件已卸载。");
};
function regEv() {
core.subscribeAlways(BotOnlineEvent, ev => {
logger.info(ev);
});
core.subscribeAlways(GroupMessageEvent, ev => {
logger.info(ev);
ev.group.sendMessage(new PlainText("MiraiJs 收到消息:").plus(ev.message));
})
}
```
你可以在[这里](https://github.com/iTXTech/mirai-js/blob/master/examples/reply.js)找到它,更多内容请查看项目介绍
在脚本管理界面点击右上角`+`可直接添加脚本到MiraiAndroid
目前该功能仍在开发中
# 安装插件
你有两个办法安装插件
## 使用app直接打开jar文件安装
这是最简单的方式。app切换到插件管理点击右上角选择即可,你也可以使用系统文件选择器直接打开jar文件
## 使用pc转换后导入
请按照以下方法操作
* 找到`d8`编译器的运行脚本
d8工具已在新版`Android sdk`中自带,它就在`build-tools`中对应版本的文件夹下。在Windows平台他是一个bat文件
如果没有可到上面的交流群内下载
* 编译
打开终端,使用以下命令编译
```
d8.bat --output 输出文件.jar 源文件
```
输出文件扩展名必须是jar或者是zip
* 复制资源
使用压缩软件打开源jar文件,将里面的`plugin.yml`,`META-INF`和其他资源文件(除存放class文件夹的其他文件)复制到新的jar文件内
* 安装插件
将上一步的新的jar文件复制到手机的`/sdcard/Android/data/io.github.mzdluo123.mirai.android/files/plugins/`
重启即可使用插件,当然部分插件可能也会存在兼容性问题
# 兼容的Console插件列表
以下插件由群友测试未发现问题,你可以到群内下载,或是到[插件中心](https://github.com/mamoe/mirai-plugins)手动下载jvm版并导入
对于其他插件请自行尝试;此外,如果你的插件使用了一些Android不支持的api(例如BufferedImage)那么使用了这个api的功能将绝对不能正常工作
* mirai-api-http
* HsoSe
* keywordReply
* forward
* CQHTTPMirai