To get started with Android/CharaROM, you'll need to get familiar with Source Control Tools.
Repo is a tool provided by Google that simplifies using Git in the context of the Android source:
- Repo docs: http://source.android.com/source/developing.html
- Git docs: http://git-scm.com/book
Several packages are needed in order to build crDroid. Example (the industry likes using Ubuntu):
sudo apt install bc bison build-essential ccache curl flex g++-multilib gcc-multilib git git-lfs gnupg gperf imagemagick lib32ncurses-dev lib32readline-dev lib32z1-dev liblz4-tool libncurses6 libncurses-dev libsdl1.2-dev libssl-dev libwxgtk3.2-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-devOn Arch, which is what Chara personally uses, only yay (or paru), aosp-devel, and lineageos-devel are needed. (Some of those packages may need adjustment for your linux distribution)
Install the Repo tool:
# create ~/bin and add to PATH for this session (or add to your shell profile)
mkdir -p ~/bin
export PATH=~/bin:$PATH
# download Repo
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
# make Repo executable
chmod a+x ~/bin/repoTip: Add export PATH=~/bin:$PATH to ~/.bashrc or your shell profile so Repo is available in future sessions.
Create a workspace and initialize the CharaROM 16.0 manifest:
mkdir -p ~/chararom
cd ~/chararom
repo init -u https://git.chararom.xyz/CharaROMAndroid/android.git -b 16.0 --git-lfs --no-clone-bundleSync the source tree (may take a long time on first run):
repo syncNotes and useful flags:
- To recover from interrupted syncs or to force a fresh copy:
repo sync --force-sync --no-tags --no-clone-bundle -j8(adjust-jto match your bandwidth/CPUs). - Use
repo sync -cto only sync the current branch per project (saves time/space) when appropriate.
Prepare the build environment:
. build/envsetup.shBuild using:
brunch <devicecodename>(Replace <devicecodename> with your device codename, e.g. caiman, lemonadep, etc.)
Troubleshooting tips:
- Out-of-disk-space: ensure enough free space (Android tree can require 100+ GB).
- If builds fail after repo sync, try
repo sync --force-syncand a clean build:mka cleanthen rebuild. - If builds still fail, consult the LineageOS build guide for your device.
To submit changes or patches:
- Fork the repository on GitHub, make your changes, and open a Pull Request against the appropriate branch.
- We review PRs and merge them when appropriate.
- Read and follow our rules and guidelines: https://git.chararom.xyz/chararomandroid/rules-and-guidelines
- If everything is in order, message the team on Telegram: https://telegram.me/bunnypaddev
Set overlays to the proper paths.
Frameworks base:
overlay/frameworks/base/core/res/res/values/config.xml
Example reference: https://git.chararom.xyz/CharaROMAndroid/android_frameworks_base/blob/16.0/core/res/res/values/cr_config.xml
SystemUI:
overlay/frameworks/base/packages/SystemUI/res/values/config.xml
Example reference: https://git.chararom.xyz/CharaROMAndroid/android_frameworks_base/blob/16.0/packages/SystemUI/res/values/cr_config.xml
If you device supports blur but it is expensive to render, you should disable default blur with following prop:
ro.surface_flinger.blur_disabled_by_default=true
If you see artifacts with blur, you can reduce blur rendering effect with following example overlays:
Disable high performance transitions
Reduce blur radius
If your device cannot render blur at all, you should disable blur support by defining below in device.mk
TARGET_SUPPORTS_BLUR := false
We use crDroid's Crowdin for translations. To help out see: https://github.com/crdroidandroid/crdroid_features#translations
If you want to translate a CharaROM specific string, please open a pull request for the time being.
Ready to share your build? Use the forum post template: https://git.chararom.xyz/CharaROMAndroid/chararom_features/blob/16.0/ForumPostTemplate
Some commits in CharaROM repos list "Kat" as an author or co-author.
Kat (Kryptonic Autocommitting Tool) is an AI assistant used for code scanning, commit message assistance, and small fixes written at the maintainers' direction, usually when Chara was away from her laptop. Every Kat commit is reviewed and approved by a human maintainer before it's pushed.