CHelper 安卓接口 / Java 接口文档
如果有不明白的地方,可以直接参考CHelper 安卓版的内核对接方式。
编译内核(可选)
在CHelper 内核文档中已经包含了内核的编译步骤,你甚至可以根据需求定制化内核再进行编译。如果嫌麻烦或者实在不会编译,你也可以直接使用编译好的内核。
在build.gradle.kts中添加以下内容:
kt
sourceSets.all {
jniLibs.srcDirs("libs")
}然后在libs的目录下对应的架构目录添加编译好的动态库文件。
资源包生成(可选)
通过运行代码可以读取 json 文件生成更加利于程序读写的二进制文件资源包。如果嫌麻烦或者不会生成,你也可以直接使用生成好的资源包。
与 java 代码交互
你可以直接使用 CHelper-Android 项目的内核交互相关代码:https://github.com/Yancey2023/CHelper/tree/master/CHelper-Android/app/src/main/kotlin/yancey/chelper/core
内核本身不保存任何文本和光标状态,所有的命令相关功能都在CommandContext上执行。通过createContext(command)把命令文本解析成AST生成独立的命令上下文,然后在没有可变状态的CommandContext上执行各种只读操作:
kt
CHelperCore.fromAssets(assetManager, cpackPath).use { core ->
core.createContext("give @s stone 12 1").use { context ->
println(context.structure)
println(context.getParamHint(8))
println(context.getSuggestions(context.command!!.length)?.size)
println(context.syntaxToken?.contentToString())
}
}由于CommandContext没有可变状态,同一条命令解析一次后,可以被多个线程同时读取;也可以基于同一个内核为多条命令创建多个CommandContext并行工作。CommandContext持有资源包的共享引用,即使CHelperCore先被close(),CommandContext依然可用。
需要注意的是,如果你开启了代码混淆,那么你需要在代码混淆配置文件中添加以下内容:
plain
-keep class yancey.chelper.core.Suggestion{ *; }
-keep class yancey.chelper.core.ErrorReason{ *; }
-keep class yancey.chelper.core.ClickSuggestionResult{ *; }