A little python script that will help you in building Revanced apps.
Note
- If you are a root user and want magisk module (Extended). Get them here
This is just a builder for revanced and not a revanced support. Please be understanding and refrain from asking about revanced features/bugs. Discuss those on proper relevant forums.
You can get pre-built apks here
You can use any of the following methods to build.
-
🚀 _GitHub_ (
Recommended
) -
🐳 Docker Compose
Windows/Mac users simply install Docker Desktop. If using Linux see below- Install Docker(Skip if already installed)
curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh
- Grant Permissions with(Skip if already there)
sudo chmod 777 /var/run/docker.sock
- Install Docker compose(Skip if already installed or using
Docker Desktop
)curl -L "https://github.com/docker/compose/releases/download/v2.10.2/docker-compose-$(uname -s)-$(uname -m)" \ -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
- Clone the repo
git clone https://github.com/nikhilbadyal/docker-py-revanced
- cd to the cloned repo
cd docker-py-revanced
- Update
.env
file if you want some customization(See notes) - Run script with
docker-compose up --build
- Install Docker(Skip if already installed)
-
🐳With Docker
- Install Docker(Skip if already installed)
curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh
- Run script with
You can pass the below environment variables (See notes) with the
docker run -v "$(pwd)"/apks:/app/apks/ nikhilbadyal/docker-py-revanced
-e
flag or use the--env-file
flag.
- Install Docker(Skip if already installed)
-
🫠Without Docker
- Install Java >= 17
- Install Python
- Create virtual environment
python3 -m venv venv
- Activate virtual environment
source venv/bin/activate
- Install Dependencies with
pip install -r requirements.txt
- Run the script with
python main.py
Env Name | Description | Default |
---|---|---|
PATCH_APPS | Apps to patch/build | youtube |
EXISTING_DOWNLOADED_APKS | Already downloaded clean apks | [] |
PERSONAL_ACCESS_TOKEN | Github Token to be used | None |
DRY_RUN | Do a dry run | False |
GLOBAL_CLI_DL* | DL for CLI to be used for patching apps. | Revanced CLI |
GLOBAL_PATCHES_DL* | DL for Patches to be used for patching apps. | Revanced Patches |
GLOBAL_PATCHES_JSON_DL* | DL for Patches Json to be used for patching apps. | Revanced Patches |
GLOBAL_INTEGRATIONS_DL* | DL for Integrations to be used for patching apps. | Revanced CLI |
GLOBAL_KEYSTORE_FILE_NAME* | Key file to be used for signing apps | Builder's own key |
GLOBAL_ARCHS_TO_BUILD* | Arch to keep in the patched apk. | All |
REDDIT_CLIENT_ID | Reddit Client ID to patch reddit apps | None |
VT_API_KEY | Virus Total Key to scan APKs | None |
TELEGRAM_CHAT_ID | Receiver in Telegram upload | None |
TELEGRAM_BOT_TOKEN | APKs Sender for Telegram upload | None |
TELEGRAM_API_ID | Used for telegram Authentication | None |
TELEGRAM_API_HASH | Used for telegram Authentication | None |
*
- Can be overridden for individual app.
Env Name | Description | Default |
---|---|---|
APP_NAME_CLI_DL | DL for CLI to be used for patching APP_NAME. | GLOBAL_CLI_DL |
APP_NAME_PATCHES_DL | DL for Patches to be used for patching APP_NAME. | GLOBAL_PATCHES_DL |
APP_NAME_PATCHES_JSON_DL | DL for Patches Json to be used for patching APP_NAME. | GLOBAL_PATCHES_JSON_DL |
APP_NAME_INTEGRATIONS_DL | DL for Integrations to be used for patching APP_NAME. | GLOBAL_INTEGRATIONS_DL |
APP_NAME_KEYSTORE_FILE_NAME | Key file to be used for signing APP_NAME. | GLOBAL_KEYSTORE_FILE_NAME |
APP_NAME_ARCHS_TO_BUILD | Arch to keep in the patched APP_NAME. | GLOBAL_ARCHS_TO_BUILD |
APP_NAME_EXCLUDE_PATCH** | Patches to exclude while patching APP_NAME. | [] |
APP_NAME_INCLUDE_PATCH** | Patches to include while patching APP_NAME. | [] |
APP_NAME_VERSION** | Version to use for download for patching. | Recommended by patch resources |
**
- By default all patches for a given app are included.
**
- Can be used to included universal patch.
-
Supported values for APP_NAME are :
- youtube
- youtube_music
- tiktok
- warnwetter
- spotify
- nyx-music-player
- icon_pack_studio
- ticktick
- twitch
- hex-editor
- windy
- my-expenses
- backdrops
- expensemanager
- tasker
- irplus
- vsco
- meme-generator-free
- nova_launcher
- netguard
- inshorts
- grecorder
- trakt
- candyvpn
- sonyheadphone
- androidtwelvewidgets
- yuka
- relay
- boost
- rif
- sync
- infinity
- slide
- bacon
- microg
- pixiv
Please verify the source of original APKs yourself with links provided. I'm not responsible for any damage caused.If you know any better/safe source to download clean. Open a discussion. -
By default, script build the latest version as recommended by
patches.json
team. -
Remember to download the Microg. Otherwise, you may not be able to open YouTube/YouTube Music.
-
By default, tool will build only
youtube
. To build other apps supported by patching resources.Add the apps you want to build in.env
file or inENVS
inGitHub secrets
in the formatPATCH_APPS=<APP_NAME>
Example:
PATCH_APPS=youtube,twitter,reddit
-
If APKMirror or other apk sources are blocked in your region or script somehow is unable to download from apkmirror. You can download apk manually from any source. Place them in
/apks
directory and provide environment variable in.env
file or inENVS
inGitHub secrets
(Recommended) in the format.EXISTING_DOWNLOADED_APKS=<Comma,Seperate,App,Name>
Example:
EXISTING_DOWNLOADED_APKS=youtube,youtube_music
If you add above. Script will not download the
youtube
&youtube_music
apk from internet and expects an apk in/apks
folder with same name. -
If you run script again & again. You might hit GitHub API limit. In that case you can provide your Personal GitHub Access Token in
.env
file or inENVS
inGitHub secrets
(Recommended) in the format -PERSONAL_ACCESS_TOKEN=<PAT>
-
You can provide Direct download to the resource to used for patching apps
.env
file or inENVS
inGitHub secrets
(Recommended) in the format -GLOBAL_CLI_DL=https://github.com/revanced/revanced-cli GLOBAL_PATCHES_DL=https://github.com/revanced/revanced-patches GLOBAL_PATCHES_JSON_DL=https://github.com/revanced/revanced-patches GLOBAL_INTEGRATIONS_DL=https://github.com/revanced/revanced-integrations
Resources downloaded from envs and will be used for patching for any APP_NAME. Unless provided different resource for the individual app.
Tool also support resource config at app level. You can patch A app with X resources while patching B with Y resources. This can be done by providing Direct download link for resources for app.
Example:YOUTUBE_CLI_DL=https://github.com/inotia00/revanced-cli YOUTUBE_PATCHES_DL=https://github.com/inotia00/revanced-patches YOUTUBE_PATCHES_JSON_DL=https://github.com/inotia00/revanced-patches YOUTUBE_INTEGRATIONS_DL=https://github.com/inotia00/revanced-integrations
With the config tool will try to patch youtube with resources from inotia00 while other global resource will used for patching other apps. Note - The link provided must be DLs. Unless they are from GitHub.
-
If you don't want to use default keystore. You can provide your own by placing it inside
apks
folder. And adding the name ofkeystore-file
in.env
file or inENVS
inGitHub secrets
(Recommended) in the formatGLOBAL_KEYSTORE_FILE_NAME=revanced.keystore
Tool also support providing secret key at app level. You can sign A app with X key while signing B with Y key.
Example:YOUTUBE_KEYSTORE_FILE_NAME=youtube.keystore
-
You can build only for a particular arch in order to get smaller apk files.This can be done with by adding comma separated
ARCHS_TO_BUILD
inENVS
inGitHub secrets
(Recommended) in the format.GLOABAL_ARCHS_TO_BUILD=arm64-v8a,armeabi-v7a
Tool also support configuring at app level.
Example:
YOUTUBE_ARCHS_TO_BUILD=arm64-v8a,armeabi-v7a
Note -
- Possible values are:
armeabi-v7a
,x86
,x86_64
,arm64-v8a
- Make sure the patching resource(CLI) support this feature.
- Possible values are:
-
If you want to exclude any patch. Set comma separated patch in
.env
file or inENVS
inGitHub secrets
(Recommended) in the format<APP_NAME>_EXCLUDE_PATCH=<PATCH_TO_EXCLUDE-1,PATCH_TO_EXCLUDE-2>
Example:
YOUTUBE_EXCLUDE_PATCH=custom-branding,hide-get-premium YOUTUBE_MUSIC_EXCLUDE_PATCH=yt-music-is-shit
Note -
- All the patches for an app are included by default.
- Revanced patches are provided as space separated, make sure you type those - separated here. It means a patch named Hey There must be entered as hey-there in the above example.
- All the patches for an app are included by default.
-
If you want to include any universal patch. Set comma separated patch in
.env
file or inENVS
inGitHub secrets
(Recommended) in the format<APP_NAME>_INCLUDE_PATCH=<PATCH_TO_EXCLUDE-1,PATCH_TO_EXCLUDE-2>
Example:
YOUTUBE_INCLUDE_PATCH=remove-screenshot-restriction
Note -
- Revanced patches are provided as space separated, make sure you type those - separated here. It means a patch named Hey There must be entered as hey-there in the above example.
-
If you want to build a specific version or latest version. Add
version
in.env
file or inENVS
inGitHub secrets
(Recommended) in the format<APP_NAME>_VERSION=<VERSION>
Example:
YOUTUBE_VERSION=17.31.36 YOUTUBE_MUSIC_VERSION=X.X.X TWITTER_VERSION=latest
-
- Set up a telegram channel, send a message to it and forward the message to this telegram bot
- Copy
id
and save it toTELEGRAM_CHAT_ID
TELEGRAM_BOT_TOKEN
- Telegram provides BOT_TOKEN. It works as sender. Open bot and create one copy api key
TELEGRAM_API_ID
- Telegram API_ID is provided by telegram here
TELEGRAM_API_HASH
- Telegram API_HASH is provided by telegram here
- After Everything done successfully a part of the actions secrets of the repository may look like
-
Configuration defined in
ENVS
inGitHub secrets
will override the configuration in.env
file. You can use this fact to define your normal configurations in.env
file and sometimes if you want to build something different just once. Add it inGitHub secrets
. -
Make sure your Action has write access. If not click here. In the bottom give read and write access to Actions.