wuhgit/CustomPinyinDictionary

Fcitx5 Magisk 模块安装,词库文件夹不存在

qianbinbin opened this issue · 10 comments

文件夹不存在的问题

      DICT_DIR=/storage/emulated/$1/Android/data/$FCITX_PACKAGENAME/files/data/pinyin/dictionaries
      DICT_LOC=$DICT_DIR/CustomPinyinDictionary_Fcitx.dict
      if [ ! -d "$DICT_DIR" ];then
        ui_print "- 词库文件夹不存在!"

dictionaries 文件夹在 Fcitx5 安装时不会自动生成,这里可能少了个 mkdir

Shelter 多用户问题

系统是 Android 13(LineageOS 20.0),用户 10 是用 Shelter 创建的。

手动为主用户和用户 10 新建该文件夹后,主用户可以安装,但用户 10 仍然安装失败。

可能是某种权限问题,我在终端下以 root 权限也打不开这个目录。

/storage/emulated # ls
ls: .: Permission denied

Screenshot_20230222-233528_Trebuchet

个人不推荐自己手动创建目录,这可能会造成一些未知问题,这也是我没有添加 mkdir 命令的原因。

这个文件夹理应由 Fcitx 来创建,如果首次安装 Fcitx 后没有使用过相关功能,这个文件夹是不存在的,这是正常现象。

可以参考这里:

https://github.com/fcitx5-android/fcitx5-android/blob/87f7f44bcf206669cf24effe0d957dfdf8b8872d/app/src/main/java/org/fcitx/fcitx5/android/data/pinyin/PinyinDictManager.kt#L18

想要解决这个问题,首次安装 Fcitx 后先切换一次拼音输入法,进入词典菜单(可能不需要这一步),让应用生成目录后再安装模块即可。

你所说的多用户问题同理,也应该在 用户10 下进行一次上述操作。

你是按照 之前的方式 创建的空白文件吗?

你在 /data/adb/wuhgit/CustomPinyinDictionary/ 这个目录下创建一个文件名为 10 的空文件,然后再安装模块即可。

后面的模块改过这个路径了,新目录路径是 /data/adb/wuhgit/CustomPinyinDictionary/fcitx/,在这个目录下创建文件名为 10 的空文件。

后面的模块改过这个路径了,新目录路径是 /data/adb/wuhgit/CustomPinyinDictionary/fcitx/,在这个目录下创建文件名为 10 的空文件。

我就是按照这个路径创建的,否则脚本逻辑也不会走到文件夹不存在这里。

个人倾向于这是某种权限问题,因为以 root 权限也无法读取 storage/emulated,root 权限的文件管理器也不行,用户之间似乎是高度隔离的。如果这个功能不好实现,那我还是手动复制吧。

刚试了一下 Shelter ,发现 Android 13 已经拿不到 工作资料 子用户的根目录权限了,你只能手动安装了。

明白了,谢谢。

试过自带的多用户以及通过 shelter 创建,都没办法拿到 storage/emulated/<UID> 的权限了,而 /data/user/<UID>/ 却又可以,所以 Gboard 的模块还是可以继续多用户使用,但 Fcitx 的模块就没办法了。

是的,不过 Gboard 占用资源太高了,所以尝试换 Fcitx5。

@qianbinbin

问题应该解决了,CustomPinyinDictionary_Fcitx_Magisk_20230224.zip 我这边测试通过(Android 13 LineageOS 20.0 + Shelter 1.8),你试试,还有问题的话反馈一下。