我们为 mirai 添加了新的协议内容,需要登录测试但被风控登不上时,就需要配置外置 EncryptService 辅助登录。
关闭 android targetPC 测试运行需要关闭 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,添加运行配置
9a152ff0-ee2a-4627-bd37-01731aea546c-image.png
bc3fd953-563c-481f-910d-7c9d8fed03dd-image.png
注意 classpath of module 选择 mirai.mirai-core.jvmTest ,main class 为 RunMirai.kt 的类名。
保存之后直接运行即可。
b4b408d0-581e-4759-bbdb-8d1c8eeb9a9a-image.png
注意:若准备提交 Pull Request,请注意不要提交 mirai-core/build.gradle.kts 的修改,我们只是临时修改构建配置,目的是登录测试。