OTA Pulse is an Android app for discovering, downloading, and inspecting OTA packages for supported OnePlus, Realme, and OPPO devices. This repository also now includes a static landing page at index.html.
Request and download OTA packages from BBK server(s).
- Browse supported devices from built-in catalog
- Mark favorite devices for quick access
- Fetch and view OTA update metadata
- Download OTA packages with progress notifications
- Inspect OTA links using built-in browser
- Advanced tools:
- Manual Query
- Partition Extraction
- Link Resolver
- Import / export custom device definitions
- Check for OTA Pulse app updates
- Kotlin (Android)
- minSdk 29 • targetSdk 35 • compileSdk 36
- ViewBinding UI
- Hilt (Dependency Injection)
- WorkManager (with Hilt integration)
- Fetch (Download Manager)
- OkHttp (Networking)
- Glide, Markwon, Gson, Flexbox
- Protobuf Lite
- XZ / Apache Commons Compress
Otaupdater/
├─ app/
│ ├─ build.gradle.kts
│ └─ src/main/
│ ├─ java/com/abhinav/otapulse/
│ │ ├─ app/
│ │ ├─ arb/
│ │ ├─ catalog/
│ │ ├─ core/
│ │ ├─ di/
│ │ ├─ feature/
│ │ └─ ota/
│ └─ res/
├─ OTAPulse/
│ ├─ logo/
│ └─ Screenshot/
├─ architecture.md
├─ index.html
└─ settings.gradle.kts
See architecture.md for the deeper package map and ownership rules.
feature/devices: home device flow, browsing, variants, OTA detailsfeature/downloads: download queue and file lifecyclefeature/otatools: Manual Query, Partition Extraction, Link Resolverfeature/browser: in-app WebView browserfeature/settings: theme, browser preferences, etc.feature/about: project information
- Open the project in Android Studio.
- Create
keystore.propertiesin the project root if you want signed release builds. - Add:
STORE_PASSWORD=your_store_password
KEY_PASSWORD=your_key_password- Sync Gradle.
- Run the
appconfiguration on an Android 10+ device or emulator.
- keep device definitions and provider mappings in
catalog - keep user-facing flows in
feature - keep OTA parsing / extraction logic in
otaandarb - move code into
coreonly when it is genuinely shared - treat the root landing page as a separate web asset, not part of the Android runtime
If you find this project useful, consider giving it a star ⭐ on GitHub — it helps improve visibility and SEO!