An external component manager for GameHub (Lite) and its variants — no root required.
-ONLY FOR VERSIONS WITH FILES ACCESS PATCHED INTO THEM!
BannersComponentInjector lets you browse, back up, replace, and restore the Windows-emulation components inside GameHub app variants (DXVK, VKD3D-Proton, Box64, FEXCore, Wine, GPU Drivers, and more) directly from your Android device. Components can be installed from local files or fetched and downloaded straight from online repositories — all without needing root access or a PC.
▶ Watch on YouTube: https://youtu.be/vVAkRjtW9Gk?si=KY-0ujAoaq2zhdvK
Core
<package>/data covers components, virtual containers, and shadercache simultaneously.Inject Components
Downloads/BannersComponentInjector/<componentName>/ (or a custom location)..wcp or .zip from your device and inject it into the component folder.Download Components
bci-repos.json in Downloads.bci-repos.json file with a preview dialog; choose Merge (add new repos, keep existing) or Replace (swap all custom repos).My Downloads
My Games Tab (opt-in)
virtual_containers/) and Steam games (shadercache/ dirs keyed by Steam App ID).<Game Name>.iso files to Downloads/front end/ for all Steam and imported games on demand. ISO export skips files that already exist, and game names are sanitized (colons and other illegal filename characters replaced) before file creation..iso to Downloads/front end/..iso stub to virtual_containers/ for GameHub launcher compatibility.General
BannersComponentInjector detects the following GameHub variants automatically:
| App | Package Name(s) |
|---|---|
| GameHub (Lite) | gamehub.lite, emuready.gamehub.lite |
| GameHub Lite — PuBG Edition | com.tencent.ig |
| GameHub Lite — AnTuTu Edition | com.antutu.ABenchMark, com.antutu.benchmark.full |
| GameHub Lite — Ludashi Edition | com.ludashi.aibench, com.ludashi.benchmark |
| GameHub Lite — Genshin Edition | com.mihoyo.genshinimpact |
| GameHub Lite — Original | com.xiaoji.egggame |
Detection for borrowed package names (shared with real apps like PUBG Mobile, Genshin Impact, and AnTuTu) is verified against the installed app's display label to avoid false positives.
If a variant is not listed, use Add Custom App (+ button in the Inject tab) to add it by package name.
APKs are signed with a stable certificate — they install as updates over each other without needing to uninstall first.
dataOne grant at
<package>/datacovers everything — components, virtual containers, and shadercache. You only need to grant access once per app variant. Access is remembered across restarts. To remove access, tap the 🔗 unlink icon next to the app card.
Upgrading from v1.9.0: Previous grants pointed to
components/and are no longer valid. Re-grant at<package>/datawhen prompted.
If your GameHub variant uses a package name not listed above:
This tab is the main workspace for managing components already installed inside a GameHub variant.
Downloads/BannersComponentInjector/<componentName>/ (or your custom Backups location).Always back up before replacing — if something goes wrong you can restore instantly.
.wcp or .zip file.Repo cards have a ⋮ menu: Open in Browser, Edit Repository, Move Up, Move Down, Remove Repository.
This tab lets you browse online repositories and save component files to your device for later use.
A dot badge on the tab label indicates one or more sources have items you haven't seen yet. Source/repo cards that have unseen items show a "NEW" chip. Both clear when you open the tab.
The search bar at the top of the tab searches all repositories at once as you type. Results show the file name, source, and component type. Tap a result to open its detail sheet.
Tap the ☑ checkbox icon in the top bar to enter multi-select mode. Tap files to select them (checkboxes appear). Tap Download X files to save all selected files in parallel. Already-downloaded files are automatically skipped.
Downloads/BannersComponentInjector/<Repo>/<Type>/<filename> (or your custom Downloads location).Each repository card has a ⋮ menu with options:
Tap ⟳ Refresh (top-right when no repo is selected) to pre-fetch all sources and cache the results in memory for instant browsing and search.
Tap ⋮ → Move Up or ⋮ → Move Down on any repo card to shift it up or down in the list. The order is saved automatically and persists across restarts.
Tap + in the header to open the Add Repository dialog.
https://github.com/{owner}/{repo} — the app reads the folder structure directly from the repo; each folder becomes a component category.https://github.com/{owner}/{repo}/releases — the app scans release assets for .wcp or .zip files..json (WCP JSON format).Tap ⋮ → Edit Repository on any card.
Tap the ↓ FileDownload icon in the source list header (between Refresh and Add) to export your entire repo configuration to a JSON file.
The export includes:
The file is saved as Downloads/BannersComponentInjector/bci-repos.json and overwrites any previous export. A spinner is shown while writing; a snackbar confirms the path on success.
Tap the ↑ FileUpload icon in the source list header to import a bci-repos.json file.
.json file.The hidden-defaults and source order from the file are always applied regardless of Merge/Replace mode.
Browse and manage all files previously downloaded via the Download Components tab.
Removing a record only removes the tracking entry — it does not delete the file from your device.
Enable this tab in Settings → Show My Games Tab.
Once enabled, BCI automatically selects the first GameHub variant that already has data/ access granted — the game list loads immediately. If no app is pre-selected, tap a variant to grant access. The tab auto-discovers two types of games:
virtual_containers/.shadercache/ (directory name = Steam App ID).Steam metadata (name, cover art, genres, description, release year, Metacritic score) is fetched from the Steam Store API and cached to disk — available offline after the first load.
Tap any game card to open the edit sheet:
Tap the Launch button on any game card to start the game directly via GameHub's game detail screen.
Tap the ↓ FileDownload button in the My Games top bar to write <Game Name>.iso files to Downloads/front end/ for all Steam and imported games on demand. Steam ISOs contain the Steam App ID (plain text); imported game ISOs contain the local ID. BCI skips any file that already exists in the destination and sanitizes game names (removing colons and other illegal filename characters) before writing. These ISO files are used by front-end launchers for compatibility.
Tap the + button in the My Games header to add a game that isn't auto-discovered:
<Display Name>.iso to Downloads/front end/.Manually added games appear in the Local Games section and support Edit, Remove from list, and Remove and delete folder.
Tap the Create ISO button on a game card to write a .iso stub to virtual_containers/ — required for GameHub launcher compatibility with certain game entries.
Local game cards have two removal options in the ⋮ menu (below a divider, separate from Edit/Reset):
Remove from list — hides the game from My Games without touching any files. The virtual_containers/<gameId> folder stays intact on disk. The hidden state is saved to SharedPrefs and persists across app restarts. Useful for dummy entries or old installs you don't want to see.
Remove and delete folder — shows a confirmation dialog, then permanently deletes the virtual_containers/<gameId>/ directory via SAF and removes the companion <gameId>.iso stub if present. Use this to properly clean up games that GameHub's dashboard uninstalled but left the virtual container folder behind.
These options appear only on local game cards. Steam game cards are not affected.
Access from:
Lists every saved backup across all components and apps. Tap the 🗑 icon next to any entry to remove it permanently.
Automatic check on launch:
Manual check:
A tar archive compressed with Zstandard (zstd) or XZ. Contains:
profile.json — metadata: type, version name, description, and file mappings.system32/ and syswow64/ subdirectories with DLL files.Extraction behaviour:
FEXCore type → files are extracted flat to the component root.system32/syswow64 directory structure is preserved.A plain ZIP archive with a meta.json file and flat .so library files. Detected by magic bytes. Always extracted flat to the component root.
When browsing a repository's individual release tags, all assets are shown regardless of file type — WCP, ZIP, APK, tar.gz, etc. Files are downloaded as-is.
| Repository | Component Types |
|---|---|
| StevenMXZ / Winlator-Contents + Adreno-Tools-Drivers | DXVK, VKD3D, Box64, FEXCore, Wine, Proton, GPU Drivers |
| Arihany / WinlatorWCPHub | DXVK, VKD3D, Box64, FEXCore, Wine, Proton, GPU Drivers |
| Xnick417x / Winlator-Bionic-Nightly-wcp | DXVK, VKD3D, Box64, FEXCore, Wine, Proton |
| K11MCH1 / AdrenoToolsDrivers | GPU Drivers |
| whitebelyash / freedreno_turnip-CI | GPU Drivers |
| maxjivi05 / Components (MTR) | Auto-detected from repo folders |
| T3st31 / HUB Emulators | DXVK, VKD3D, Box64, FEXCore, Wine, WowBox64, GPU Drivers |
| The412Banner / Nightlies | Box64, FEXCore, VKD3D, DXVK, WOWBox64 |
| GameNative | GPU Drivers, DXVK, Proton, FEXCore, WOWBox64 |
GPU Drivers consolidates Turnip, Adreno, Qualcomm, and Mesa driver files into a single unified category.
| Section | Setting | Description |
|---|---|---|
| General | Default Start Tab | Choose whether the app opens to Inject Components or Download Components. |
| Appearance | Dark Mode | Toggle between light and dark theme. |
| Appearance | AMOLED Black | Pure #000000 background; available when dark mode is on and Dynamic Color is off. |
| Appearance | Dynamic Color | Use Material You wallpaper-derived colors (Android 12+); overrides accent and disables AMOLED. |
| Appearance | Accent Color | 8 preset swatches or a fully custom colour via the HSV colour wheel + hex input. Hidden when Dynamic Color is on. |
| Prompts | Backup warning | Toggle the "No Backup Found" warning shown before replacing an unbacked component. |
| Storage | Downloads Location | Set a custom folder for downloaded component files. Defaults to Downloads/BannersComponentInjector/. |
| Storage | Backups Location | Set a custom folder for component backups. Defaults to Downloads/BannersComponentInjector/. |
| Updates | Check for updates on launch | When enabled, the app silently checks for a newer release on every startup and shows a dialog if one is found. |
| Updates | Include pre-releases | When enabled, the update checker also considers pre-release builds. |
| Updates | Check for Updates | Manually checks GitHub for a newer version and offers in-app download + install. |
| Utilities | Show My Games Tab | Shows or hides the My Games tab. Off by default. |
| Utilities | Backup Manager | Opens the centralised backup list. |
| Utilities | Open Downloads Folder | Opens the system Downloads folder. |
| Utilities | Report Issue / Feedback | Opens the GitHub Issues page in your browser. |
git clone https://github.com/The412Banner/BannersComponentInjector.git
cd BannersComponentInjector
./gradlew assembleDebug
The APK is output to app/build/outputs/apk/debug/.
Dependencies (all resolved via Gradle):
com.github.luben:zstd-jni — Zstandard decompressionorg.tukaani:xz — XZ decompressionBannersComponentInjector is an independent third-party tool and is not affiliated with, endorsed by, or connected to the GameHub or Winlator projects.
Join our Discord: https://discord.gg/n8S4G2WZQ4
256 commits
Kotlin
100.0%
An external component manager for GameHub (Lite) and its variants — no root required.
-ONLY FOR VERSIONS WITH FILES ACCESS PATCHED INTO THEM!
BannersComponentInjector lets you browse, back up, replace, and restore the Windows-emulation components inside GameHub app variants (DXVK, VKD3D-Proton, Box64, FEXCore, Wine, GPU Drivers, and more) directly from your Android device. Components can be installed from local files or fetched and downloaded straight from online repositories — all without needing root access or a PC.
▶ Watch on YouTube: https://youtu.be/vVAkRjtW9Gk?si=KY-0ujAoaq2zhdvK
Core
<package>/data covers components, virtual containers, and shadercache simultaneously.Inject Components
Downloads/BannersComponentInjector/<componentName>/ (or a custom location)..wcp or .zip from your device and inject it into the component folder.Download Components
bci-repos.json in Downloads.bci-repos.json file with a preview dialog; choose Merge (add new repos, keep existing) or Replace (swap all custom repos).My Downloads
My Games Tab (opt-in)
virtual_containers/) and Steam games (shadercache/ dirs keyed by Steam App ID).<Game Name>.iso files to Downloads/front end/ for all Steam and imported games on demand. ISO export skips files that already exist, and game names are sanitized (colons and other illegal filename characters replaced) before file creation..iso to Downloads/front end/..iso stub to virtual_containers/ for GameHub launcher compatibility.General
BannersComponentInjector detects the following GameHub variants automatically:
| App | Package Name(s) |
|---|---|
| GameHub (Lite) | gamehub.lite, emuready.gamehub.lite |
| GameHub Lite — PuBG Edition | com.tencent.ig |
| GameHub Lite — AnTuTu Edition | com.antutu.ABenchMark, com.antutu.benchmark.full |
| GameHub Lite — Ludashi Edition | com.ludashi.aibench, com.ludashi.benchmark |
| GameHub Lite — Genshin Edition | com.mihoyo.genshinimpact |
| GameHub Lite — Original | com.xiaoji.egggame |
Detection for borrowed package names (shared with real apps like PUBG Mobile, Genshin Impact, and AnTuTu) is verified against the installed app's display label to avoid false positives.
If a variant is not listed, use Add Custom App (+ button in the Inject tab) to add it by package name.
APKs are signed with a stable certificate — they install as updates over each other without needing to uninstall first.
dataOne grant at
<package>/datacovers everything — components, virtual containers, and shadercache. You only need to grant access once per app variant. Access is remembered across restarts. To remove access, tap the 🔗 unlink icon next to the app card.
Upgrading from v1.9.0: Previous grants pointed to
components/and are no longer valid. Re-grant at<package>/datawhen prompted.
If your GameHub variant uses a package name not listed above:
This tab is the main workspace for managing components already installed inside a GameHub variant.
Downloads/BannersComponentInjector/<componentName>/ (or your custom Backups location).Always back up before replacing — if something goes wrong you can restore instantly.
.wcp or .zip file.Repo cards have a ⋮ menu: Open in Browser, Edit Repository, Move Up, Move Down, Remove Repository.
This tab lets you browse online repositories and save component files to your device for later use.
A dot badge on the tab label indicates one or more sources have items you haven't seen yet. Source/repo cards that have unseen items show a "NEW" chip. Both clear when you open the tab.
The search bar at the top of the tab searches all repositories at once as you type. Results show the file name, source, and component type. Tap a result to open its detail sheet.
Tap the ☑ checkbox icon in the top bar to enter multi-select mode. Tap files to select them (checkboxes appear). Tap Download X files to save all selected files in parallel. Already-downloaded files are automatically skipped.
Downloads/BannersComponentInjector/<Repo>/<Type>/<filename> (or your custom Downloads location).Each repository card has a ⋮ menu with options:
Tap ⟳ Refresh (top-right when no repo is selected) to pre-fetch all sources and cache the results in memory for instant browsing and search.
Tap ⋮ → Move Up or ⋮ → Move Down on any repo card to shift it up or down in the list. The order is saved automatically and persists across restarts.
Tap + in the header to open the Add Repository dialog.
https://github.com/{owner}/{repo} — the app reads the folder structure directly from the repo; each folder becomes a component category.https://github.com/{owner}/{repo}/releases — the app scans release assets for .wcp or .zip files..json (WCP JSON format).Tap ⋮ → Edit Repository on any card.
Tap the ↓ FileDownload icon in the source list header (between Refresh and Add) to export your entire repo configuration to a JSON file.
The export includes:
The file is saved as Downloads/BannersComponentInjector/bci-repos.json and overwrites any previous export. A spinner is shown while writing; a snackbar confirms the path on success.
Tap the ↑ FileUpload icon in the source list header to import a bci-repos.json file.
.json file.The hidden-defaults and source order from the file are always applied regardless of Merge/Replace mode.
Browse and manage all files previously downloaded via the Download Components tab.
Removing a record only removes the tracking entry — it does not delete the file from your device.
Enable this tab in Settings → Show My Games Tab.
Once enabled, BCI automatically selects the first GameHub variant that already has data/ access granted — the game list loads immediately. If no app is pre-selected, tap a variant to grant access. The tab auto-discovers two types of games:
virtual_containers/.shadercache/ (directory name = Steam App ID).Steam metadata (name, cover art, genres, description, release year, Metacritic score) is fetched from the Steam Store API and cached to disk — available offline after the first load.
Tap any game card to open the edit sheet:
Tap the Launch button on any game card to start the game directly via GameHub's game detail screen.
Tap the ↓ FileDownload button in the My Games top bar to write <Game Name>.iso files to Downloads/front end/ for all Steam and imported games on demand. Steam ISOs contain the Steam App ID (plain text); imported game ISOs contain the local ID. BCI skips any file that already exists in the destination and sanitizes game names (removing colons and other illegal filename characters) before writing. These ISO files are used by front-end launchers for compatibility.
Tap the + button in the My Games header to add a game that isn't auto-discovered:
<Display Name>.iso to Downloads/front end/.Manually added games appear in the Local Games section and support Edit, Remove from list, and Remove and delete folder.
Tap the Create ISO button on a game card to write a .iso stub to virtual_containers/ — required for GameHub launcher compatibility with certain game entries.
Local game cards have two removal options in the ⋮ menu (below a divider, separate from Edit/Reset):
Remove from list — hides the game from My Games without touching any files. The virtual_containers/<gameId> folder stays intact on disk. The hidden state is saved to SharedPrefs and persists across app restarts. Useful for dummy entries or old installs you don't want to see.
Remove and delete folder — shows a confirmation dialog, then permanently deletes the virtual_containers/<gameId>/ directory via SAF and removes the companion <gameId>.iso stub if present. Use this to properly clean up games that GameHub's dashboard uninstalled but left the virtual container folder behind.
These options appear only on local game cards. Steam game cards are not affected.
Access from:
Lists every saved backup across all components and apps. Tap the 🗑 icon next to any entry to remove it permanently.
Automatic check on launch:
Manual check:
A tar archive compressed with Zstandard (zstd) or XZ. Contains:
profile.json — metadata: type, version name, description, and file mappings.system32/ and syswow64/ subdirectories with DLL files.Extraction behaviour:
FEXCore type → files are extracted flat to the component root.system32/syswow64 directory structure is preserved.A plain ZIP archive with a meta.json file and flat .so library files. Detected by magic bytes. Always extracted flat to the component root.
When browsing a repository's individual release tags, all assets are shown regardless of file type — WCP, ZIP, APK, tar.gz, etc. Files are downloaded as-is.
| Repository | Component Types |
|---|---|
| StevenMXZ / Winlator-Contents + Adreno-Tools-Drivers | DXVK, VKD3D, Box64, FEXCore, Wine, Proton, GPU Drivers |
| Arihany / WinlatorWCPHub | DXVK, VKD3D, Box64, FEXCore, Wine, Proton, GPU Drivers |
| Xnick417x / Winlator-Bionic-Nightly-wcp | DXVK, VKD3D, Box64, FEXCore, Wine, Proton |
| K11MCH1 / AdrenoToolsDrivers | GPU Drivers |
| whitebelyash / freedreno_turnip-CI | GPU Drivers |
| maxjivi05 / Components (MTR) | Auto-detected from repo folders |
| T3st31 / HUB Emulators | DXVK, VKD3D, Box64, FEXCore, Wine, WowBox64, GPU Drivers |
| The412Banner / Nightlies | Box64, FEXCore, VKD3D, DXVK, WOWBox64 |
| GameNative | GPU Drivers, DXVK, Proton, FEXCore, WOWBox64 |
GPU Drivers consolidates Turnip, Adreno, Qualcomm, and Mesa driver files into a single unified category.
| Section | Setting | Description |
|---|---|---|
| General | Default Start Tab | Choose whether the app opens to Inject Components or Download Components. |
| Appearance | Dark Mode | Toggle between light and dark theme. |
| Appearance | AMOLED Black | Pure #000000 background; available when dark mode is on and Dynamic Color is off. |
| Appearance | Dynamic Color | Use Material You wallpaper-derived colors (Android 12+); overrides accent and disables AMOLED. |
| Appearance | Accent Color | 8 preset swatches or a fully custom colour via the HSV colour wheel + hex input. Hidden when Dynamic Color is on. |
| Prompts | Backup warning | Toggle the "No Backup Found" warning shown before replacing an unbacked component. |
| Storage | Downloads Location | Set a custom folder for downloaded component files. Defaults to Downloads/BannersComponentInjector/. |
| Storage | Backups Location | Set a custom folder for component backups. Defaults to Downloads/BannersComponentInjector/. |
| Updates | Check for updates on launch | When enabled, the app silently checks for a newer release on every startup and shows a dialog if one is found. |
| Updates | Include pre-releases | When enabled, the update checker also considers pre-release builds. |
| Updates | Check for Updates | Manually checks GitHub for a newer version and offers in-app download + install. |
| Utilities | Show My Games Tab | Shows or hides the My Games tab. Off by default. |
| Utilities | Backup Manager | Opens the centralised backup list. |
| Utilities | Open Downloads Folder | Opens the system Downloads folder. |
| Utilities | Report Issue / Feedback | Opens the GitHub Issues page in your browser. |
git clone https://github.com/The412Banner/BannersComponentInjector.git
cd BannersComponentInjector
./gradlew assembleDebug
The APK is output to app/build/outputs/apk/debug/.
Dependencies (all resolved via Gradle):
com.github.luben:zstd-jni — Zstandard decompressionorg.tukaani:xz — XZ decompressionBannersComponentInjector is an independent third-party tool and is not affiliated with, endorsed by, or connected to the GameHub or Winlator projects.
Join our Discord: https://discord.gg/n8S4G2WZQ4
256 commits
Kotlin
100.0%