Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.cloudx.io/llms.txt

Use this file to discover all available pages before exploring further.

[3.2.0] - 2026-04-24

Added

  • Magnite Adapter — Added adapter-magnite with banner, interstitial, and rewarded support, plus privacy forwarding, bid extras, and metadata integration for Magnite demand
  • Per-Request Bid Floor Overrides — Added an Android API for per-request bid floor overrides and expanded bid request extras handling so publishers can send request-scoped floor controls through the SDK bid pipeline

Changed

  • Adapter Integration Surface — Replaced adapter listener extraInfo maps with Bundle, renamed extras types to clearer Pub / Adapter prefixes, and now source SDK version reporting from adapter params instead of BuildConfig so adapters receive the version actually used by the request
  • Banner Lifecycle Ownership — Moved banner view attach and detach handling out of individual adapters and into the SDK delegate so banner integrations behave more consistently across networks
  • Telemetry Payload Alignment — Aligned Android telemetry with the iOS and backend wire contract, added app version and build number to TelemetrySdkContext, restored gzip compression on telemetry endpoints, and now forwards raw ILRD ad format values to the backend

Fixed

  • Adapter Discovery Hardening — Centralized reflective adapter loading and now tracks discovery failures explicitly, improving resilience when network SDK classes or adapter objects are missing at runtime
  • Vungle Banner Load Errors — Banner load callbacks now surface INVALID_LOAD_STATE when Vungle reports onAdLoaded() without a banner view instance, instead of leaving that path ambiguous

[3.1.0] - 2026-04-17

Added

  • Native Ads — Added native ad support with CloudX.createNativeAdLoader(), CloudXNativeAdLoader, CloudXNativeAd, CloudXNativeAdListener, and CloudXNativeLoaderConfiguration, backed by the Meta adapter and NATIVE_REEL ad unit parsing support
  • Trusted Event Timestamps — Added clientTrustedTimestamp to telemetry event headers so backend processing can distinguish SDK-side event creation time from delivery time

Changed

  • Adapter Communication Improvements — Reworked adapter initialization, bid extras, privacy forwarding, and load/show communication around explicit params objects and callback-based async flows
  • Startup And Threading Safety — Moved user-agent resolution off singleton startup, allowed adapter initialization to run in parallel with timeout handling, and reduced cumulative main-thread work during initialization to lower ANR and deadlock risk
  • Telemetry Payload Improvements — Restructured telemetry payloads, expanded config, latency, identity, and storage-guard handling, and disabled gzip on telemetry request bodies
  • Runtime Hardening — Improved resilience for missing network SDK dependencies during adapter class loading, Unity Ads initialization, banner threading, bid token formatting, banner/native load exception handling, and ad preview bid asset fallback
  • Unity 2022 Meta Compatibilityadapter-meta now brings in Meta Audience Network 6.20.0 transitively by default for Unity 2022 compatibility. If your integration uses native ads, explicitly add Meta Audience Network 6.21.0 or newer in your app

[3.0.0] - 2026-04-06

Breaking Changes

  • Explicit Android Context On Public SDK APIsCloudX.initialize() now requires an Android Context, and the public creation APIs now require Context as well: createBanner(), createMREC(), createInterstitial(), and createRewarded()
  • Adapter Factory Interfaces Now Take Raw Context — Adapter factory interfaces now take context: Context directly instead of CloudXContextProvider; external adapters must update their factory create() signatures and replace contextProvider.getContext() with the passed context

Changed

  • Explicit Context Flow Across The SDK — The SDK no longer relies on process-startup context bootstrapping. Context now flows explicitly through initialization, ad creation, privacy handling, HTTP client setup, and internal singleton access
  • Lower Startup Overhead And ANR Risk — The SDK startup initializer was removed from the manifest, reducing main-thread work during app launch and lowering ANR risk
  • Correct Privacy Initialization Order — Privacy forwarding now resolves consent in the correct initialization order and reacts to post-init manual privacy changes through ManualPrivacyState.onChanged
  • Expanded First-Party Metrics Telemetry — First-party metrics telemetry is now wired through the public SDK entry points and internal runtime call sites with typed telemetry metrics, config-driven sampling, and buffered delivery through MetricsTelemetryTracker

Removed

  • Legacy Startup Context Bootstrap — Removed the internal startup context bootstrap path, including ApplicationContext, CloudXStartup, CloudXContextProvider, and the internal ContextProvider indirection layer
  • ActivityLifecycleService Startup Path — Removed ActivityLifecycleService and its startup registration path from the SDK startup flow

[2.2.7] - 2026-04-02

Added

  • First-Party Metrics Telemetry Across SDK Call Sites — Metrics telemetry is now wired through SDK call sites, HTTP timing instrumentation, and telemetry collectors, so method calls and internal SDK metrics flow through the first-party metrics telemetry pipeline alongside the existing metrics tracker

Changed

  • Metric Timestamps Now Reflect Event Creation Time — Metric timestamps are now stamped when the metric event is created instead of when the tracker later enqueues it, so timing data reflects when the SDK action actually happened
  • Explicit Activity Lifecycle Service Initialization — Activity lifecycle tracking now initializes through ActivityLifecycleService.instance(context), and Jetpack Startup now passes the real application context directly when registering lifecycle tracking

Fixed

  • Publisher Startup ANR Risk — Fixed publisher startup ANR risk in ActivityLifecycleService initialization by removing the previous lazy singleton and global lookup path from the startup flow
  • Missing SDK Metrics Telemetry Events — Fixed SDK metrics telemetry gaps by wiring MetricsTelemetryTracker through runtime call sites that were previously only reported through the legacy metrics path

[2.2.6] - 2026-04-01

Added

  • Lifecycle Event Telemetry — The SDK now sends first-party telemetry for init, bid request, load success, loss, impression, click, reward, and error events in parallel with the legacy tracker flow
  • Crash Telemetry Pipeline — SDK crashes are now cached and sent through both the legacy crash tracker and the newer first-party crash telemetry tracker on the next launch

Changed

  • Placement And Custom Data In Telemetry — Banner, interstitial, and rewarded lifecycle telemetry now includes the placement and customData values attached to the ad instance at event time
  • Crash Cache Behavior — Crash telemetry payloads are now cached even when the crash endpoint is not configured; endpoint presence only controls whether pending payloads are sent
  • Telemetry Endpoint Naming — Remote log endpoint config now uses sdkLogEndpointURL naming to match the server contract

Removed

  • Session Init Tracking — Removed the old session endpoint and internal session tracker flow; SDK initialization no longer sends the legacy session init event

Fixed

  • SDK Error Visibility In Telemetry — Bid-response parsing failures, adapter initialization failures, and ad-loading failures are now recorded in first-party telemetry instead of only in the legacy tracker path
  • Crash Tracker Isolation — A failure in one crash tracker no longer prevents the other crash tracker from caching or sending its payload
  • Native Ads Excluded From Release — The native ads work from commit f6d049327f249fa1728fbb9e754484f460e40fbd was intentionally excluded from the published 2.2.6 release

[2.2.5] - 2026-03-30

Added

  • SDK Init Telemetry — Added first-party SDK init tracking via sdkInitEndpointURL
  • Bid Request Telemetry — Added first-party bid request tracking via sdkBidReqEndpointURL
  • Explicit Load Failure While Showing — Added LOAD_NOT_ALLOWED_WHILE_SHOWING so fullscreen load() calls fail clearly when invoked while the same ad instance is already being shown

Changed

  • Adapter-Owned Fullscreen Readiness — Fullscreen readiness now comes from the underlying network adapter instead of relying only on whether the SDK still holds a cached fullscreen ad reference
  • Stale Fullscreen Reload HandlingFullscreenAdManager.load() now reuses a cached fullscreen ad only if the adapter still reports it as ready; otherwise the stale ad is destroyed and a fresh load begins
  • Static Fullscreen Expiration — Static fullscreen ads now track when they loaded and stop reporting ready after one hour

Fixed

  • Dropped Internal Tracking Events — Fixed impression, click, reward, and error internal tracking being lost when adapters fire callbacks back-to-back and the delegate coroutine scope is cancelled before event emission completes
  • Load During Active Show — Fixed fullscreen load() being accepted during an active show; it now fails immediately with onAdLoadFailed(..., LOAD_NOT_ALLOWED_WHILE_SHOWING)
  • Stale Fullscreen Readiness — Fixed fullscreen ads being reported as ready after the underlying network SDK had already invalidated or expired the ad object
  • Mintegral CMP Consent Propagation — Fixed CMP-managed GDPR consent for Mintegral by calling setConsentStatus(context) when manual consent is not set, allowing the Mintegral SDK to read the TCF string from shared storage

[2.2.4] - 2026-03-26

Added

  • Granular No-Fill Diagnostics — No-fill error messages now include per-network non-bid reasons, making it easier to diagnose fill rate issues
  • Improved Bid Request Data — Content language is now included in bid requests for improved ad targeting

Changed

  • Server-Driven Location Controls — Location coordinate sharing in bid requests is now controlled via the CloudX dashboard (account-scoped). No SDK code changes required for publishers.

Fixed

  • ProGuard Compatibility — Fixed consumer ProGuard rules not being applied correctly for adapter modules
  • Mintegral Stability — Fixed a crash in the Mintegral adapter on Android 6.0 (API 23)

[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