https://github.com/fcitx-contrib/fcitx5-ios
Fcitx5 iOS edition, currently developer beta. 小企鹅输入法 iOS 开发者公测 https://t.me/fcitx5macos/16126
https://github.com/fcitx-contrib/fcitx5-ios
fcitx5 input-method rime
Last synced: 17 days ago
JSON representation
Fcitx5 iOS edition, currently developer beta. 小企鹅输入法 iOS 开发者公测 https://t.me/fcitx5macos/16126
- Host: GitHub
- URL: https://github.com/fcitx-contrib/fcitx5-ios
- Owner: fcitx-contrib
- License: gpl-3.0
- Created: 2024-09-21T03:18:22.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2026-04-19T23:13:01.000Z (23 days ago)
- Last Synced: 2026-04-20T00:34:17.893Z (23 days ago)
- Topics: fcitx5, input-method, rime
- Language: Swift
- Homepage:
- Size: 857 KB
- Stars: 78
- Watchers: 1
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
English
|
[中文](README.zh-CN.md)
# Fcitx5 iOS
[Fcitx5](https://github.com/fcitx/fcitx5) input method framework ported to iOS ≥ 16.3.
Currently developer beta. Please download [IPA](https://github.com/fcitx-contrib/fcitx5-ios/releases/tag/latest) and install with [SideStore](https://github.com/SideStore/SideStore).
Note: Without developer account, App Group can't be used, so please
* grant full access to keyboards;
* click `Sync config` after making changes to configuration or data.
## Build for simulator
This project is NOT managed by Xcode, but Xcode is needed for iOS SDK.
Below assumes Apple Silicon.
For Intel, replace all `SIMULATORARM64` with `SIMULATOR64`.
### Install dependencies
```sh
brew install cmake ninja gettext pkg-config
./scripts/install-deps.sh SIMULATORARM64
```
### Apply patches
```sh
git apply --directory=fcitx5 patches/fcitx5.patch
git apply --directory=deps/swifter patches/swifter.patch
git apply --directory=engines/libime/src/libime/core/kenlm patches/kenlm.patch
git apply --directory=engines/fcitx5-hallelujah patches/hallelujah.patch
git apply --directory=engines/fcitx5-rime patches/rime.patch
```
### Build with CMake
```sh
cmake -B build/SIMULATORARM64 -G Ninja -DCMAKE_BUILD_TYPE=Debug -DPLATFORM=SIMULATORARM64
cmake --build build/SIMULATORARM64 && ./scripts/code-sign.sh SIMULATORARM64
```
You can also use `Cmd+Shift+B` in VSCode to execute a task.
### Play with simulator
```sh
xcrun simctl list devices
xcrun simctl boot UUID
open /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app
xcrun simctl install booted build/SIMULATORARM64/src/Fcitx5.app
```
After the first time you execute `xcrun simctl install`,
you need to add Fcitx5 in Settings -> General -> Keyboard -> Keyboards -> Add New Keyboard.
* Simulator is not emulator (virtual machine). Simulator file system is mapped from host filesystem. A process in simulator is a process in macOS.
* App and input method (custom keyboard extension) are different programs. They share a directory (via App Group) in ~/Library/Developer/CoreSimulator/Devices/UUID/data/Containers/Shared/AppGroup.
## Build for iOS device
Generate an unsigned IPA and install it with SideStore.
Below assumes you've already done with simulator.
```sh
./scripts/install-deps.sh OS64
cmake -B build/OS64 -G Ninja -DCMAKE_BUILD_TYPE=Release -DPLATFORM=OS64
cmake --build build/OS64
cd build/OS64/src && rm -rf Payload Fcitx5.ipa && mkdir Payload
cp -r Fcitx5.app Payload && zip -r Fcitx5.ipa Payload
```
## Real device debug
### OOM
There is a 77 MB memory limit for keyboard extension.
When memory approaches the limit, you will see in Console.app like `Received memory warning.` for the process.
Later if memory exceeds the limit, you will see
```
memorystatus: keyboard [14871] exceeded mem limit: ActiveHard 77 MB (fatal)
memorystatus: killing process 14871 [keyboard] in high band FOREGROUND (100) - memorystatus_available_pages: 121469
keyboard[14871] Corpse allowed 1 of 5
1817600.392 memorystatus: killing_specific_process pid 14871 [keyboard] (per-process-limit 100 16s rf:-) 78848KB - memorystatus_available_pages: 121472
```
### Memory monitor
Use `/Applications/Xcode.app/Contents/Applications/Instruments.app`'s `Activity Monitor`.
### Crash
Crash reports are available in `Settings` -> `Privacy & Security` -> `Analytics & Improvements` -> `Analytics Data`.
Send them to mac and open with Console.app.
## Credits
Thanks to [these](./CREDITS.md) 3rd-party Open Source projects.