Infinix OTT — Mobile App Guide
Welcome to the official local environment installation and production EAS (Expo Application Services) build guide for the Infinix OTT Mobile App.
The Infinix Mobile App is built on **React Native** utilizing the **Expo SDK 54** platform. It provides customers with a highly immersive, dark-themed streaming layout supporting Movies, Multi-season TV Series, TikTok-style vertical Shorts, Live TV channels, and Razorpay subscription logic.
Cross-Platform Unified Core
Expo handles native bindings out-of-the-box. When you build local packages, Expo compiles your TypeScript components into pure native Java/Kotlin modules for Android, and Objective-C/Swift layouts for iOS, guaranteeing absolute platform speed and high frame rates.
Core Technologies
React Native & Expo
Cross-platform framework which targets native iOS and Android environments with single-core React JS files.
Redux Toolkit (RTK)
Manages app global state cache, RTK query connections, automated endpoints loading, and offline async persistence.
EAS (Expo Build)
Expo Application Services automate signing configurations and build native release packages on secondary cloud environments.
Prerequisites & Tools Required
Verify that your host operating system is equipped with the correct software pipelines to compile native code.
| Platform | Core Compilation Packages Required | Purpose |
|---|---|---|
| Universal | Node.js 18+ LTS, npm / yarn package managers | Runs packaging bundle servers and downloads client scripts |
| Universal | Java Development Kit (JDK 17) | Crucial for Gradle compilers during native Android prebuild checks |
| Android | Android Studio (Platform SDKs API 34+, Android SDK Command-line Tools, emulator) | Compiles native Kotlin/Java layers and runs local virtual devices |
| iOS (macOS only) | Xcode 15+ (Command Line Tools, Simulator device SDKs, CocoaPods package manager) | Compiles native Swift/Objective-C frameworks and manages Pod dependencies |
Step 1: Install Java JDK 17
Native Android compilation pipelines rely on **Gradle**, which requires the **Java Development Kit (JDK 17)**. Do not use JDK 21 or JDK 8 as they throw compile-time deprecation exceptions.
-
1Download and Install JDK 17
Ensure you install JDK 17 (specifically version 17.0.x) from a trusted distributor:
bash# On macOS (using Homebrew) brew install openjdk@17 # On Ubuntu / Debian Linux sudo apt update sudo apt install -y openjdk-17-jdk # On Windows # Download from Oracle JDK 17 or Eclipse Temurin (Adoptium) installer binaries
Step 2: Install Node & Expo CLI
Expo commands and compiler scripts are coordinated using the **Node.js** engine package manager.
-
2Install Global CLI Dependencies
Ensure Node.js 18+ is installed on your computer, then install Expo command daemons globally:
bash# Install modern expo-cli utilities globally npm install -g expo-cli # Check installation success npx expo --version
Step 3: Android Studio & SDKs Setup
To compile and run the Android app locally, you need **Android Studio** to manage SDK packages and configure virtual devices.
-
3Install Android Studio & Configure Platforms
Download Android Studio, run the standard setup wizard, and navigate to **SDK Manager**:
- Under the **SDK Platforms** tab, check the box to install **Android 14.0 (UpsideDownCake) — API Level 34** (matching Expo 54 targets).
- Under the **SDK Tools** tab, check to install:
- **Android SDK Build-Tools 34**
- **Android SDK Command-line Tools (latest)**
- **Android Emulator**
- **Intel x86 Emulator Accelerator (HAXM installer)** (if Intel hardware is active)
-
4Configure Android Emulator Virtual Device
Open **Device Manager** in Android Studio, click **Create Device**, select a modern hardware skin (e.g. Pixel 7), choose a system image (e.g. API 34 x86_64 image), and click finish. Keep the virtual emulator running in the background.
Step 4: Xcode Command Line Tools (iOS macOS)
If you are running **macOS**, you can build and run the iOS version of the app locally using Xcode.
-
5Install Xcode and Command Line Tools
Install Xcode from the Mac App Store. Open terminal and install command compilers and CocoaPods package libraries:
bash# Install Command Line tools xcode-select --install # Install CocoaPods (essential for native iOS pod files compilation) sudo gem install cocoapods # Pre-verify simulators list are functional xcrun simctl list devices
Step 5: Configure Environment Paths
The terminal shell must explicitly know where to find the Android SDK compiler tools and Java JDK installation home paths.
-
6Add Paths to Shell Configurations
Open your user terminal profile config file (e.g.
~/.zshrc,~/.bash_profile, or~/.bashrc) and append the following path bindings:~/.zshrc# Java Home JDK 17 mapping export JAVA_HOME=$(/usr/libexec/java_home -v 17) # Android SDK Path configurations export ANDROID_HOME=$HOME/Library/Android/sdk export PATH=$PATH:$ANDROID_HOME/emulator export PATH=$PATH:$ANDROID_HOME/platform-tools export PATH=$PATH:$ANDROID_HOME/tools export PATH=$PATH:$ANDROID_HOME/tools/binNote for Windows developers: Add
JAVA_HOME(pointing toC:\Program Files\Java\jdk-17) andANDROID_HOME(pointing toC:\Users\YOUR_USER\AppData\Local\Android\Sdk) directly into system environment variables panels, and add the corresponding platform-tools sub-directories to the system PATH. -
7Load Configs & Verify Configurations
Refresh your active terminal screen and test that path configurations verify correctly:
bash# Reload terminal configurations source ~/.zshrc # Check Java is running version 17 java -version # Check adb terminal link functions adb --version
App Setup Step 1: Install Dependencies
Initialize client mobile source libraries and download necessary Expo modules.
-
1Fetch Native Node Modules
Navigate to the
mobilecodebase folder inside the project and execute dependency installs:bashcd mobile npm install
App Setup Step 2: Configure Environment Variables
Establish local configuration files directing the mobile client toward your live backend domains or local server hosts.
Expo environment variable prefixes
Expo environment configs loaded in the application layer must explicitly start with the prefix EXPO_PUBLIC_ so they can be bundled into static scripts during precompilation. Regular env prefixes will be ignored.
-
2Write Mobile Environment Variables
Create a
.envfile in themobileroot directory. Note that the custom fields dynamically match your Quick Customizer sidebar inputs:mobile/.env# Point to the production domain HTTPS API configured in the sidebar EXPO_PUBLIC_API_URL=https://api.infinixdigitalott.com/api # Google OAuth Identifiers for Android, iOS and Web EXPO_PUBLIC_GOOGLE_ANDROID_CLIENT_ID=286769456505-socmcit9ip26da1dh0md22f5apt2gq7a.apps.googleusercontent.com EXPO_PUBLIC_GOOGLE_IOS_CLIENT_ID=286769456505-socmcit9ip26da1dh0md22f5apt2gq7a.apps.googleusercontent.com EXPO_PUBLIC_GOOGLE_WEB_CLIENT_ID=286769456505-socmcit9ip26da1dh0md22f5apt2gq7a.apps.googleusercontent.comDevelopment Tip: If you are testing the app on a physical device using Expo Go, you cannot use
http://localhost:5007as the API URL, because your mobile phone cannot access your computer's localhost. Instead, use your computer's local IP address (e.g.http://192.168.1.50:5007) and ensure both devices are connected to the same Wi-Fi network.
Run Locally Step 1: Launch Expo Development Server
Launch the Metro bundle compiler locally. Metro compiles your components on-the-fly as you navigate screens.
-
1Start the Metro Bundle Serverbash
# Start clean Expo server npx expo start --clearThe Metro Bundler terminal console will start and output a large, glowing scan QR code on the screen representing your local workspace connection credentials.
Run Locally Step 2: Simulators & Devices
Test and run the live hot-reloading app in simulator environments or directly on physical devices.
-
2Run App on Target Terminals
Choose your preferred local emulation pipeline:
Target Pipeline Terminal Key / App Step Method Description Android Emulator Press ainside active Metro terminalLaunches the Android emulator, installs the client build, and streams compilation. iOS Simulator Press iinside active Metro terminalLaunches the macOS simulator, loads the iOS bundle, and connects dependencies. Physical Device (Expo Go) Scan the terminal QR code using phone camera Install **Expo Go** from Play Store / App Store, scan terminal QR code, and run on device.
Production EAS Build Step 1: EAS CLI Setup
To compile release packages (.apk, .aab, .ipa) without setting up native configurations, use **EAS (Expo Application Services)** to compile code in secure secondary cloud virtual machines.
-
1Install EAS CLI Globallybash
npm install -g eas-cli -
2Log in to Expo Developer Accountbash
eas login -
3Link EAS Build Workspace Project
Bind the local codebase to your EAS workspace project:
basheas project:init -
4Verify EAS Profile Configurations
Check the
eas.jsonconfiguration file in the project root to ensure it contains modern SDK 54 profiles:eas.json{ "cli": { "version": ">= 10.0.0" }, "build": { "development": { "developmentClient": true, "distribution": "internal" }, "preview": { "distribution": "internal", "android": { "buildType": "apk" } }, "production": {} }, "submit": { "production": {} } }
Production EAS Build Step 2: Keystore Signing Setup
To distribute your app on the Google Play Store or install APKs on devices, the compiled bundle must be signed with a secure cryptographic key (Keystore).
Existing Keystore Location
The secure cryptographic signing key infinix.jks is pre-built and located directly in the mobile codebase directory. Keystore details and aliases are in the local file mobile/infinix_keystore_info.txt.
-
1Verify Local Keystore Credentials File
Ensure the following files are present inside the
mobilefolder directory before triggering a production build:infinix.jks(The Java Keystore cryptographic archive)infinix_keystore_info.txt(Text parameters mapping keystore alias, passwords, and entry identifiers)
-
2Configure Credentials for Google Sign-In and Android Builds
To enable Google Sign-In on Android, the keystore's SHA-1 fingerprint must be registered in the **Google Cloud Console** under your client ID:
- Keystore Alias:
infinix_key - Keystore Password:
Infinix@2026 - Key Password:
Infinix@2026
To retrieve the SHA-1 fingerprint from the keystore, run this command:
bashkeytool -list -v -keystore infinix.jks -alias infinix_key -storepass Infinix@2026Ensure the resulting SHA-1/SHA-256 values are added to your **Firebase Console** and **Google Services JSON** configurations to prevent authentication login errors during testing.
- Keystore Alias:
Production EAS Build Step 3: Compile Target Packages
Trigger native builds using the EAS CLI tools. The command terminal maps parameters automatically to build native targets.
-
1Compile Android Debug / Preview APK
Build an APK package that can be shared and installed directly on devices for manual QA testing:
bash# Builds and outputs a direct link to download the APK file eas build --platform android --profile preview -
2Compile Android Release AAB for Google Play Store
Compile an Android App Bundle (AAB) signed for deployment on Google Play Store:
bash# Triggers release AAB build on EAS Cloud using credentials eas build --platform android --profile production
Build an iOS simulator app bundle to test on mock simulator frameworks:
# Pre-compiles for simulator deployment testing
eas build --platform ios --profile preview
Compile native iOS distribution targets signed using Apple Developer credentials:
# Triggers release iOS IPA build on EAS Cloud using certificates
eas build --platform ios --profile production
Interactive Progress Tracker
Track your installation checkpoints below. Checkboxes save automatically to your browser storage, and complete step cards will display line strikethrough markers in the step navigation panels above.
Mobile Build Progress Checklist
Local Environment Setup
EAS Production Native Build
Troubleshooting & FAQ
Encountering compilation issues? Check these common errors, verified configuration parameters, and production solutions.
This occurs if your active JAVA_HOME paths point to a JDK version other than 17 (e.g. JDK 21 or JDK 8). Open your terminal profile, confirm Java version output is 17.0.x, and ensure paths are loaded:
export JAVA_HOME=$(/usr/libexec/java_home -v 17)
For Windows developers, ensure the environment system variable JAVA_HOME is set exactly to the JDK 17 installation directory.
Verify that your Android SDK platform-tools path is successfully loaded in your terminal:
adb devices
If the list is empty, restart your virtual device from the Android Studio Device Manager, or execute:
adb kill-server && adb start-server
This is often caused by package mismatches between your local package-lock.json and the cloud VM node environments. To fix this, delete your local node_modules folder and package-lock.json file, and run npm install again to refresh locks:
rm -rf node_modules package-lock.json && npm install
Commit the updated package-lock.json to your git branch before triggering EAS builds again.
Confirm that the infinix.jks file is present in the `mobile` root directory and verify the alias and password parameters in infinix_keystore_info.txt match exactly:
keytool -list -v -keystore infinix.jks -alias infinix_key -storepass Infinix@2026
If EAS credentials caching throws conflicts, clear the remote keystore credentials from the Expo dashboard using:
eas credentials
These integrations are cryptographically bound to your app's SHA-1/SHA-256 signatures. Ensure you register the SHA-1 fingerprints of your local keystore (or EAS cloud-generated credentials) in the **Google Cloud Console** under Android credentials, and link them to your **Razorpay Settings Dashboard** webhook settings.