Skip to content
morse.hsiao edited this page Oct 9, 2023 · 10 revisions

仓输入法的同步指两种情况:一种是 RIME 引擎的同步策略,只同步词库文件。另一种是基于 iCloud 文件系统的同步,不限于词库文件,可以把任何文件都同步到 iCloud。

RIME 同步

RIME 同步是 RIME 内置的功能,用来同步输入方案中的词库文件。注意,RIME的同步功能只支持 userdb 类型(二进制格式)的词库。如果词库格式为 tabledb 格式(文本格式),则 RIME 同步功能无法支持。

如何查看自己的输入方案是那种格式?在输入方案的 x.schema.yaml 文件中,查找 db_class 参数。

设置方法

  1. iOS系统设置 -> 通用 -> 键盘 -> 仓输入法,开启完全访问权限。

注意:这里必须开启“完全访问权限”,是因为 iOS 系统限制,共享在 “AppGroup” 下文件,必须开启“完全访问权限”后,键盘才能有写权限。

  1. 打开仓输入法,在 RIME 功能下,关闭“部署时覆盖键盘词库文件”开关。

  2. 在应用的方案文件管理功能下,点击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云盘/仓输入法)。

  1. 在其他终端(如其他 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。

  1. 分别在两台设备上,关闭 RIME 功能下的“部署时覆盖键盘词库文件”开关

  2. 修改 6s 的 installation.yaml 文件,参数如下:

installation_id: "hamster_6s"
sync_dir: "/private/var/mobile/Library/Mobile Documents/iCloud~dev~fuxiao~app~hamsterapp/Documents/sync"
  1. 修改 x 的 installation.yaml 文件,参数如下:
installation_id: "hamster_x"
sync_dir: "/private/var/mobile/Library/Mobile Documents/iCloud~dev~fuxiao~app~hamsterapp/Documents/sync"
  1. 两台设置分别将内置星猫键道词库格式改为userdb类型,如下,在 方案文件管理/应用文件/SharedSupport/xmjd6.schema.yaml 的294~295行。(注意:输入方案调整,行数可能有变化)
# ↓ 用户词典格式,tabledb(文本) 或 userdb (二进制)。
  #db_class: tabledb
  db_class: userdb

两台设备修改完毕后点击“重新部署”,使刚才的词库设置生效。

以上,同步准备工作完毕,下面进入自造词同步测试:

  1. 在 x 设备输入自造词,输入 a 进入自造词模式,键入 poof,空格,生成自造词 凭空这

  2. 在 6s 设备输入自造词,输入 a 进入自造词模式,键入 foop,空格,生成自造词 放学平

  3. 在两台设备上分别点击 RIME 同步,然后使用 iOS 内置应用 Files(中文系统名为:文件) 查看,在Browse/iCloud Drive/Hamster/sync(中文系统为:浏览/iCloud云盘/仓输入法/sync)。

    可以看到两台设备各自的生成的同步词库文件xmjd6_user.userdb.txt,文件内容为各自生成的自造词。

  4. 分别在两台设备上,使用 iOS 内置应用 Files(中文系统名为:文件)打开 sync 目录下对方设备的目录,强制下载目录下全部文件。

    注意:未将云端文件下载到本地的文件,在右侧有个的云朵样式的下载图标,此时长按这个文件,点击“下载”,即可完成。

  5. 分别在两台设备中,点击 RIME同步,然后使用 iOS 内置应用 Files(中文系统名为:文件) 查看自造词文件,在Browse/iCloud Drive/Hamster/sync(中文系统为:浏览/iCloud云盘/仓输入法/sync)下,installation_id参数对应的目录中,xmjd6_user.userdb.txt文件内容增加了对方设备的自造词内容。

以上是两台设备自造词同步示例。

iCloud 同步

iCloud 同步是指:

  1. 将方案文件管理下的应用文件存储到iCloud中,此功能需要手工触发(iCloud同步 -> 拷贝应用文件至iCloud)。

此功能默认会将应用文件下的 RimeSharedSupport 两个目录内的全部文件拷贝到 iCloud 的 /private/var/mobile/Library/Mobile Documents/iCloud~dev~fuxiao~app~hamsterapp/Documents/RIME 目录下。

如果希望过滤掉不想要的文件,可以使用 iCloud 同步功能下的正则过滤功能。如:

  • ^.*[.]userdb.*$: 表示过滤 userdb 目录及其包含的文件
  • ^.*build.*$:表示过滤 build 目录及其包含的文件
  • ^.*SharedSupport.*$:表示过滤 SharedSupport 目录及其包含的文件
  • ^.*[.]bin$:表示过滤已 .bin 结尾的文件

注意:不需要手工敲这些过滤表达式,点击功能下的说明文字即可复制。然后按个人需要修改。

  1. 将 iCloud 下 /private/var/mobile/Library/Mobile Documents/iCloud~dev~fuxiao~app~hamsterapp/Documents/RIME 目录中的文件,复制到仓的应用文件中。

此功能在每次触发 “RIME 重新部署”时,自动复制。复制时,会比较相同文件名的文件,如果 iCloud 中的文件与本地文件不同,那么会使用 iCloud 中的文件覆盖掉本地文件。

注意:如果您设置上面说的正则过滤表达式,那么在自动复制时也会过滤处理。

iCloud 同步 与 RIME 同步的区别

RIME 同步主要是用来做自造词同步的,而 iCloud 同步功能主要是做文件的云端备份的。

问题

https://github.com/imfuxiao/Hamster/issues/231 关于自造词同步的问题,有疑问可以参考这个issue。

https://github.com/imfuxiao/Hamster/discussions/44 关于同步/拷贝键盘词库文件至应用/Rime同步的说明

Clone this wiki locally