OpenHarmony替換系統(tǒng)軟鍵盤_kikakeyboard
前言
替換系統(tǒng)軟鍵盤基本是基于社區(qū)提供的kikaInput二次開發(fā)實現(xiàn),目前kikaInput根據(jù)系統(tǒng)版本的不同發(fā)布了很多相對應(yīng)的版本,在二次開發(fā)時可以根據(jù)自己的需要選擇合適的版本進行修改。
kikakeyboard 適配PAD
效果
適配前 | 適配后 |
|
|
設(shè)備類型適配
PAD設(shè)備基本屬于橫向類型設(shè)備,也就是寬度大于高度,在3.2.3 release的版本上已經(jīng)做了table類型的適配,但是IDE運行時因為應(yīng)用無法直接安裝,所以無法正確的判別設(shè)備的類型,會默認返回default類型設(shè)備,所以對于PAD的適配只需要修改程序中設(shè)置的設(shè)備類型即可。
- index.ets
let deviceType = 'tablet'
軟鍵盤高度問題
系統(tǒng)有虛擬操作欄,軟鍵盤從底部彈出,所以底部有些會被虛擬軟鍵盤遮擋。解決方案有兩種:
1、長按桌面,進行界面設(shè)置,開啟手勢操作,隱藏虛擬操作欄;
2、修改軟鍵盤彈窗的顯示高度,操作步驟
- KeyboardController
var keyHeightRate = 0.51;
說明:keyHeightRate是一個高度比例,0.51就表示占屏幕高度的51%,可以根據(jù)設(shè)備的實際情況進行調(diào)整。
安裝
軟鍵盤程序修改后需要重新安裝到設(shè)備上,由于軟鍵盤程序?qū)儆谙到y(tǒng)應(yīng)用,并且有簽名限制無法直接通過IDE的 run 安裝。如何才能正常的安裝上軟鍵盤程序呢?
步驟1:修改簽名配置
在IDE設(shè)置中查找OpenHarmony SDK的位置
步驟2:修改打包簽名配置
在SDK的lib中中查找到UnsgnedReleasedProfileTemplate.json文件
替換以下關(guān)鍵信息
- distribution-certificate:cer簽名配置
- bundle-name:應(yīng)用包名
- app-feature:應(yīng)用級別-ohos_system_app:系統(tǒng)應(yīng)用
- allowed-acls:權(quán)限
步驟3:自動簽名
步驟4:獲取指紋信息
在DevEco Studio 中打開Log 界面,選擇HiLog 過濾 “finger” 字符。
進入系統(tǒng)Shell命令行 ,設(shè)置Hilog 等級。
單擊Run > Run ‘{模塊名稱}’ 運行工程中任意HAP包。在運行時會進行HAP包的安裝,此時有可能安裝不成功報錯,是因為我們應(yīng)用未正確配置導(dǎo)致,但此時我們目的為獲取指紋信息,忽略錯誤。
查看DevEco Studio 的Log 界面,指紋信息已經(jīng)被打印出來。
假設(shè)我們獲取到的指紋信息:6828322A055D4DDFA07DCCC78586EA97B5D2AD7D8BD1B3CEFE00EF584904D728
- 設(shè)備通過USB連接PC
- PC端已經(jīng)配置了hdc的環(huán)境變量,這是確保腳本可以正常執(zhí)行的必要條件
步驟5:備份軟鍵盤程序和安裝配置文件
執(zhí)行下面的腳本會將當(dāng)前設(shè)備上的軟鍵盤程序kikaInput.hap和應(yīng)用安裝配置文件。
- /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
修改install_list_capability.json中的"bundleName": “com.example.kikakeyboard”,對應(yīng)的選項,將步驟4中獲取到的指紋信息進行替換。
{
"bundleName": "com.example.kikakeyboard",
"singleton": true,
"runningResourcesApply": false,
"associatedWakeUp": false,
"app_signature" : ["6828322A055D4DDFA07DCCC78586EA97B5D2AD7D8BD1B3CEFE00EF584904D728"],
"allowCommonEvent": [],
"allowAppUsePrivilegeExtension": true
},
步驟6:刪除設(shè)備中的軟鍵盤應(yīng)用包
執(zhí)行如下腳本:
hdc shell mount -o remount,rw /
hdc shell rm -rf /system/app/com.example.kikakeyboard/kikaInput.hap
hdc shell reboot
pause
步驟7:替換軟鍵盤應(yīng)用程序
準(zhǔn)備好二次開發(fā)并且添加簽名的安裝包:entry-default-signed.hap
準(zhǔn)備好步驟5中修改好了安裝配置文件:install_list_capability.json
執(zhí)行下面腳本:
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
執(zhí)行后設(shè)備會自動重啟,重啟成功后就完成了系統(tǒng)軟鍵盤安裝包的替換。
備注:步驟6、7可以合并,這樣可以減少一次設(shè)備重啟,但是實踐測試發(fā)現(xiàn),步驟6刪除舊的軟鍵盤安裝包后不重啟,步驟7無法執(zhí)行成功,所以這里進行分開執(zhí)行。
為了方便執(zhí)行步驟5~步驟7,相關(guān)的腳本已經(jīng)添加在附件中,解壓就可以使用。
文章相關(guān)附件可以點擊下面的原文鏈接前往下載:
https://ost.51cto.com/resource/3105