Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fcitx5-android/fcitx5-android
Fcitx5 input method framework and engines ported to Android
https://github.com/fcitx5-android/fcitx5-android
android android-ime android-keyboard fcitx fcitx5 ime input-method keyboard
Last synced: 14 days ago
JSON representation
Fcitx5 input method framework and engines ported to Android
- Host: GitHub
- URL: https://github.com/fcitx5-android/fcitx5-android
- Owner: fcitx5-android
- License: lgpl-2.1
- Created: 2021-06-10T13:53:32.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2024-10-21T17:41:32.000Z (23 days ago)
- Last Synced: 2024-10-22T02:52:53.026Z (23 days ago)
- Topics: android, android-ime, android-keyboard, fcitx, fcitx5, ime, input-method, keyboard
- Language: Kotlin
- Homepage: https://fcitx5-android.github.io/
- Size: 4.77 MB
- Stars: 2,951
- Watchers: 20
- Forks: 177
- Open Issues: 58
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-foss-android-apps - 小企鵝Fcitx5 for Android
README
# fcitx5-android
[Fcitx5](https://github.com/fcitx/fcitx5) input method framework and engines ported to Android.
## Download
### Latest CI builds
Jenkins: [![build status](https://img.shields.io/jenkins/build.svg?jobUrl=https://jenkins.fcitx-im.org/job/android/job/fcitx5-android/)](https://jenkins.fcitx-im.org/job/android/job/fcitx5-android/)
### Tagged releases
GitHub: [![release version](https://img.shields.io/github/v/release/fcitx5-android/fcitx5-android)](https://github.com/fcitx5-android/fcitx5-android/releases)
[](https://f-droid.org/packages/org.fcitx.fcitx5.android)
[](https://play.google.com/store/apps/details?id=org.fcitx.fcitx5.android)## Project status
### Supported Languages
- English (with spell check)
- Chinese
- Pinyin, Shuangpin, Wubi, Cangjie and custom tables (built-in, powered by [fcitx5-chinese-addons](https://github.com/fcitx/fcitx5-chinese-addons))
- Zhuyin/Bopomofo (via [Chewing Plugin](./plugin/chewing))
- Jyutping (via [Jyutping Plugin](./plugin/jyutping/), powered by [libime-jyutping](https://github.com/fcitx/libime-jyutping))
- Vietnamese (via [UniKey Plugin](./plugin/unikey), supports Telex, VNI and VIQR)
- Japanese (via [Anthy Plugin](./plugin/anthy))
- Korean (via [Hangul Plugin](./plugin/hangul))
- Sinhala (via [Sayura Plugin](./plugin/sayura))
- Thai (via [Thai Plugin](./plugin/thai))
- Generic (via [RIME Plugin](./plugin/rime), supports importing custom schemas)### Implemented Features
- 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### Planned Features
- Customizable keyboard layout
- More input methods (via plugin)## Screenshots
|拼音, 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|
|:-:|:-:|
|||## Get involved
Trello kanban: https://trello.com/b/gftk6ZdV/kanban
Matrix Room: https://matrix.to/#/#fcitx5-android:mozilla.org
Discuss on Telegram: [@fcitx5_android_group](https://t.me/fcitx5_android_group) ([@fcitx5_android](https://t.me/fcitx5_android) originally)
## Build
### Dependencies
- 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](https://github.com/KDE/extra-cmake-modules)
- GNU Gettext >= 0.20 (for `msgfmt` binary; or install `appstream` if you really have to use gettext <= 0.19.)### How to set up development environment
Prerequisites for Windows
- Enable [Developer Mode](https://learn.microsoft.com/en-us/windows/apps/get-started/enable-your-device-for-development) so that symlinks can be created without administrator privilege.
- Enable symlink support for `git`:
```shell
git config --global core.symlinks true
```First, clone this repository and fetch all submodules:
```shell
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:
```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:
```bat
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:
```shell
git checkout -- .
```Install `extra-cmake-modules` and `gettext` with your system package manager:
```shell
# 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](build-logic/convention/src/main/kotlin/Versions.kt) file.![Open SDK Manager](https://user-images.githubusercontent.com/13914967/202184493-3ee1546b-0a83-4cc9-9e41-d20b0904a0cf.png)
![Install SDK Platform](https://user-images.githubusercontent.com/13914967/202184534-340a9e7c-7c42-49bd-9cf5-1ec9dcafcf32.png)
![Install SDK Build-Tools](https://user-images.githubusercontent.com/13914967/202185945-0c7a9f39-1fcc-4018-9c81-b3d2bf1c2d3f.png)
![Install NDK](https://user-images.githubusercontent.com/13914967/202185601-0cf877ea-e148-4b88-bd2f-70533189b3d4.png)
![Install CMake](https://user-images.githubusercontent.com/13914967/202184655-3c1ab47c-432f-4bd7-a508-92096482de50.png)
### Trouble-shooting
- 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` or `JAVA_TOOL_OPTIONS`. You might want to clear them (maybe in the startup script `studio.sh` of Android Studio), as some gradle plugin treats anything in stderr as errors and aborts.
## Nix
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.