Include x86 Architectures
| Plan | Platforms | MASVS |
|---|---|---|
| Enterprise | Android | Not mapped |
Overview
IncludeX86Architectures is a build-time control that determines whether x86 and x86_64 native libraries are included in the final Android application package (APK/AAB). When enabled, the MobileDefender security module and all obfuscation runtime components are compiled and packaged for x86-based Android devices in addition to the default ARM architectures.
How It Works
By default, Android builds include native libraries (.so files) only for ARM-based architectures (armeabi-v7a and arm64-v8a), which represent the vast majority of consumer mobile devices. When IncludeX86Architectures is enabled:
- Native Library Compilation: The MobileDefender security module (
libmobiledefender.so) is built for x86 and x86_64 ABIs in addition to ARM variants - CodeGuard Runtime Inclusion: If EncryptAllCode is enabled, the CodeGuard decryption runtime (
libcodeguard.so) is compiled for x86/x86_64 architectures - ABI Directory Retention: During APK assembly, the build pipeline preserves
lib/x86/andlib/x86_64/directories instead of stripping them - Universal Compatibility: The resulting application can run natively on x86-based Android devices without falling back to ARM translation layers
When disabled (default), all x86/x86_64 ABI directories are removed from the final package to minimize APK size, since these architectures are rarely needed for consumer mobile devices.
When To Enable
Enable IncludeX86Architectures for applications that need to run on x86-based Android platforms:
Chromebook Support
- Primary Use Case: Many Chromebooks use Intel processors and run Android apps via the x86 ABI
- Market Segment: Enterprise productivity apps, educational software, and business tools targeting Chrome OS
- Impact: Without x86 support, these devices must use ARM translation (libhoudini), which degrades performance and may cause compatibility issues with security controls
Android Emulator Testing
- Developer Testing: x86/x86_64 emulators are significantly faster than ARM emulators for development and QA workflows
- CI/CD Integration: Automated testing pipelines typically use x86 emulators for speed
- Security Testing: Validates that all MobileDefender controls function correctly on x86 architecture before customer release
x86 Enterprise Devices
- Industrial Hardware: Some enterprise Android devices (point-of-sale terminals, kiosks, digital signage) use x86 processors for compatibility with legacy infrastructure
- Custom Android Builds: x86-based Android-x86 distributions and specialized enterprise builds
- Server-Grade Hardware: High-performance Android servers or workstations using Intel/AMD processors
When To Leave Disabled (Default)
Keep IncludeX86Architectures disabled for applications that:
- Target Consumer Mobile Devices Only: Smartphones and tablets almost exclusively use ARM processors
- Prioritize Minimum APK Size: Including x86/x86_64 libraries roughly doubles native library payload (adds ~2-4 MB for standard security controls, up to ~8-12 MB with EncryptAllCode)
- Do Not Target Chromebooks: If Chrome OS is not a supported platform
- Accept ARM Translation: Some x86 devices can run ARM binaries via translation layers like libhoudini, though with reduced performance
Tradeoffs
| Aspect | Enabled | Disabled (Default) |
|---|---|---|
| APK Size | +2-12 MB (native libs for 2 additional ABIs) | Smaller package, faster downloads |
| Device Compatibility | Native support for x86 Chromebooks, emulators, enterprise devices | ARM-only; x86 devices use translation or fail |
| Build Time | +30-60 seconds (NDK compilation for x86/x86_64) | Faster builds |
| Play Store Delivery | Play Store's APK splits minimize per-device impact | Already optimized for ARM-only |
| Performance on x86 | Native execution, full security control support | Translation layer overhead (if supported) |
How to Enable the Control
Navigate to Settings from the AppTego portal, and open the Build Settings panel. Under this panel you will find the Include x86 Architectures setting. Click Enable to apply it to the next protected build.
API Configuration Example
{
"IncludeX86Architectures": {
"protection": true
}
}
| Field | Purpose |
|---|---|
protection | Enables include x86 architectures for protected builds. |
Configuration & Defaults
This control is configured at build submission time as part of the tenant build request payload:
{
"include_x86": "true"
}
| Setting | Default | Description |
|---|---|---|
include_x86 | "false" | When "true", includes x86/x86_64 ABIs in the build; when "false", strips them |
Recommended Configuration:
- Enable: Apps targeting enterprises, Chromebooks, or requiring emulator compatibility
- Disable: Consumer mobile apps where APK size is a priority and Chromebook support is unnecessary
Caveats & Limitations
Android Only
- iOS Not Applicable: iOS devices use ARM exclusively; this control has no effect on iOS builds
- Plan Requirement: ENTERPRISE plan required; FREE and TEAM plans always build ARM-only
Google Play Store Optimization
- APK Splits: Google Play automatically delivers only the required ABI to each device, so end users don't download unnecessary libraries
- AAB Format: Android App Bundles handle ABI splits automatically; this control still determines which ABIs are included in the bundle
Emulator Considerations
- Development vs. Production: Enabling x86 for emulator testing does not require enabling it in production builds
- Test Builds: Consider maintaining separate build configurations for QA (x86 enabled) and production (x86 disabled)
Build Time Impact
- NDK Compilation: Each additional ABI requires a full native build pass through the NDK toolchain
- CI/CD Pipelines: Factor in extra build time when x86 support is enabled
Platform Support
| Platform | Supported Versions | Notes |
|---|---|---|
| Android | All (API 26+) | Controlled at build time; affects APK/AAB structure |
| iOS | Not Applicable | iOS devices are ARM-only; this control is ignored |
Related Controls
- EncryptAllCode: When enabled alongside IncludeX86Architectures, the CodeGuard runtime decryption component is built for x86/x86_64
- DebuggablePrevention, RootDetectionResponse: All MobileDefender security controls function identically on x86 as on ARM
Technical Details
Supported ABIs
Default (IncludeX86Architectures disabled):
armeabi-v7a(32-bit ARM)arm64-v8a(64-bit ARM)
With IncludeX86Architectures enabled:
armeabi-v7aarm64-v8ax86(32-bit Intel/AMD)x86_64(64-bit Intel/AMD)
Build Pipeline Behavior
- Module Compilation: The MobileDefender module is always built with all ABIs (build.gradle.kts specifies
ndk.abiFiltersfor all four) - Selective Copying: During APK assembly, the build pipeline copies native libraries based on the
include_x86flag - Directory Stripping: If
include_x86 == false, any existinglib/x86/andlib/x86_64/directories in the customer APK are deleted to prevent ABI mismatches (which would causeUnsatisfiedLinkErrorat runtime)
Last Updated: 2026-04-22 Version: 1.0