osfans / trime

同文安卓輸入法平臺3.x/Android-rime/Rime Input Method Engine for Android
http://osfans.github.io/trime/
GNU General Public License v3.0
3.09k stars 372 forks source link

求教合理的调试流程,及部署和回厂默认的具体含义 #73

Closed boboIqiqi closed 8 years ago

boboIqiqi commented 8 years ago

大家平时都是怎么调试一个输入方案,或者键盘布局的。 我先说我的,大家看看是哪里出问题了。 我现在用gVim编辑(刚学的,用得不熟,后面还要向大家学习)

1.编辑文件

主要编辑: trime.custom.yamlwubi86_double_key.schema.yaml

2. 拷贝到手机

用下面的脚本push到 /sdcard/rime下面

:: update.bat
adb push trime.custom.yaml /sdcard/rime
adb push wubi86_double_key.schema.yaml /sdcard/rime
pause

3.部署

就是点击同文桌面图标,进入配界面,点击部署

然后,某次我发现它的错误好像会累积。比如,下面是我pull出来的一个trime.yaml文件

  qwert:    #这个其实是我某次拼写错了,然后就一直在这里了
    ascii_mode: 1
  qwerty:
    ascii_mode: 1
    author: "osfans <waxaca@163.com>"
    height: 55
    keys: [{click: q, long_click: "!", swipe_up: 1}, {click: w, long_click: "@", swipe_up: 2}, {click: e, long_click: "#", swipe_up: 3}, {click: r, long_click: "$", swipe_up: 4}, {click: t, long_click: "%", swipe_up: 5}, {click: y, long_click: "^", swipe_up: 6}, {click: u, long_click: "&", swipe_up: 7}, {click: i, long_click: "*", swipe_up: 8}, {click: o, long_click: "(", swipe_up: 9}, {click: p, long_click: ")", swipe_up: 0}, {width: 5}, {click: a, long_click: select_all, swipe_down: Down, swipe_left: Left, swipe_right: Right, swipe_up: Up}, {click: s, long_click: "~", swipe_down: Page_Down, swipe_left: Home, swipe_right: End, swipe_up: Page_Up}, {click: d, long_click: "-", swipe_down: _}, {click: f, long_click: "+", swipe_down: "="}, {click: g, long_click: "\\", swipe_down: "|"}, {click: h, long_click: "[]", swipe_left: "[", swipe_right: "]"}, {click: j, long_click: "{}", swipe_left: "{", swipe_right: "}"}, {click: k, long_click: ":"}, {click: l, long_click: ";"}, {width: 5}, {click: Shift_L, composing: "'", send_bindings: true, width: 15}, {click: z, long_click: "`"}, {click: x, long_click: cut}, {click: c, long_click: copy}, {click: v, long_click: paste}, {click: b, long_click: Time, swipe_up: Date}, {click: n, long_click: "\""}, {click: m, long_click: "'"}, {click: BackSpace, width: 15}, {click: Mode_switch, long_click: Menu, width: 15}, {click: Keyboard_symbols, long_click: Keyboard_number}, {click: ",", long_click: "<", paging: Page_Up}, {click: space, width: 30}, {click: ., has_menu: Page_Down, long_click: ">"}, {click: "/", long_click: "?"}, {click: Return, long_click: CommitComment, width: 15}]
    name: "預設26鍵"
    width: 10
  qwerty0:

qwert: #这个其实是我某次拼写错了,然后就一直在这里了

4.回厂

我点击了一下配置界面中 的"回厂",选中了trime.yaml文件,确定。

5.重新布署出错

我又重新push我写的配置文件到/sdcard/rime/,然后进行部署。

这回,好像找不到qwerty键盘了。原来一直正常可以工作的配置文件,现在部署以后,点击切换到 Keybroad_qwerty的按键后,只是输出一个Keyborad_qwerty字符串。但是trime.yaml文件中又有qwerty键盘

我帖上我pull出来的trime.yaml文件。我的文件,上一个帖子中已经贴了。 有点困了,实在不知道为什么。所以先把它帖出来,如果是个弱智白痴问题,大家不要骂我。

这个问题,我前两天调试的也碰到过两次,我把rime文件夹全清了以后,重新push /brise/supplement文件夹下的所有文件,以后那三个必需文件,然后就好了。不过我还是想知道为什么。

osfans commented 8 years ago

你可以直接修改trime.yaml,然後push,然後部署。 改掛了之後,就回廠,再部署。

xiaoqun2016 commented 8 years ago

猜到会这样了,所以在详解里埋了彩蛋。哈哈,不过写了也没用。

最後,因為部署時會把trime.custom.yaml的內容合併到trime.yaml中,所以如果在調試的過程中刪除了trime.custom.yaml中的某項設置,為了確保trime.yaml中不會殘留錯誤信息,最好將trime.yaml回廠。

也可能是我写得太烂了。你可以从你的视角重写一下trime.yaml详解,应该会对更多人有帮助。


我是直接在手机上用文本编辑器修改yaml,改完不要关掉,先部署。
如果改错了,trime部署崩溃了

如果没有崩溃,但总是怪怪的,也可以回厂trime.yaml看看。

打补丁可以让你将注意力放在你所修改的内容上,出问题的时候,只需要检查补丁文件。trime.yaml可以随时回厂,而trime.custom.yaml要注意备份。

用电脑管理手机的yaml太麻烦,除非你要做词库,要处理大量的数据。但是有VimTouch,基本上手机也可以解决。

你需要熟练掌握一种手机上的文本编辑器和 文件管理器。奇怪的是,你adb push都会用了,还要人教这些基本操作? 我是不是太啰嗦了 ,赶紧跑……

boboIqiqi commented 8 years ago

再次感谢 @xiaoqun2016 小群老师。 没有,您说的正是我需要的。没有想到还可以用手机编辑。又get了新技能。

我觉得主要是我自己理解有点错误,对部署的具体流程。部署会将各个方案的yaml文件以及trime.custom.yaml文件合并到trime.yaml中,然后再读入。我还以为,trime.yaml是一个只读文件,不会被修改,合成是一个中间结果,直接读入内存,或者缓存到另一个文件中了。

其实我想要的是 生成一个独立的,可以发布的输入方案及用到的多个键盘布局 因为我想生成这个布局后,别人拿过去就可以用,或者我下次到另一台手机上重装了软件,我只要将这个输入法方案拷贝过去,部署就可以用了。

这样,我应该把所有的定义,都放在wubi86_double_key.schema.yaml文件中。这样会更有独立通用。只是这样要用到trime.yaml中的键盘时,还是要假定用户没有对trime.yaml做过更改,我需要的东西都在。

我这样理解对吗?

xiaoqun2016 commented 8 years ago

你说的去年就有实现过,那时候是可以做成xxx.trime.yaml,后来改版取消了。可以跟老大讨论一下看怎么做比较好。

osfans commented 8 years ago

确实需要独立的键盘和皮肤的话,可以加回来。看看用什么语法比较好。是放在schema的style里 还是跟trime.yaml一样用独立的presets

boboIqiqi commented 8 years ago

今天新学了一个新技巧,可以加到我的项目中,方便调试。简单的讲,就是通过命令行adb发广播,来完成部署,不用手动点击主页面,再去点部署按钮。

定义下面的文件bat,每次修改完,直接点击,更新完成yaml文件后,同时完成了部署。

Update.bat

adb push xx.custom.yaml /sdcard/rime
adb push yy.custom.yaml /sdcard/rime
adb shell am broadcast -a com.osfans.trime.deploy
pause

AndroidManifest.xml

        <receiver android:name="DebugCommandReceiver">
            <intent-filter>
                <action android:name="com.osfans.trime.deploy"></action>
            </intent-filter>
        </receiver>

Java类

public class DebugCommandReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
          //执行Deloy操作
    }
}

当然,为了安全,我们可以在设置中加一个选项,是否启动调试模式。 启动调试模式后,我们还可以加更多的命令或者别的什么,方便调试

Mark一下,回头可以试一下

osfans commented 8 years ago

讚一個。到時我們可以搞成自動deploy。提交了吧。

osfans commented 8 years ago

88 已合并。