Platform compatibility
ACTk supports a wide range of Unity targets. Use this chapter to plan your deployment matrix and handle compliance requirements.
Feature availability
Note
This table lists features with platform-specific availability or requirements. Other ACTk features are generally available across all supported Unity targets unless a limitation is explicitly noted in their chapters.
| Feature | Supported targets |
|---|---|
| Injection Detector | Android Mono, Standalone Mono |
| CodeHashGenerator | Windows Standalone, Android |
| AppInstallationSourceValidator | Android |
| AndroidScreenRecordingBlocker | Android |
Tip
Prefer IL2CPP for platforms that support it. Even when a detector is limited to Mono, IL2CPP builds dramatically reduce the attack surface by removing the managed runtime.
Tested platforms
- Windows, macOS, Linux (Standalone builds)
- iOS
- Android
- UWP
- WebGL
- Consoles
Community reports also confirm compatibility with Windows Phone 8 and Apple TV.
Apple export compliance
ACTk uses "mass market" encryption (ObscuredFile, ObscuredFilePrefs, ObscuredLong/ULong/Double/Decimal) which is exempt from U.S. export licensing requirements under EAR 742.15.
Key Points:
- All ACTk features are compatible with Apple's export compliance and U.S. export regulations
- Does not require setting
ITSAppUsesNonExemptEncryptionplist.info key to YES - These ACTk features use exempt ("mass market") encryption by default: ObscuredFile, ObscuredFilePrefs, ObscuredLong, ObscuredULong, ObscuredDouble, ObscuredDecimal
- You still need to declare encryption usage in App Store Connect, but no additional licensing is required
Alternative for stricter export requirements:
Define ACTK_US_EXPORT_COMPATIBLE if you must avoid the declaration entirely. This downgrades cryptography and causes partial ObscuredLong, ObscuredULong, ObscuredDouble and ObscuredDecimal obscuration weakening, making them not fully encrypted in some rare cases. Only enable it after evaluating the risk increase for your game.
Apple privacy manifest
ACTk does not call any native Required Reason APIs and does not ship its own privacy manifest. No additional action is required when you add the package to your project.
Google Play Data Safety
Google Play requires developers to declare data collection practices in the Data Safety Declaration. This includes "Device or other IDs" when accessing identifiers like SystemInfo.deviceUniqueIdentifier.
Which ACTk features use device identifiers?
| Feature | Uses Device ID? | Condition |
|---|---|---|
| ObscuredTypes | ❌ No | In-memory obfuscation only |
| ObscuredPrefs | ⚠️ Conditional | Only when Device Lock is enabled |
| ObscuredFile | ⚠️ Conditional | Only when Device Lock is enabled |
| ObscuredFilePrefs | ⚠️ Conditional | Only when Device Lock is enabled |
| Injection Detector | ❌ No | No device identifiers used |
| Other Detectors | ❌ No | No device identifiers used |
| Code Integrity | ❌ No | No device identifiers used |
Device Lock is the only ACTk feature that accesses SystemInfo.deviceUniqueIdentifier. If you do not use Device Lock, ACTk does not collect any device identifiers.
Avoiding "Device or other IDs" declaration
If you do not use Device Lock features, define ACTK_PREVENT_READ_PHONE_STATE in your project to ensure ACTk never accesses SystemInfo.deviceUniqueIdentifier. This also removes the READ_PHONE_STATE Android permission.
Warning
If you define ACTK_PREVENT_READ_PHONE_STATE but still enable Device Lock, the feature will not work correctly and ACTk will log an error. Either disable Device Lock or provide a custom identifier via DeviceIdHolder.DeviceId.
Using Device Lock without platform identifiers
If you need Device Lock functionality but want to avoid device identifier declarations, set a custom identifier:
using CodeStage.AntiCheat.Storage;
// Use your own identifier (e.g., authenticated user ID)
DeviceIdHolder.DeviceId = "your-custom-identifier";
This approach binds data to your custom identifier rather than the platform device identifier (such as SystemInfo.deviceUniqueIdentifier).
Android build tools
- Generate
proguard-user.txtviaTools > Code Stage > Anti-Cheat Toolkit > Configure proguard-user.txtto preserve ACTk native classes when you enable minification. - When you use
AndroidScreenRecordingBlocker, verify the feature on real devices—some OEM builds ignore the prevention flag.