trime icon indicating copy to clipboard operation
trime copied to clipboard

是否有可能把代码重构一下?并且降低不同的开发平台上的编译难度?

Open cabins opened this issue 1 year ago • 7 comments

对项目的代码感兴趣。希望自己能够在项目中出一份力,开发/测试/Wiki等。但我发现项目的代码随着时间的推移,项目的代码中有Java和Kotlin,同时我也阅读了一些fcitx5的代码,发现彼项目相对就清晰很多。

能理解是历史带来的结果。我想咨询的是,是否有可能将代码重构一下,就完全使用Kotlin来写得了?会让项目的代码以及结构更加的清晰。

另外,我在一台Windows上发现,编译过程比较曲折(大多是JNI部分的),是否有可能将JNI独立出来,只把so文件引入进来,来降低新人入手的编译难度?

cabins avatar Mar 17 '23 07:03 cabins

重构当然没有人会反对,只要你能做到

关于最后面说的把jni独立出来,我是举双手赞成,我之前也和开发人员聊过,最好是让jni部分提供的稳定的接口(如果能独立出来也就实现了这点),而不是对接口一直修改,同文安卓部分再基于稳定的jni接口写调用就是了,但是他们并不认为jni需要提供稳定的接口

mokapsing avatar Mar 17 '23 09:03 mokapsing

其实编译的话,完全可可以CI来进行。 感觉目前最主要的是稳定当前的功能,降低使用门槛。

wxyzh avatar Mar 17 '23 13:03 wxyzh

@cabins 其实现在就在重构,你可以看到项目的 Kotlin 代码占比在逐渐提升。但是同文的历史包袱实在有点重,重构工作实属有点举步维艰,所以进度比较慢,也不知道在我真的没业余时间闲下来写代码时之前能不能搞定 ……

WhiredPlanck avatar Mar 19 '23 16:03 WhiredPlanck

@cabins 其实现在就在重构,你可以看到项目的 Kotlin 代码占比在逐渐提升。但是同文的历史包袱实在有点重,重构工作实属有点举步维艰,所以进度比较慢,也不知道在我真的没业余时间闲下来写代码时之前能不能搞定 ……

明白。确实看到了代码以及产品功能的变化,向大佬致敬。

cabins avatar Mar 20 '23 07:03 cabins

各位可以看看这里:

  1. https://github.com/zhaozg/librime/tree/trime/librime_jni
  2. https://github.com/zhaozg/trime/tree/Lightweight
  3. https://github.com/zhaozg/librime/releases/tag/1.8.5

zhaozg avatar May 21 '23 04:05 zhaozg

各位可以看看这里:

  1. https://github.com/zhaozg/librime/tree/trime/librime_jni
  2. https://github.com/zhaozg/trime/tree/Lightweight
  3. https://github.com/zhaozg/librime/releases/tag/1.8.5

你有听过fcitx5-android吗,目前该项目支持了插件机制,为rime的支持提供了理论支持,如果你有兴趣让f5a支持rime,增加一个使用rime的选择,或许可以试试把fcitx5-rime用安卓的工具链来编译 参考: https://github.com/fcitx5-android/fcitx5-android/tree/master/plugin/anthy 这是目前一个完成的插件实例 https://github.com/fcitx5-android/fcitx5-anthy/ https://github.com/fcitx/fcitx5-rime

mokapsing avatar May 22 '23 02:05 mokapsing

重构当然没有人会反对,只要你能做到

关于最后面说的把jni独立出来,我是举双手赞成,我之前也和开发人员聊过,最好是让jni部分提供的稳定的接口(如果能独立出来也就实现了这点),而不是对接口一直修改,同文安卓部分再基于稳定的jni接口写调用就是了,但是他们并不认为jni需要提供稳定的接口

@mokapsing 其实不需要稳定接口是当时我没解释清楚实际想法。Rime 的 API 需要通过 JNI 才能被 Java 调用,反之亦然。一般来说只要 Rime 给的 API 不变,或者 Java 侧需要 C++ 侧调用的功能(在同文中较少)不变,那 JNI 也没啥理由大变。但是现在同文的情况是需要频繁调整 JNI,因为可能原来实现不够好,或者抽象出了更整洁的写法,或者简单的新增接口(原来可能有 API 没利用)、删除接口(同文不需要这个功能了,或者原来的 API 弃用了)。所以是因为需要驱动 JNI 的变化,而不是想刻意使得 JNI 不稳定。

WhiredPlanck avatar May 26 '23 13:05 WhiredPlanck

@cabins 同文现应已较完美支持在 Windows、macOS 和 Linux 上编译。如有其他问题欢迎反馈。

WhiredPlanck avatar Mar 17 '24 06:03 WhiredPlanck

@cabins 同文现应已较完美支持在 Windows、macOS 和 Linux 上编译。如有其他问题欢迎反馈。

一直在关注着进度,向各位的辛苦工作致敬!

cabins avatar Mar 18 '24 01:03 cabins