How endcord/endcord-mobile works
Endcord Mobile combines an Android installer/loader with a shared runtime bundle used on Android and iOS. The principal Android workflow takes an installed or downloaded Discord app, rebuilds it with Endcord, and installs the result; inside Discord, the loader starts the bundle, which initializes themes, settings, compatibility APIs, and plugins. The README documents major capabilities and platform roles; source excerpts show selected startup, network, and update-worker relationships. Unverified links are omitted or dashed.
Main entry points: index.ts Bundle startup · InstallerScreen.kt Installer screens · UpdateWorker.kt Discord update checks · InstallManager.kt Install management
Components 23
Android Installer
- Installer screens
android/installer/app/src/main/java/app/revenge/manager/ui/screen/installer/InstallerScreen.kt - APK downloads
android/installer/app/src/main/java/app/revenge/manager/domain/manager/DownloadManager.kt - Patch workflow
android/installer/app/src/main/java/app/revenge/manager/installer/step - Install management
android/installer/app/src/main/java/app/revenge/manager/domain/manager/InstallManager.kt - Install callbacks
android/installer/app/src/main/java/app/revenge/manager/installer/session/SessionInstallerService.kt - Installer preferences
android/installer/app/src/main/java/app/revenge/manager/domain/manager/PreferenceManager.kt - Discord update checks
android/installer/app/src/main/java/app/revenge/manager/updatechecker/worker/UpdateWorker.kt - REST repository
android/installer/app/src/main/java/app/revenge/manager/domain/repository/RestRepository.kt - REST endpoints
android/installer/app/src/main/java/app/revenge/manager/network/service/RestService.kt - HTTP client
android/installer/app/src/main/java/app/revenge/manager/network/service/HttpService.kt
Android Loader
- Xposed entry
android/loader/app/src/main/kotlin/io/github/revenge/xposed/Main.kt - Plugin installation
android/loader/app/src/main/kotlin/io/github/revenge/xposed/tweaks/plugins/PluginInstallMethods.kt - Plugin repositories
android/loader/app/src/main/kotlin/io/github/revenge/xposed/tweaks/plugins/repos/RepoStore.kt - Plugin sources
android/loader/app/src/main/kotlin/io/github/revenge/xposed/tweaks/plugins/repos/SourcesStore.kt - iOS integration
ios
Shared Runtime
- Bundle startup
bundle/src/index.ts - Settings and UI
bundle/src/core/ui/settings/index.ts
Add-ons and APIs
- Themes and fonts
bundle/src/lib/addons/themes/index.ts - Plugin runtime
bundle/src/lib/addons/plugins/index.ts - Vendetta compatibility
bundle/src/core/vendetta/plugins.ts - Built-in plugins
bundle/src/plugins/manifest.ts
Other components
- Android user
- Discord app
Connections 22
- Android user → Installer screens: starts install
README.md - Installer screens → Discord app: uses installed app
- Installer screens → APK downloads: requests download
- APK downloads → Patch workflow: supplies APK
- Patch workflow → Install management: installs rebuilt app
- Install management → Install callbacks: receives result
- Installer screens → Installer preferences: configures
- Discord update checks → Install management: refreshes installed app
android/installer/app/src/main/java/app/revenge/manager/updatechecker/worker/UpdateWorker.kt - Discord update checks → Installer preferences: reads settings
android/installer/app/src/main/java/app/revenge/manager/updatechecker/worker/UpdateWorker.kt - Discord update checks → REST repository: requests versions
android/installer/app/src/main/java/app/revenge/manager/updatechecker/worker/UpdateWorker.kt - REST repository → REST endpoints: delegates requests
- REST endpoints → HTTP client: sends requests
android/installer/app/src/main/java/app/revenge/manager/network/service/RestService.kt - Xposed entry → Discord app: hooks package
android/loader/app/src/main/kotlin/io/github/revenge/xposed/Main.kt - Xposed entry → Bundle startup: loads runtime
- Plugin installation → Plugin repositories: reads indexes
android/loader/app/src/main/kotlin/io/github/revenge/xposed/tweaks/plugins/PluginInstallMethods.kt - Plugin installation → Plugin sources: records sources
android/loader/app/src/main/kotlin/io/github/revenge/xposed/tweaks/plugins/PluginInstallMethods.kt - Bundle startup → Themes and fonts: initializes themes
bundle/src/index.ts - Bundle startup → Plugin runtime: updates plugins
bundle/src/index.ts - Bundle startup → Vendetta compatibility: initializes compatibility
bundle/src/index.ts - Bundle startup → Settings and UI: initializes settings
bundle/src/index.ts - Built-in plugins → Plugin runtime: loaded by runtime
- iOS integration → Bundle startup: runs shared bundle
README.md