为测试 mirai 添加外置 EncryptService
-
我们为 mirai 添加了新的协议内容,需要登录测试但被风控登不上时,就需要配置外置 EncryptService 辅助登录。
关闭 android target
PC 测试运行需要关闭 android target,在 mirai 项目根目录下创建
local.properties
,添加以下属性:projects.mirai-core.targets=jvm;!android
添加完后重新加载 gradle 项目即可。
配置程序运行入口
在
mirai-core/src/jvmTest/kotlin
sourceSet 中创建一个新的文件RunMirai.kt
作为程序入口。fun main() { prepareEnvironmentForDebugRun() val bot = DebugRunHelper.newBot(123456789L, BotAuthorization { session, info -> session.authByPassword("password") }) { protocol = BotConfiguration.MiraiProtocol.ANDROID_PHONE fileBasedDeviceInfo() } runBlocking { bot.login() bot.join() } }
prepareEnvironmentForDebugRun()
和DebugRunHelper.newBot()
是位于jvmTest
的工具函数。为测试模块添加依赖
以 fix-protocol-version 为例,从 release 下载 jar,放在
mirai-core/src/jvmTest/lib
中。编辑
mirai-core/build.gradle.kts
,找到以下配置代码:findByName("jvmTest")?.apply { dependencies { // ... } }
在
dependencies
里添加:implementation(files("src/jvmTest/lib/fix-protocol-version-1.9.6.mirai2.jar")) implementation("org.asynchttpclient:async-http-client:2.12.3") // fix-protocol-version 的依赖项
配置 EncryptService
编辑
RunMirai.kt
,在DebugRunHelper.newBot()
之前手动注册 EncryptService。import net.mamoe.mirai.utils.Services import xyz.cssxsh.mirai.tool.KFCFactory fun main() { prepareEnvironmentForDebugRun() Services.register( EncryptService.Factory::class.qualifiedName!!, KFCFactory::class.qualifiedName!!, ) { KFCFactory(File("...")) } val bot = DebugRunHelper.newBot(...) }
添加运行配置
IDEA 点击 Edit Configurations,添加运行配置
注意 classpath of module 选择
mirai.mirai-core.jvmTest
,main class 为RunMirai.kt
的类名。保存之后直接运行即可。
注意:若准备提交 Pull Request,请注意不要提交
mirai-core/build.gradle.kts
的修改,我们只是临时修改构建配置,目的是登录测试。 -