2022/12/15 12:33
用过keepass的朋友应该都知道,keepass通常有一个安全键盘用来输入keepass中条目的字段,要使用这个键盘需要切换输入法。
以前使用Keepass2Android的时候装了一个自动切换输入法的APP,能实现在选择条目后自动切换到安全键盘。
最近换了KeepassDX后无法自动切换输入法,通过通知栏切换输入法至少要进行5步操作,非常麻烦,于是就在研究怎么能快速切换。
研究一遍手机的输入法设置,发现小米手机输入法有个全面屏优化
的设置,开启后可以在键盘面板下方定义快捷功能按键,其中就有切换输入法的设置
但这个快捷切换只支持小米定制版输入法。
有大佬已经研究系统的实现原理了,参考帖子:https://gitee.com/xixilala-2019/ime-of-xiaomi-optimization
根据帖子教程,我把KeepassDx的包修改成了讯飞输入法的包名重新安装就实现左下角快速切换输入法了。
因为我本身要用百度输入法,搜狗输入法是系统默认输入法无法卸载,只有改讯飞了。
Windows下的操作步骤如下:
- 下载
apktool
下载地址:https://ibotpeaches.github.io/Apktool/ - 下载
KeepassDX
安装包:https://github.com/Kunzisoft/KeePassDX/releases - 反编译
KeepassDX
参考教程 https://www.jianshu.com/p/919a966843c4 - 修改
KeepassDX
包名 修改 AndroidManifest.xml 中,第一行中package="com.kunzisoft.keepass.libre"
改为package="com.iflytek.inputmethod.miui"
- 将修改过的
KeepassDX
重新打包 参考教程 https://www.jianshu.com/p/919a966843c4 - 使用
MT管理器
重新签名APP 参考教程 https://www.bilibili.com/video/av889603062/?vd_source=0b638d32022978ae2aaf5206dd4ee746 - 卸载掉旧的重新安装新签名后的apk
后面是我操作过程的图文过程,可以参考
步骤1. 安装apktool
a. 创建个目录ApkTool
,用于存放apktool.jar
、apktool.bat
、需要反编译的应用包
b. 从官网下载apktool.jar
保存到创建的目录ApkTool
中
c. 下载Windows运行脚本(右键单击,将链接另存为apktool.bat)
或者复制下面的内容另存为apktool.bat
也可以
@echo off
setlocal
set BASENAME=apktool_
chcp 65001 2>nul >nul
set java_exe=java.exe
if defined JAVA_HOME (
set "java_exe=%JAVA_HOME%\bin\java.exe"
)
rem Find the highest version .jar available in the same directory as the script
setlocal EnableDelayedExpansion
pushd "%~dp0"
if exist apktool.jar (
set BASENAME=apktool
goto skipversioned
)
set max=0
for /f "tokens=1* delims=-_.0" %%A in ('dir /b /a-d %BASENAME%*.jar') do if %%~B gtr !max! set max=%%~nB
:skipversioned
popd
setlocal DisableDelayedExpansion
rem Find out if the commandline is a parameterless .jar or directory, for fast unpack/repack
if "%~1"=="" goto load
if not "%~2"=="" goto load
set ATTR=%~a1
if "%ATTR:~0,1%"=="d" (
rem Directory, rebuild
set fastCommand=b
)
if "%ATTR:~0,1%"=="-" if "%~x1"==".apk" (
rem APK file, unpack
set fastCommand=d
)
:load
"%java_exe%" -jar -Duser.language=en -Dfile.encoding=UTF8 "%~dp0%BASENAME%%max%.jar" %fastCommand% %*
rem Pause when ran non interactively
for /f "tokens=2" %%# in ("%cmdcmdline%") do if /i "%%#" equ "/c" pause
d. 验证环境可用
在ApkTool
目录下执行指令apktool
,如果显示版本信息和帮助信息,说明安装成功,如下图
步骤3: 反编译
将下载好的KeepassDX反编译
指令:apktool d bar.apk
我的应用包名是 KeePassDX-com.kunzisoft.keepass.libre-3.5.0 Beta01-115.apk
,所以执行指令:apktool d "KeePassDX-com.kunzisoft.keepass.libre-3.5.0 Beta01-115.apk"
文件名有空格需要加引号
反编译后会得到一个目录与apk同名的目录
步骤4: 修改包名
进入反编译输出的目录,打开 AndroidManifest.xml
,将第一行中 package="com.kunzisoft.keepass.libre"
改为 package="com.iflytek.inputmethod.miui"
步骤5: 重新打包
在 ApkTool
目录下执行指令apktool b "KeePassDX-com.kunzisoft.keepass.libre-3.5.0 Beta01-115" -o new.apk
将目录 KeePassDX-com.kunzisoft.keepass.libre-3.5.0 Beta01-115
中的内容重新打包成new.apk
。
为了便于区分修改过的包基于哪个版本,建议与原始包名保持一致,在末尾加上自己的标识,例:KeePassDX-com.kunzisoft.keepass.libre-3.5.0 Beta01-miui.apk
步骤6:重新签名
将apk发送到手机上,使用在MT管理器
中长按文件,选择签名
,会自动生成签名后的文件
步骤7:重新安装
安装前需要卸载原来的KeepassDX,否则会提示签名不一致,如果有安装定制版讯飞输入法,也需要卸载,因为修改后的KeepassDX占用了定制版讯飞输入法的包名。
安装完成后,打开APP配置魔法键盘,设置快捷开关就行了。