- Key Java files showing custom server implementation - Original AndroidManifest.xml for reference - SynergyEnvironmentImpl.java - Custom server configuration - HttpRequest.java - HTTP implementation details - Documentation explaining each file's purpose Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Decompiled Reference Files
This directory contains reference files decompiled from Real Racing 3 APK using JADX. These files are included for:
- 📚 Educational purposes - Understanding how the game communicates with servers
- 🔍 Reference documentation - See how custom server support is implemented
- 🛠️ Modification guidance - Know exactly what files to modify
⚠️ Important Legal Notice
These files are decompiled from the original Real Racing 3 APK and are:
- © Electronic Arts Inc. - All rights reserved
- Included for educational and preservation purposes only
- NOT to be used for commercial purposes
- NOT to be redistributed outside this private repository
📁 Directory Structure
decompiled-reference/
├── com/
│ ├── ea/
│ │ └── nimble/
│ │ ├── SynergyEnvironmentImpl.java - Custom server configuration
│ │ └── SynergyRequest.java - HTTP request handling
│ └── firemonkeys/
│ └── cloudcellapi/
│ └── HttpRequest.java - Low-level HTTP implementation
└── resources/
└── AndroidManifest.xml - App manifest (original)
🔑 Key Files Explained
SynergyEnvironmentImpl.java
Location: Lines 166-183 contain the custom server implementation
This file contains the NimbleConfiguration enum and shows how RR3 reads the custom server URL:
public String getSynergyDirectorServerUrl() {
switch (this.m_configuration) {
case CUSTOMIZED:
// 🎯 This is what we're using!
return ComponentManager.getComponent(ApplicationEnvironment.class)
.getApplicationInfo()
.metaData
.getString("NimbleCustomizedSynergyServerEndpointUrl");
case LIVE:
return "https://api.firemonkeys.ea.com/";
// ... other cases
}
}
HttpRequest.java
Shows how the game makes HTTP requests, including:
- JNI callbacks for response streaming
- Custom SSL certificate validation
- Header management (EAM-SESSION, EAM-USER-ID, etc.)
AndroidManifest.xml
Original manifest showing:
- Current configuration:
com.ea.nimble.configuration = "live" - Package name:
com.ea.game.realracing3_row - Permissions and activities
- This is the file we modify to point to community servers
🎓 How to Use These Files
For Understanding
Read these files to understand:
- How RR3 determines which server to connect to
- What headers are required for API calls
- How authentication and sessions work
- SSL/certificate validation implementation
For Modification Reference
When modifying APKs:
- Check
SynergyEnvironmentImpl.javato see expected metadata keys - Review
AndroidManifest.xmlto see original configuration - Reference
HttpRequest.javato understand HTTP implementation
For Server Development
Use these files to:
- Understand expected API behavior
- See what headers the client sends
- Know how SSL is validated
- Implement compatible server responses
🔍 Decompilation Details
Tool Used: JADX (Java Decompiler)
- Version: JADX 1.4.7+
- Command:
jadx realracing3.apk -d decompiled/ - Source: Real Racing 3 v14.0.1
Quality: These files are decompiled from Dalvik bytecode:
- ✅ Structure is accurate
- ✅ Logic flow is correct
- ⚠️ Variable names may be obfuscated
- ⚠️ Some comments are from decompiler
📖 Related Documentation
For complete analysis of the protocol, see:
For modification instructions, see:
🚫 What's NOT Included
We do NOT include:
- ❌ Full game source code (too large, unnecessary)
- ❌ Game assets (textures, models, sounds)
- ❌ Native libraries (.so files)
- ❌ Compiled APK files
- ❌ Obfuscated/minified classes
Only the essential files needed to understand custom server support are included.
📝 Attribution
Original Software: Real Racing 3 Developer: Firemonkeys Studios / Electronic Arts Decompilation: For educational research and game preservation
These files are provided for educational purposes under fair use for interoperability and preservation research.