OpenHarmony替换系统软键盘_kikakeyboard 原创 精华

NL_AIDC_XJS
发布于 2024-3-1 14:33
浏览
4收藏

作者:徐金生

前言

替换系统软键盘基本是基于社区提供的kikaInput二次开发实现,目前kikaInput根据系统版本的不同发布了很多相对应的版本,在二次开发时可以根据自己的需要选择合适的版本进行修改。

kikakeyboard 适配PAD

效果

适配前 适配后
OpenHarmony替换系统软键盘_kikakeyboard -鸿蒙开发者社区 OpenHarmony替换系统软键盘_kikakeyboard -鸿蒙开发者社区

设备类型适配

PAD设备基本属于横向类型设备,也就是宽度大于高度,在3.2.3 release的版本上已经做了table类型的适配,但是IDE运行时因为应用无法直接安装,所以无法正确的判别设备的类型,会默认返回default类型设备,所以对于PAD的适配只需要修改程序中设置的设备类型即可。

  • index.ets
let deviceType = 'tablet'

软键盘高度问题

系统有虚拟操作栏,软键盘从底部弹出,所以底部有些会被虚拟软键盘遮挡。解决方案有两种:
1、长按桌面,进行界面设置,开启手势操作,隐藏虚拟操作栏;
2、修改软键盘弹窗的显示高度,操作步骤

  • KeyboardController
var keyHeightRate = 0.51;

说明:keyHeightRate是一个高度比例,0.51就表示占屏幕高度的51%,可以根据设备的实际情况进行调整。

安装

软键盘程序修改后需要重新安装到设备上,由于软键盘程序属于系统应用,并且有签名限制无法直接通过IDE的 run 安装。如何才能正常的安装上软键盘程序呢?

步骤1:修改签名配置

在IDE设置中查找OpenHarmony SDK的位置
OpenHarmony替换系统软键盘_kikakeyboard -鸿蒙开发者社区

步骤2:修改打包签名配置

在SDK的lib中中查找到UnsgnedReleasedProfileTemplate.json文件
OpenHarmony替换系统软键盘_kikakeyboard -鸿蒙开发者社区
替换以下关键信息

  • distribution-certificate:cer签名配置
  • bundle-name:应用包名
  • app-feature:应用级别-ohos_system_app:系统应用
  • allowed-acls:权限

OpenHarmony替换系统软键盘_kikakeyboard -鸿蒙开发者社区

步骤3:自动签名

OpenHarmony替换系统软键盘_kikakeyboard -鸿蒙开发者社区

步骤4:获取指纹信息

1、在DevEco Studio 中打开Log 界面,选择HiLog 过滤 “finger” 字符。
OpenHarmony替换系统软键盘_kikakeyboard -鸿蒙开发者社区
2、进入系统Shell命令行 ,设置Hilog 等级。
OpenHarmony替换系统软键盘_kikakeyboard -鸿蒙开发者社区
3、单击Run > Run ‘{模块名称}’  运行工程中任意HAP包。在运行时会进行HAP包的安装,此时有可能安装不成功报错,是因为我们应用未正确配置导致,但此时我们目的为获取指纹信息,忽略错误。
OpenHarmony替换系统软键盘_kikakeyboard -鸿蒙开发者社区
4、查看DevEco Studio 的Log 界面,指纹信息已经被打印出来。
OpenHarmony替换系统软键盘_kikakeyboard -鸿蒙开发者社区

假设我们获取到的指纹信息:6828322A055D4DDFA07DCCC78586EA97B5D2AD7D8BD1B3CEFE00EF584904D728

以下步骤的前置条件:
  • 设备通过USB连接PC
  • PC端已经配置了hdc的环境变量,这是确保脚本可以正常执行的必要条件

步骤5:备份软键盘程序和安装配置文件

1、执行下面的脚本会将当前设备上的软键盘程序kikaInput.hap和应用安装配置文件。

  • /com.example.kikakeyboard/kikaInput.hap
  • /app/install_list_capability.json
hdc file recv /system/app/com.example.kikakeyboard
hdc file recv /system/etc/app
pause

OpenHarmony替换系统软键盘_kikakeyboard -鸿蒙开发者社区

2、修改install_list_capability.json中的"bundleName": “com.example.kikakeyboard”,对应的选项,将步骤4中获取到的指纹信息进行替换。

{
            "bundleName": "com.example.kikakeyboard",
            "singleton": true,
            "runningResourcesApply": false,
            "associatedWakeUp": false,
            "app_signature" : ["6828322A055D4DDFA07DCCC78586EA97B5D2AD7D8BD1B3CEFE00EF584904D728"],
            "allowCommonEvent": [],
            "allowAppUsePrivilegeExtension": true
        },

步骤6:删除设备中的软键盘应用包

执行如下脚本:

hdc shell mount -o remount,rw /
hdc shell rm -rf /system/app/com.example.kikakeyboard/kikaInput.hap
hdc shell reboot
pause

步骤7:替换软键盘应用程序

1、准备好二次开发并且添加签名的安装包:entry-default-signed.hap
2、准备好步骤5中修改好了安装配置文件:install_list_capability.json
OpenHarmony替换系统软键盘_kikakeyboard -鸿蒙开发者社区

3、执行下面脚本:

hdc shell mount -o remount,rw /
hdc file send install_list_capability.json /system/etc/app/install_list_capability.json
hdc file send entry-default-signed.hap /system/app/com.example.kikakeyboard/kikaInput.hap
hdc shell reboot
pause

执行后设备会自动重启,重启成功后就完成了系统软键盘安装包的替换。

备注:步骤6、7可以合并,这样可以减少一次设备重启,但是实践测试发现,步骤6删除旧的软键盘安装包后不重启,步骤7无法执行成功,所以这里进行分开执行。

为了方便执行步骤5~步骤7,相关的脚本已经添加在附件中,解压就可以使用。

感谢

如果您能看到最后,还希望您能动动手指点个赞,一个人能走多远关键在于与谁同行,我用跨越山海的一路相伴,希望得到您的点赞。

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
kikakeyboard.zip 126.76K 83次下载
7
收藏 4
回复
举报
12条回复
按时间正序
/
按时间倒序
红叶亦知秋
红叶亦知秋

涨知识了!

回复
2024-3-1 15:47:45
Linux_zxb
Linux_zxb

您好,大佬,请问cer签名配置那一长串是从个文件获得

回复
2024-3-11 14:02:54
Linux_zxb
Linux_zxb 回复了 Linux_zxb
您好,大佬,请问cer签名配置那一长串是从个文件获得

从哪个文件获取新的去替换掉旧的

回复
2024-3-11 15:52:56
NL_AIDC_XJS
NL_AIDC_XJS 回复了 Linux_zxb
从哪个文件获取新的去替换掉旧的

感谢提醒,我就备注文件位置。

cer配置的内容可以通过你编译打包时使用的SDK对应的文件夹下查找到,具体路径是:XXX\OpenHarmonyFullSDK_3_2_11_9\9\toolchains\lib,其中XXX\OpenHarmonyFullSDK_3_2_11_9是你存放SDK对应版本的地方,具体看你编译的SDK版本,我这边使用的是9所以在对应\9\toolchains\lib目录下,文件名称为:UnsgnedReleasedProfileTemplate.json,这个文件中有带打包签名的配置信息。


1
回复
2024-3-13 08:40:11
FlashinMiami
FlashinMiami

正好有用,感谢

回复
2024-5-13 14:27:56
0aaron
0aaron

各种设备都需要匹配,辛苦工程师了

回复
2024-5-14 10:45:59
kerisyml
kerisyml

安装后没有效果,直接bm安装提示如下:

# bm install -p shurufa.hap                                                    

error: failed to install bundle.

code:9568292

error: install failed due to zero user can only install singleton app.

回复
2024-5-31 09:33:57
NL_AIDC_XJS
NL_AIDC_XJS 回复了 kerisyml
安装后没有效果,直接bm安装提示如下:# bm install -p shurufa.hap error: failed to install bundle. code:9568292 error: install failed due to zero user can only install singleton app.

请确认下,是否安装上面的步骤安装,从提示看应该是你安装的时候没有修改签名文件的配置。

回复
2024-6-4 09:18:56
陈浩南xxx
陈浩南xxx

也可以不换签名,只换hap; 让hap的签名和以前一样; 

回复
2024-6-17 09:15:43
老少女抖机灵
老少女抖机灵 回复了 kerisyml
安装后没有效果,直接bm安装提示如下:# bm install -p shurufa.hap error: failed to install bundle. code:9568292 error: install failed due to zero user can only install singleton app.

你好,请问解决了这个问题吗,我也遇到了这个问题


回复
2024-7-1 19:16:44
wx66a898374c501
wx66a898374c501

你好,4.1也可以用这个吗?


回复
2024-12-5 11:27:26
NL_AIDC_XJS
NL_AIDC_XJS 回复了 wx66a898374c501
你好,4.1也可以用这个吗?

是的,可以使用。


回复
2024-12-12 10:37:17
回复
    相关推荐