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-magnitewith 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
extraInfomaps withBundle, renamed extras types to clearerPub/Adapterprefixes, and now source SDK version reporting from adapter params instead ofBuildConfigso 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_STATEwhen Vungle reportsonAdLoaded()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, andCloudXNativeLoaderConfiguration, backed by the Meta adapter andNATIVE_REELad unit parsing support - Trusted Event Timestamps — Added
clientTrustedTimestampto 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 Compatibility —
adapter-metanow brings in Meta Audience Network6.20.0transitively by default for Unity 2022 compatibility. If your integration uses native ads, explicitly add Meta Audience Network6.21.0or newer in your app
[3.0.0] - 2026-04-06
Breaking Changes
- Explicit Android Context On Public SDK APIs —
CloudX.initialize()now requires an AndroidContext, and the public creation APIs now requireContextas well:createBanner(),createMREC(),createInterstitial(), andcreateRewarded() - Adapter Factory Interfaces Now Take Raw Context — Adapter factory interfaces now take
context: Contextdirectly instead ofCloudXContextProvider; external adapters must update their factorycreate()signatures and replacecontextProvider.getContext()with the passedcontext
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 internalContextProviderindirection layer - ActivityLifecycleService Startup Path — Removed
ActivityLifecycleServiceand 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
ActivityLifecycleServiceinitialization 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
MetricsTelemetryTrackerthrough 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
placementandcustomDatavalues 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
sdkLogEndpointURLnaming 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
f6d049327f249fa1728fbb9e754484f460e40fbdwas intentionally excluded from the published2.2.6release
[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_SHOWINGso fullscreenload()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 Handling —
FullscreenAdManager.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 withonAdLoadFailed(..., 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-unityadsand aligned Unity Ads naming across the SDK, build setup, and documentation - Refactored
CXLoggerto 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 API —
setHasUserConsent()andsetDoNotSell()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
appcompatandwebkittransitive 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_KEYerror 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
Activitybeing destroyed prematurely in apps usingsingleTasklaunch mode
[2.0.0] - 2026-02-04
This release replaces placement names with Ad Unit IDs from the CloudX dashboard. Update yourcreateBanner(), createMREC(), createInterstitial(), and createRewarded() calls to use the ad unit ID instead of a placement name.
Added
- Rewarded ads with
CloudX.createRewarded(),CloudXRewardedAd,CloudXRewardedListener, andCloudXReward - 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 stateCloudX.getVersion()to get the SDK version stringsetPlacement()andsetCustomData()methods onCloudXAdViewfor trackingshow(activity, placement, customData)overloads on fullscreen ads for trackingCloudXSdkConfigurationreturned inonInitialized()callbackCloudXAd.networkPlacementproperty 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
minSdkfrom 21 to 23 (Android 6.0 Marshmallow) - Replaced
CloudXInitializationParamswithCloudXInitializationConfigurationbuilder pattern - Renamed
placementNameparameter toadUnitIdincreateBanner(),createMREC(),createInterstitial(),createRewarded() - Renamed
CloudXAd.placementIdtoadUnitId - Removed
CloudXAd.placementNameproperty - Renamed
CloudXAd.bidderNametonetworkName - Renamed
CloudXErrorCode.INVALID_PLACEMENTtoINVALID_AD_UNIT - Changed
onAdLoadFailed(placementName, cloudXError)toonAdLoadFailed(adUnitId, cloudXError) - Changed
onAdDisplayFailed(cloudXError)toonAdDisplayFailed(cloudXAd, cloudXError)- now includes the ad object - Changed
onInitialized()toonInitialized(configuration: CloudXSdkConfiguration) - Removed
testModeparameter - test mode is now server-controlled - Changed
show()toshow(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
onAdHiddenandonAdDisplayFailedcallbacks - All
load()andshow()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- usemessagedirectly instead - Removed
setLoggingEnabled()- usesetMinLogLevel(CloudXLogLevel.NONE)to disable logging - Removed
CloudXPrivacyclass - 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.NONEenum 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
isDestroyedguards 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
CloudXAdRevenueListenerinterface withonAdRevenuePaidcallback
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
testModeparameter toCloudXInitializationParamsto 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