Fcitx5 input method framework and engines ported to Android.
- English (with spell check)
- Chinese
- Pinyin, Shuangpin, Wubi, Cangjie and custom tables (built-in, powered by fcitx5-chinese-addons)
- Zhuyin/Bopomofo (via Chewing Plugin)
- Jyutping (via Jyutping Plugin, powered by libime-jyutping)
- Vietnamese (via UniKey Plugin, supports Telex, VNI and VIQR)
- Japanese (via Anthy Plugin)
- Korean (via Hangul Plugin)
- Sinhala (via Sayura Plugin)
- Thai (via Thai Plugin)
- Generic (via RIME Plugin, supports importing custom schemas)
- Virtual Keyboard (layout not customizable yet)
- Expandable candidate view
- Clipboard management (plain text only)
- Theming (custom color scheme and background image)
- Popup preview on key press
- Long press popup keyboard for convenient symbol input
- Symbol and Emoji picker
- Plugin System for loading addons from other installed apk
- Customizable keyboard layout
- More input methods (via plugin)
拼音, Material Light theme, key border enabled | 自然码双拼, Pixel Dark theme, key border disabled |
---|---|
Emoji picker, Pixel Light theme, key border enabled | Symbol picker, Material Dark theme, key border disabled |
---|---|
![]() |
![]() |
Trello kanban: https://trello.com/b/gftk6ZdV/kanban
Matrix Room: https://matrix.to/#/#fcitx5-android:mozilla.org
Discuss on Telegram: @fcitx5_android_group (@fcitx5_android originally)
- Android SDK Platform & Build-Tools 34.
- Android NDK (Side by side) 25 & CMake 3.22.1, they can be installed using SDK Manager in Android Studio or
sdkmanager
command line. - KDE/extra-cmake-modules
- GNU Gettext >= 0.20 (for
msgfmt
binary; or installappstream
if you really have to use gettext <= 0.19.)
Prerequisites for Windows
-
Enable Developer Mode so that symlinks can be created without administrator privilege.
-
Enable symlink support for
git
:git config --global core.symlinks true
First, clone this repository and fetch all submodules:
git clone [email protected]:fcitx5-android/fcitx5-android.git
git submodule update --init --recursive
On Windows, you may need to regenerate symlinks to submodules.
Run in PowerShell:
Remove-Item -Recurse app/src/main/assets/usr/share, plugin/hangul/src/main/assets/usr/share/libhangul, plugin/chewing/src/main/assets/usr/share/libchewing, plugin/jyutping/src/main/assets/usr/share/libime
Or Command Prompt:
RD /S /Q app\src\main\assets\usr\share plugin\hangul\src\main\assets\usr\share\libhangul plugin\chewing\src\main\assets\usr\share\libchewing plugin\jyutping\src\main\assets\usr\share\libime
Then let git
regenerate symlinks:
git checkout -- .
Install extra-cmake-modules
and gettext
with your system package manager:
# For Arch Linux (Arch has gettext in it's base meta package)
sudo pacman -S extra-cmake-modules
# For Debian/Ubuntu
sudo apt install extra-cmake-modules gettext
# For macOS
brew install extra-cmake-modules gettext
# For Windows, install MSYS2 and execute in its shell (UCRT64)
pacman -S mingw-w64-ucrt-x86_64-extra-cmake-modules mingw-w64-ucrt-x86_64-gettext
# then add C:\msys64\ucrt64\bin to PATH
Install Android SDK Platform, Android SDK Build-Tools, Android NDK and cmake via SDK Manager in Android Studio:
Detailed steps (screenshots)
Note: These screenshots are for references and the versions in them may be out of date. The current recommended versions are recorded in Versions.kt file.
-
Android Studio indexing takes forever to complete and cosumes a lot of memory.
Switch to "Project" view in the "Project" tool window (namely the file tree side bar), right click
lib/fcitx5/src/main/cpp/prebuilt
directory, then select "Mark Directory as > Excluded". You may also need to restart the IDE to interrupt ongoing indexing process. -
Gradle error: "No variants found for ':app'. Check build files to ensure at least one variant exists." or "[CXX1210] /CMakeLists.txt debug|arm64-v8a : No compatible library found"
Examine if there are environment variables set such as
_JAVA_OPTIONS
orJAVA_TOOL_OPTIONS
. You might want to clear them (maybe in the startup scriptstudio.sh
of Android Studio), as some gradle plugin treats anything in stderr as errors and aborts.
Appropriate Android SDK with NDK is available in the development shell. The gradlew
should work out-of-the-box, so you can install the app to your phone with ./gradlew installDebug
after applying the patch mentioned above. For development, you may want to install the unstable version of Android Studio, and point the project SDK path to $ANDROID_SDK_ROOT
defined in the shell. Notice that Android Studio may generate wrong local.properties
which sets the SDK location to ~/Android/SDK
(installed by SDK Manager). In such case, you need specify sdk.dir
as the project SDK in that file manually, in case Android Studio sticks to the wrong global SDK.