-
Notifications
You must be signed in to change notification settings - Fork 137
同步教程
仓输入法的同步指两种情况:一种是 RIME 引擎的同步策略,只同步词库文件。另一种是基于 iCloud 文件系统的同步,不限于词库文件,可以把任何文件都同步到 iCloud。
RIME 同步是 RIME 内置的功能,用来同步输入方案中的词库文件。注意,RIME的同步功能只支持 userdb 类型(二进制格式)的词库。如果词库格式为 tabledb 格式(文本格式),则 RIME 同步功能无法支持。
如何查看自己的输入方案是那种格式?在输入方案的 x.schema.yaml 文件中,查找 db_class 参数。
- iOS系统设置 -> 通用 -> 键盘 -> 仓输入法,开启完全访问权限。
注意:这里必须开启“完全访问权限”,是因为 iOS 系统限制,共享在 “AppGroup” 下文件,必须开启“完全访问权限”后,键盘才能有写权限。
-
打开仓输入法,在 RIME 功能下,关闭“部署时覆盖键盘词库文件”开关。
-
在应用的方案文件管理功能下,点击Tab “应用文件”,修改
Rime下的installation.yaml文件。在文件内增加以下配置示例(如果已存在,则修改下面参数的配置信息):
installation_id: "hamster_6s"
sync_dir: "/private/var/mobile/Library/Mobile Documents/iCloud~dev~fuxiao~app~hamsterapp/Documents/sync"注意:在手机端无需手敲上述示例,在仓输入法的 RIME 功能下,点击 RIME 重置下的说明文字可复制。
-
installation_id: 用来指定同步文件夹名称,如果不加此参数,RIME 默认会生成一个 UUID 的文件。上面的示例会在sync_dir指定路径下,生成指定的hamster_6s的文件夹。 -
sync_dir: 指定的同步路径,如果不加此参数,默认路径为:仓输入法的文档目录/Rime/sync。使用 iOS 内置应用 Files(中文系统名为:文件) 查看,在
Browse/On My iPhone/Hamster/Rime/sync(中文系统为:浏览/我的iPhone/Hamster/Rime/sync)。因 iOS 系统限制,指定的同步路径不能随意写,写了也没有权限写入。
上面示例的路径是仓输入法申请的 iCloud 上的路径,固定前缀为:
/private/var/mobile/Library/Mobile Documents/iCloud~dev~fuxiao~app~hamsterapp/Documents。路径前缀后的路径,如sync是可以自定义的。使用 iOS 内置应用 Files(中文系统名为:文件) 查看,在
Browse/iCloud Drive/Hamster(中文系统为:浏览/iCloud云盘/仓输入法)。
- 在其他终端(如其他 iPhone, MacOS等),在
installation.yaml文件内设置与上面相同的sync_dir参数,而installation_id设置为不同的参数。
注意:在 MacOS 系统中,这个固定前缀会变为:
~/Library/Mobile Documents/iCloud~dev~fuxiao~app~hamsterapp/Documents
已内置星猫键道方案作为测试用例(输入方案选择内置的“星猫键道6.3”),无需开启仓输入法的“iCloud同步”开关,两台测试设备 iPhone X 和 iPhone 6s。
-
分别在两台设备上,关闭 RIME 功能下的“部署时覆盖键盘词库文件”开关
-
修改 6s 的
installation.yaml文件,参数如下:
installation_id: "hamster_6s"
sync_dir: "/private/var/mobile/Library/Mobile Documents/iCloud~dev~fuxiao~app~hamsterapp/Documents/sync"- 修改 x 的
installation.yaml文件,参数如下:
installation_id: "hamster_x"
sync_dir: "/private/var/mobile/Library/Mobile Documents/iCloud~dev~fuxiao~app~hamsterapp/Documents/sync"- 两台设置分别将内置星猫键道词库格式改为
userdb类型,如下,在方案文件管理/应用文件/SharedSupport/xmjd6.schema.yaml的294~295行。(注意:输入方案调整,行数可能有变化)
# ↓ 用户词典格式,tabledb(文本) 或 userdb (二进制)。
#db_class: tabledb
db_class: userdb两台设备修改完毕后点击“重新部署”,使刚才的词库设置生效。
以上,同步准备工作完毕,下面进入自造词同步测试:
-
在 x 设备输入自造词,输入
a进入自造词模式,键入poof,空格,生成自造词凭空这 -
在 6s 设备输入自造词,输入
a进入自造词模式,键入foop,空格,生成自造词放学平 -
在两台设备上分别点击
RIME 同步,然后使用 iOS 内置应用 Files(中文系统名为:文件) 查看,在Browse/iCloud Drive/Hamster/sync(中文系统为:浏览/iCloud云盘/仓输入法/sync)。可以看到两台设备各自的生成的同步词库文件
xmjd6_user.userdb.txt,文件内容为各自生成的自造词。 -
分别在两台设备上,使用 iOS 内置应用 Files(中文系统名为:文件)打开 sync 目录下对方设备的目录,强制下载目录下全部文件。
注意:未将云端文件下载到本地的文件,在右侧有个的云朵样式的下载图标,此时长按这个文件,点击“下载”,即可完成。
-
分别在两台设备中,点击
RIME同步,然后使用 iOS 内置应用 Files(中文系统名为:文件) 查看自造词文件,在Browse/iCloud Drive/Hamster/sync(中文系统为:浏览/iCloud云盘/仓输入法/sync)下,installation_id参数对应的目录中,xmjd6_user.userdb.txt文件内容增加了对方设备的自造词内容。
以上是两台设备自造词同步示例。
iCloud 同步是指:
- 将方案文件管理下的应用文件存储到iCloud中,此功能需要手工触发(iCloud同步 -> 拷贝应用文件至iCloud)。
此功能默认会将应用文件下的 Rime 与 SharedSupport 两个目录内的全部文件拷贝到 iCloud 的 /private/var/mobile/Library/Mobile Documents/iCloud~dev~fuxiao~app~hamsterapp/Documents/RIME 目录下。
如果希望过滤掉不想要的文件,可以使用 iCloud 同步功能下的正则过滤功能。如:
-
^.*[.]userdb.*$: 表示过滤 userdb 目录及其包含的文件 -
^.*build.*$:表示过滤 build 目录及其包含的文件 -
^.*SharedSupport.*$:表示过滤 SharedSupport 目录及其包含的文件 -
^.*[.]bin$:表示过滤已.bin结尾的文件
注意:不需要手工敲这些过滤表达式,点击功能下的说明文字即可复制。然后按个人需要修改。
- 将 iCloud 下
/private/var/mobile/Library/Mobile Documents/iCloud~dev~fuxiao~app~hamsterapp/Documents/RIME目录中的文件,复制到仓的应用文件中。
此功能在每次触发 “RIME 重新部署”时,自动复制。复制时,会比较相同文件名的文件,如果 iCloud 中的文件与本地文件不同,那么会使用 iCloud 中的文件覆盖掉本地文件。
注意:如果您设置上面说的正则过滤表达式,那么在自动复制时也会过滤处理。
RIME 同步主要是用来做自造词同步的,而 iCloud 同步功能主要是做文件的云端备份的。
https://github.com/imfuxiao/Hamster/issues/231 关于自造词同步的问题,有疑问可以参考这个issue。
https://github.com/imfuxiao/Hamster/discussions/44 关于同步/拷贝键盘词库文件至应用/Rime同步的说明