ifanr: 从你的个人 blog上了解到,Kindle 3 中文输入法的编写工作从年初 2 月 2 日开始到 4 月 30 日结束,应该说效率并不低,你是从哪儿得到开发的灵感的呢? 200:其实关于输入法的构想去年11月就有了,只是一直停留在想法,记得当时只是把输入法的可行性在日志上唠叨了一下,那会儿我并没有想着要去实现它,自己倒是蛮期待有人能从我的日志收获一些灵感进而完成输入法,到时候我也顺便沾光上上特别鸣谢什么的。可是一直等到春节,也没见得有类似的应用出现,反倒是有不少网友在那篇日志的回复里鼓励我去实现输入法。于是刚好趁着过年的空挡,就想着着手试试看呗。 ifanr:这其中遇到最大的困难是什么? 200:真正动手进行开发,才发现过程并没有自己原先想象的那么有趣,首先 Kindle 的交叉编译环境配置就让我头疼了好几天,由于我之前没有从事过类似的嵌入式程序开发,所以交叉编译链的配置把我折磨得焦头烂额,还好最后找到了 NiLuJe 大神关于交叉编译的 terminal history,问题才得以解决。 还有就是 Kindle 前台的应用界面是用 java 编写的,这本身应该算是一个好事,因为 java 编写的程序逆向起来比较容易,这样有助于我分析出相关的接口.但是除了与 KDK 相关的部分,其他 class 都被混淆过了,刚好那段时间的 java 在线反混淆工具也工作不正常,这就给我的分析工作带来了很大的麻烦,自己人肉反混淆几个 class 终于撑不住了,最后向其作者 Stiver求助,讨要了一个离线版的 fernflower,终于完成了相关接口的逆向工作。 其实最麻烦的还要属程序的调试了,因为我没有 Kindle 的模拟器,所以没有办法边开发边调试,所以只好把程序都写完了,然后放到实体机器上去测试,开始的时候一旦程序错误,电子书也就跟着挂掉了,只好强制重启(反复好多次,我怀疑我的 Kindle 现在续航能力大减就跟重启有关)。失败了很多次之后,终于放弃这种原始野蛮的测试方法,采取前后台分离测试的办法,因为后台与Google 输入法通讯的部分与 Kindle 平台并无耦合,所以我在 Linux 上单独写了一个简易的前台GUI 接收键盘输入来测试输入法的后台代码,只在 Kindle 的实体上测试前台界面的绘制,确保两个都没有问题了再将程序组装起来。即使这样到最后还是出了一些问题,因为 Kindle 上的 java 并不是完全版的,有些特性比如枚举类型其根本不支持,没办法,最后只有一点一点排查兼容性问题,总之非常考验耐性。 ifanr: 那么开发过程中有没有想过放弃? 200:说来惭愧,我中途因为其他事情把输入法开发搁浅了一段日子,以至于自己都快忘了有这么一茬事儿,之后有天去查看留言,看到底下那么多回复感觉很愧疚,然后就停下手头的事,继续开发了。严格的说,整个过程对我来说不存在放弃不放弃,只是到底能走多远的问题,当时我也不知道这个输入法最后能不能写完,我的计划其实是自己先试试看,能完成最好,但是如果遇到了瓶颈最后解决不了,那就把我期间的成果整理一下,等待其他高人继续完成。总之非常感谢在留言里支持我的朋友们,不然现在这个输入法到底存不存在还两说呢。 ifanr:国内现在有不少做电子书的厂家,不过似乎业绩都不算好。你对这个怎么看? 200:对于国内的电子书产业我所知甚少,也就不妄加评论了。但是对于电子书设备,我个人认为支持个性化的定制和提供健全的配套服务是取胜的关键因素。我虽然没有用过汉王的电子书,但是从论坛上其他朋友的反应来看,在这两方面汉王还是有继续提升的空间,总之希望这样一个国产品牌今后可以一路走好吧。 |