1. 问题背景与发现
在RK3568开发板上运行OpenHarmony 5.0系统时,发现系统自带的KikaInput输入法仅支持英文输入,缺乏中文输入功能。这个问题直到项目临近尾声才被发现,给开发进度带来了不小的影响。
经过在官方论坛的搜索,确认该系统版本确实只提供了KikaInput这一款输入法,且官方并未提供中文支持。这对于需要中文输入的应用场景来说是个严重的问题。
提示:在嵌入式开发中,输入法这类基础功能往往容易被忽视,建议在项目初期就进行验证。
2. 解决方案探索
2.1 现有资源调研
在Gitee上找到了一个基于KikaInput移植的拼音输入法项目:
applications_inputmethod
这个项目实现了简易的中文输入功能,但直接使用其发行版的hap包在我们的RK3568开发板上无法正常运行。
2.2 源码修改方案
最终采用了经过修改的版本:
RK3568中文输入法
这个版本主要做了两处关键修改:
- 添加了ABI过滤器配置:
json复制"abiFilters": [
"arm64-v8a",
"armeabi-v7a",
"x86_64"
]
- 修复了中英文切换问题,优化了UI显示,隐藏了点击切换9格键盘的logo。
3. 详细实现步骤
3.1 环境准备
-
SDK版本调整:
需要将项目SDK版本改为12,这是与OpenHarmony 5.0兼容的版本。 -
签名配置修改:
为了简化调试流程,我们需要修改调试签名配置:找到SDK目录下的:
code复制sdk版本\toolchains\lib\UnsgnedDebugProfileTemplate.json sdk版本\toolchains\lib\UnsgnedReleasedProfileTemplate.json修改内容如下:
json复制"bundle-info": { "apl": "normal", // 改为system_basic "app-feature": "hos_normal_app" // 改为hos_system_app(可选) }, "acls": { "allowed-acls": [ "ohos.permission.CONNECT_IME_ABILITY" ] }
3.2 项目配置调整
-
自动签名设置:
在DevEco Studio中勾选自动签名选项,确保使用我们修改过的调试签名配置。 -
UI样式调整:
键盘样式定义在:code复制src/main/resources/phone/element/float.json可以根据实际需求修改这个文件来调整键盘布局和样式。
3.3 编译与部署
- 使用DevEco Studio编译项目,生成hap包。
- 通过hdc工具将hap包安装到RK3568开发板:
bash复制
hdc install inputmethod.hap - 在系统设置中启用新安装的输入法。
4. 关键问题与解决方案
4.1 权限问题
输入法作为系统级应用需要特殊权限。通过修改签名配置中的apl级别为system_basic,并添加CONNECT_IME_ABILITY权限,解决了权限不足的问题。
4.2 ABI兼容性问题
原始项目可能没有包含RK3568所需的ABI支持。通过显式指定abiFilters,确保生成的hap包包含所有必要的架构支持。
4.3 中英文切换问题
修改后的版本修复了中英文切换不稳定的问题,主要通过以下方式实现:
- 完善了输入法服务与UI的通信机制
- 优化了状态同步逻辑
5. 使用效果与优化建议
5.1 实际使用体验
经过修改后的输入法在RK3568上运行稳定,支持:
- 拼音输入
- 中英文切换
- 基本标点符号输入
5.2 可进一步优化的方向
-
词库扩展:
当前词库较小,可以导入更全面的词库提升输入体验。 -
输入预测:
添加智能预测功能,提高输入效率。 -
主题定制:
提供更多键盘主题选项,适应不同应用场景。
6. 经验总结
在RK3568上实现中文输入法的过程让我深刻认识到:
-
系统级应用开发需要考虑权限和签名等基础配置,这些在普通应用开发中很少涉及。
-
ABI兼容性在跨平台开发中至关重要,特别是对于嵌入式设备。
-
输入法开发涉及系统服务、UI、事件处理等多个层面,需要全面考虑各组件间的交互。
这个解决方案虽然简单,但确实解决了项目中的实际问题。对于需要在OpenHarmony设备上实现中文输入功能的开发者,这个经验应该会有所帮助。
