Table of Contents

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 ITSAppUsesNonExemptEncryption plist.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.txt via Tools > Code Stage > Anti-Cheat Toolkit > Configure proguard-user.txt to 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.

Third-party licenses

  • xxHashSharp – BSD 2-Clause License (GitHub)
  • SharpZipLib – MIT License (GitHub)