年初刚来此论坛时发过一个替换天猫魔盒内置输入法的帖子 地址: http://www./thread-189969-1-1.html 帖子里发的是一个替换为谷歌输入法的刷机包 可能很多人喜欢其他输入法,也想自己做一个,至少我没看到讨论区有人自己做了发出来,所以今天随手写一个教程,截个图,说一下制作输入法卡刷包的关键点,这些关键点也是制作ROM卡刷包的要点,触类旁通吧 要点: apk解压,lib文件提取,刷机包组合,打包并签名 一、先找到一个要制作的卡刷包,比如你可以下载百度,搜狐等输入法,一般是一个APK文件 现在以百度输入法为例说明具体过程 首先把百度输入法改个名字,为了方便,改成baidu.apk 在制作卡刷包时,很多人可能试过,只把apk替换到一个已经存在的卡刷包,但刷入后出问题不能启动输入法,主要原因就是lib目录还有一些文件你没有放到位置,所以我们首先解压apk,就是把apk扩展名改成zip或rar即可,因为apk也是一个资源压缩包而已 解压以后能看到如下目录 ![]() 其中lib\armeabi 里很多扩展名是送so的文件,这些是输入法运行时需要的库,我们将这些文件拷贝出来备用 ![]() 有些输入法解压后可能还有X86这样的目录,那是为了不同平台准备的,我们目前只需要armeabi目录里的库 二、使用一个空的卡刷包制作我们自己的包 如图所示,一个空的卡刷包里的目录 ![]() 其中Meta-inf目录存放的有脚本和签名文件 system目录是存放文件的相对路径,意味着卡刷时会拷贝到system目录 先看一下Menta-inf\com\google\android\目录里,有两个文件 updater-script,这是刷机脚本,告诉刷机时执行的命令,update-binary是刷机时的执行文件,由它来执行脚本命令实现安装和显示过程 使用文本文件打开 update-script,内容如下: ui_print("|=============================================|"); ui_print("| Installing ................ |"); ui_print("|=============================================|"); ui_print("| Starting installation ..... |"); show_progress(0.500000, 0); ui_print("|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|"); ui_print("| Writing System |"); run_program("/sbin/busybox", "mount", "/system"); package_extract_dir("system", "/system"); show_progress(0.200000, 10); ui_print("|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|"); ui_print("+ Unmounting partitions +"); unmount("/system"); ui_print("|=============================================|"); ui_print("| installation complete, enjoy ! |"); ui_print("|=============================================|"); show_progress(0.100000, 0); 其中 ui_print是现实文本的命令,可以自行修改或添加,中文无法显示 show_progress 用来显示进度条 run_program用来执行系统命令,需要先挂载 system 分区进行写入 package_extract_dir 就是拷贝命令,将包里的文件拷贝到合适位置 然后需要卸载系统分区 整个执行过程就是这样 三、合并卡刷包 将apk解压后保存的armeabi里的文件库文件拷贝到刷机包的 system\lib目录,这里不需要armeabi目录,直接把so文件拷贝到此目录即可 为了能够替换系统的默认你输入法,我们可以把下载到的输入法改名为 LatinIME.apk,这样会覆盖系统原来的输入法 合并完成后,整个目录压缩成 zip 文件 四、 压缩好的 zip 文件使用你知道的签名程序签下名,签名后的文件改成你希望的名字,就可以通过recovery刷机了 因为签名验证问题,官方的recovery不能识别我们自己签名的文件证书,所以只能使用第三方的recovery 其他问题可自行研究,关键部份已经说明白了 游客,如果您要查看本帖隐藏内容请回复 |
|