有root权限的App无法调出中文键盘的问题

我制作的App中无法调出中文键盘,只有英文键盘和表情可以切换。现已确认是root权限导致的问题。当我的App降权为普通用户时,输入法键盘恢复正常,可以输入中文。
一直在寻找解决方案,发现Cydia的威锋源(apt.feng.com)有一个关于这个问题的补丁,叫《Root用户输入法补丁》。安装以后果然可以在具有Root权限的App中调出中文键盘。
这个补丁的工作原理是:让 root 用户使用和 mobile 用户相同的输入法设置,可以解决 Cydia 中不能输入中文的问题。
我想请教一下这个工作原理具体是怎么实现的,或者怎样去分析这个补丁,这样我知道方法后就可以在我自己的App中修复这个问题。

相关链接:
http://apt.feng.com/read-52d0b18f319a3990628b4574.html

你都找到逆向的目标了,为什么不逆向了看看呢?

怎么拿到这个补丁的deb包呢。。

我知道具体方法了,不需要任何代码。就是把两个有关语言设置的plist文件,从/var/mobile/Library/Preferences/ 复制到 /var/root/Library/Preferences/ 就行了,这样就能保证root用户和mobile用户的设置一样。

但是我还是想知道怎样获得Cydia中某个应用的deb包,有包我才能进行逆向呀

“Cydia 提取deb”,一搜一大把啊

apt-get有个参数可以保存deb,你先卸载然后用这个安装即可

http://modmyi.com/
访问这个网址搜索Cydia中的应用名,可以查询到File Name,然后用源地址+文件名组成deb包的下载地址。

举个例子:
RocketBootstrap
文件名为debs2.0/com.rpetrich.rocketbootstrap_1.0.4_iphoneos-arm.deb
源地址为http://apt.thebigboss.org/repofiles/cydia/

那么deb包的下载地址即为http://apt.thebigboss.org/repofiles/cydia/debs2.0/com.rpetrich.rocketbootstrap_1.0.4_iphoneos-arm.deb

cyder2

在postinst中加下列代码即可

1 Like

谢谢,我就是这么解决的