Skip to main content
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[2.2.3] - 2026-03-20

Added

  • Remote log collection via metrics pipeline with server-controlled filters and collection limits
  • Added Unity Ads adapter publishing to both GitHub Packages RC workflows and Maven Central release workflows

Changed

  • Renamed the Unity adapter artifact/module to adapter-unityads and aligned Unity Ads naming across the SDK, build setup, and documentation
  • Refactored CXLogger to a handler-based architecture and simplified scoped logging internals
  • Removed the demo app dependency on the SDK’s internal CXLogger

Fixed

  • Fixed Unity Ads network name casing to match the server bidder configuration

[2.2.2] - 2026-03-17

Added

  • Adapter metadata in config request
  • Metrics tracking for bid token collection
  • Session init event sent after SDK initialization

Fixed

  • InMobi bid token retrieval now runs on main thread

[2.2.1] - 2026-03-11

Changed

  • Hardened Mintegral adapter with defensive null checks and exception guards across all ad format factories and bumped Mintegral SDK from 17.0.61 to 17.0.91

Fixed

  • Fixed non-local return in BidRequestProvider.createBidRequest() that caused adapter extras to be silently skipped when an adapter threw an exception

[2.2.0] - 2026-03-10

Added

  • Ad click tracking — notifies server when a user taps an ad
  • Manual privacy APIsetHasUserConsent() and setDoNotSell() for apps that manage consent directly, with automatic forwarding to all ad network adapters
  • Kotlin coroutine support — suspend initialize() overload for cleaner Kotlin integration
  • Network SDK crash reporting — detects and reports crashes from ad network SDKs
  • Creative Type support in the CloudX renderer
  • Adapter error metrics tracked across all ad formats

Changed

  • CloudX renderer moved into the core SDK module
  • Removed appcompat and webkit transitive dependencies, reducing SDK footprint
  • Metrics are retained on transient failures (5xx, network, timeout) and retried automatically
  • Bumped Vungle SDK from 7.6.1 to 7.7.1
  • Bumped InMobi SDK from 11.1.0 to 11.1.1

Fixed

  • Fixed geo location data being read from processed headers instead of raw headers
  • Fixed INVALID_APP_KEY error incorrectly surfacing for non-config HTTP responses

[2.0.1] - 2026-03-04

This patch release adds compatibility with Unity Engine 2022.3.

Changed

  • Improved internal event persistence with a lighter file-based storage layer, resolving Unity Engine 2022.3 build compatibility
  • Downgraded Meta Audience Network SDK from 6.21.0 to 6.20.0 for Unity Engine 2022.3 compatibility

Fixed

  • Fixed a rare concurrent access issue in session metrics tracking
  • Fixed Meta rewarded ad Activity being destroyed prematurely in apps using singleTask launch mode

[2.0.0] - 2026-02-04

This release replaces placement names with Ad Unit IDs from the CloudX dashboard. Update your createBanner(), createMREC(), createInterstitial(), and createRewarded() calls to use the ad unit ID instead of a placement name.

Added

  • Rewarded ads with CloudX.createRewarded(), CloudXRewardedAd, CloudXRewardedListener, and CloudXReward
  • InMobi adapter (SDK 11.1.0) with support for banner, MREC, interstitial, and rewarded ads
  • Vungle rewarded ads (SDK 7.6.1) support added to existing Vungle adapter
  • CloudX.isInitialized() to check SDK initialization state
  • CloudX.getVersion() to get the SDK version string
  • setPlacement() and setCustomData() methods on CloudXAdView for tracking
  • show(activity, placement, customData) overloads on fullscreen ads for tracking
  • CloudXSdkConfiguration returned in onInitialized() callback
  • CloudXAd.networkPlacement property for network-specific placement ID
  • New error codes: NETWORK_NO_CONNECTION, AD_ALREADY_SHOWING, DONT_KEEP_ACTIVITIES_ENABLED, AD_NOT_READY, INVALID_APP_KEY

Breaking Changes

  • Bumped minSdk from 21 to 23 (Android 6.0 Marshmallow)
  • Replaced CloudXInitializationParams with CloudXInitializationConfiguration builder pattern
  • Renamed placementName parameter to adUnitId in createBanner(), createMREC(), createInterstitial(), createRewarded()
  • Renamed CloudXAd.placementId to adUnitId
  • Removed CloudXAd.placementName property
  • Renamed CloudXAd.bidderName to networkName
  • Renamed CloudXErrorCode.INVALID_PLACEMENT to INVALID_AD_UNIT
  • Changed onAdLoadFailed(placementName, cloudXError) to onAdLoadFailed(adUnitId, cloudXError)
  • Changed onAdDisplayFailed(cloudXError) to onAdDisplayFailed(cloudXAd, cloudXError) - now includes the ad object
  • Changed onInitialized() to onInitialized(configuration: CloudXSdkConfiguration)
  • Removed testMode parameter - test mode is now server-controlled
  • Changed show() to show(activity) for interstitial and rewarded ads - Activity parameter now required

Changed

  • Meta Audience Network SDK updated from 6.17.0 to 6.21.0

Fixed

  • Ad reload now works correctly in onAdHidden and onAdDisplayFailed callbacks
  • All load() and show() calls now guarantee callbacks on the UI thread

[0.12.1] - 2025-12-23

Fixed

  • Fixed ANR in Meta adapter caused by getBidderToken() blocking main thread

[0.12.0] - 2025-12-14

Breaking Changes

  • Removed CloudXError.effectiveMessage - use message directly instead
  • Removed setLoggingEnabled() - use setMinLogLevel(CloudXLogLevel.NONE) to disable logging
  • Removed CloudXPrivacy class - privacy is now handled automatically via GPP/TCF

Changed

  • Enhanced GDPR support with GPP Section 2 parsing and vendor consent checking
  • Simplified TCF purpose checks to only require purposes 1 and 2 (removed 3-4)
  • Added CCPA support via GPP with legacy USPrivacy fallback
  • Removed COPPA handling
  • Added CloudXLogLevel.NONE enum value for disabling logs

Fixed

  • Fixed geo API failure handling during initialization

[0.11.0] - 2025-12-09

Changed

  • Migrated HTTP client from Ktor 3.0.3 to OkHttp 4.12.0
  • Added isDestroyed guards to all ad formats

[0.10.0] - 2025-12-03

Added

  • Vungle adapter (SDK 7.6.1) with support for banner and interstitial ads

Changed

  • Simplified log tag to “CloudX” for easier logcat filtering
  • Added entry logging to public API functions for better debugging
  • SDK initialization now fails early with clear error when no adapters are found

Fixed

  • Fixed banner refresh stopping after load failure

[0.9.0] - 2025-11-26

Added

  • Ad revenue tracking via new CloudXAdRevenueListener interface with onAdRevenuePaid callback

Changed

  • Upgraded Ktor from 2.3.8 to 3.0.3 for improved compatibility with apps using Ktor 3.x

Fixed

  • Fixed memory leaks in ad lifecycle management
  • Various bug fixes and stability improvements

[0.8.0] - 2025-11-11

Internal

  • Test release to validate release automation workflow

[0.6.1] - 2025-11-03

Fixed

  • Fixed release script to update Chinese README (README.zh-CN.md) version numbers

[0.6.0] - 2025-11-03

Added

  • Test mode support: Add testMode parameter to CloudXInitializationParams to request test ads during development

[0.5.0] - 2025-10-27

Fixed

  • Fixed release promotion script to properly sync file deletions from release branch to main

[0.4.0] - 2025-10-27

Added

  • Initial alpha release of CloudX Android SDK
  • Support for Banner (320x50) and MREC (300x250) ad formats
  • Support for Interstitial fullscreen ads
  • Real-time bidding with intelligent ad mediation
  • CloudX and Meta Audience Network adapter support
  • Privacy compliance for GDPR, CCPA (via GPP), and COPPA
  • IAB TCF, USPrivacy, and GPP string support
  • Session depth tracking for bid optimization
  • Comprehensive ad lifecycle callbacks and error handling
  • Debug logging with configurable log levels