Skip to main content

Update Guide

Step-by-step upgrade instructions for each VGP SDK Android version.


6.5.10 → 6.5.11

Release date: 19-05-2026

Meta CAPI Event Match Quality enhancement for users with the Facebook app installed. No required code changes — bump the SDK and rebuild.

Changes

CategoryDescription
Meta CAPIForward FB SDK anonymous install ID (XZ<UUIDv4>) as a new anon_id payload field. Server routes it to Meta CAPI's user_data.anon_id slot — distinct from user_data.fbp (which carries the _fbp cookie value) — giving Meta one more cross-match signal alongside madid (GAID) and hashed external_id. Captured via reflection from AppEventsLogger.getAnonymousAppDeviceGUID(context), so the SDK still does not hard-depend on Facebook SDK; no-op when the host app does not integrate FB SDK.

Update

Bump the SDK version in build.gradle (app-level):

dependencies {
// VGP SDK
implementation 'vn.vgpjsc:vgpsdk:6.5.11'
}
No breaking changes

Pure additive enhancement to the S2S payload. No public API changes or new dependencies.


6.5.8 → 6.5.10

Release date: 12-05-2026

Critical fixes for S2S event attribution correctness and deduplication. No required code changes — bump the SDK and rebuild.

Changes

CategoryDescription
User IdentityFixed an issue where sign_in and sign_up events were dispatched with an empty vgp_id due to a cache persistence race condition. The user instance is now fully persisted before event triggers fire.
Event DeduplicationAdded a 30-second debounce window for sign_in and sign_up events (keyed by event name + vgp_id) to absorb duplicate authentication triggers originating from different internal ViewModels.
Session CorrectnessThe start_app debounce timestamp is now persisted across process terminations via SharedPreferences (s2s_last_start_app_time). This prevents duplicate start_app events when the app process is killed and cold-restarted within the 5-minute session debounce window.

Update

Bump the SDK version in build.gradle (app-level):

dependencies {
// VGP SDK
implementation 'vn.vgpjsc:vgpsdk:6.5.10'
}
No breaking changes

All updates are fully internal to the core attribution and tracking layers. No public API changes or new dependencies required.


6.5.7 → 6.5.8

Release date: 11-05-2026

S2S improvements: terminal HTTP error handling, Firebase App Instance ID collection, and purchase tracking simplification. No required code changes — bump the SDK and rebuild.

Changes

CategoryDescription
S2S FixHTTP 410 Gone and 422 Unprocessable Entity are now treated as terminal drops (no retry). Mirrors iOS 6.5.4.
S2S FeatureFirebase Analytics App Instance ID (app_instance_id) is now collected and forwarded to server for Measurement Protocol dispatch. Cached in SharedPreferences; backfilled in event queue at send time.
Purchase TrackingIn S2S mode, client-side Firebase purchase dispatch has been removed. Server-side Measurement Protocol is now the single source of truth — avoids double-counting.

Update

Bump the SDK version in build.gradle (app-level):

dependencies {
// VGP SDK
implementation 'vn.vgpjsc:vgpsdk:6.5.8'
}
No breaking changes

All changes are internal to the S2S module. No public API changes or new dependencies required.


6.5.6 → 6.5.7

Release date: 07-05-2026

Fix for concurrent login/logout race condition. No required code changes — bump the SDK and rebuild.

Changes

  • onLoginSuccess — Added a synchronized block to safely capture vgpsdkCallback and baseActivity to prevent NullPointerException if a logout occurs concurrently with an asynchronous login response.
  • Logout callback — Fixed an issue where vgpsdkCallback was incorrectly cleared before onUserLogout could be completely processed.

Update

Bump the SDK version in build.gradle (app-level):

dependencies {
// VGP SDK
implementation 'vn.vgpjsc:vgpsdk:6.5.7'
}

6.5.5 → 6.5.6

Release date: 05-05-2026

Defensive guard around payment-callback dispatch. No required code changes — bump the SDK and rebuild.

Changes

  • onPaymentFinished / onPaymentSuccess — now capture vgpsdkCallback under the singleton's monitor and skip dispatch if it is null. Closes a narrow race introduced by 6.5.5: if the host calls logout() while a payment SDK callback is in flight, vgpsdkCallback could be cleared between the callback being scheduled and VGPGameSDK invoking it, throwing NullPointerException.

Update

Bump the SDK version in build.gradle (app-level):

dependencies {
// VGP SDK
implementation 'vn.vgpjsc:vgpsdk:6.5.6'
}

6.5.4 → 6.5.5

Release date: 04-05-2026

Memory leak fix in logout(). No required code changes — bump the SDK and rebuild.

Changes

  • Memory leakVGPGameSDK now clears its internal baseActivity and vgpsdkCallback references at the start of logout() (capture-then-null pattern). Previously these references survived until the next init()/setActivity() call, leaking the SDK's modal Activity and the host's logout-callback closure (which typically retains the host Activity).
  • Lifecycle cleanupVGPSDKActivity.onDestroy() now also clears the singleton reference if it still points at this instance (race-safe for configuration changes).
  • New APIIVGPGameSDK.clearActivityIfCurrent(activity) — internal primitive used by the lifecycle hook above.

Update

Bump the SDK version in build.gradle (app-level):

dependencies {
// VGP SDK
implementation 'vn.vgpjsc:vgpsdk:6.5.5'
}
Behaviour change for getActivity() in logout callbacks

If your VGPSDKCallback.onUserLogout() implementation calls VGPGameSDK.getInstance().getActivity(), it will now return null (the singleton's reference is cleared before the callback fires). The previous behaviour returned a stale reference to a finishing Activity. Update any host code that touched getActivity() inside onUserLogout().


6.5.3 → 6.5.4

Release date: 04-05-2026

Changes

CategoryDescription
CoreFixed initialization race condition to ensure configs load before S2S
CoreAdded AtomicBoolean to prevent duplicate initialization API calls
MemoryAdded CompositeDisposable to track and prevent RxJava memory leaks
FixPrevented NullPointerException during BillingDataSource creation
FixMade VGPLifeCycle singleton initialization thread-safe (volatile)

Update

Simply bump the SDK version in build.gradle (app-level):

dependencies {
// VGP SDK
implementation 'vn.vgpjsc:vgpsdk:6.5.4'
}
No breaking changes

This release focuses on internal stability, concurrency, and memory management. No public API changes.


6.0.1 → 6.5.3

Release date: 04-05-2026

S2S correctness pass, privacy-friendly App Set ID collection, and a new force-update listener API. Requires adding a new Play Services dependency.

Changes

  • 6.5.0 — AppSetIdCollector (requires play-services-appset), InstallReferrerCapture, S2SSessionTracker (30-min timeout), NetworkInfoCollector, EncryptedSharedPreferences for S2S config, and setForceUpdateListener(listener) on VGPGameSDK (optional).
  • 6.5.1 → 6.5.3 — silent attribution-loss fixes: empty adjust_id, null ANDROID_ID, Meta fbc timestamp, 401/403 auth-loop, clock-skew sessions.
  • 6.0.2 — Removed TikTok Business SDK client-side dispatch. Server-side TikTok Events API attribution still works via auto-captured ttclid.

Update

Bump the SDK version and add the new AppSet dependency in build.gradle (app-level):

dependencies {
// VGP SDK
implementation 'vn.vgpjsc:vgpsdk:6.5.3'

// NEW — Required for AppSetIdCollector in 6.5.0+
implementation 'com.google.android.gms:play-services-appset:16.1.0'
}
Removed Dependencies

The TikTok Business SDK has been removed from the VGP SDK. You must remove implementation 'com.github.tiktok:tiktok-business-android-sdk:1.3.6' from your build.gradle (app-level).

Optional: force-update listener

Register once in Application.onCreate (or before SDK init) to be notified when the running build is below the server-mandated minimum:

import com.vgp.sdk.s2s.S2SIntegration;

S2SIntegration.getInstance().setForceUpdateListener((requiredVersion, currentVersion) -> {
// Show your "please update" UI on the main thread.
});

The callback fires once per app session, on the main thread, and is delivered even if the listener is registered after detection.

Recommended baseline

6.5.3 closes silent S2S event drops on devices where ANDROID_ID is null or Adjust never delivers an ADID. Recommended for new releases.


6.0.0 → 6.0.1

Release date: 21-04-2026

Changes

CategoryDescription
S2S PurchaseRemoved SDK-side purchase S2S dispatch — server wallet-sync now handles it as single source of truth
CleanupRemoved S2SDatabase, S2SPurchaseDao, S2SPurchaseEntity (Room purchase DAO)
CleanupRemoved S2SIntegration.logPurchase() and S2SEventQueue purchase queue/flush paths
Non-purchase eventssign_in, sign_up, created_character, level_milestone, start_app, join_server still flow through SDK S2S queue unchanged
On-device trackingNative FB / Firebase / Adjust / TikTok purchase tracking unchanged

Update

Simply bump the SDK version in build.gradle (app-level):

dependencies {
// VGP SDK
implementation 'vn.vgpjsc:vgpsdk:6.0.1'
}
Architecture change

Purchase S2S events are no longer dispatched from the SDK. The server pulls purchases from the wallet DB (payment_all) and dispatches to S2S directly.
No integration code change required — the logPurchase API has been removed internally; if you were calling it manually, remove those call sites.


5.1.7 → 6.0.0

Release date: 09-04-2026

Changes

CategoryDescription
S2S AttributionNew Server-to-Server attribution module — full offline event queue, purchase tracking, deep link parsing, device profiling
SecurityAdded security-crypto for encrypted shared preferences and keystore operations
ArchitectureRefactored SDK architecture — improved VGPGameSDK, AppDataManager, VGPTracking
Emulator DetectionNew EmulatorDetector utility
Level TrackingNew S2SLevelTracker for in-game progression tracking
DependenciesAdded security-crypto:1.1.0-alpha06

Update

Update SDK version in build.gradle (app-level):

dependencies {
// VGP SDK
implementation 'vn.vgpjsc:vgpsdk:6.0.0'

// NEW — Security Crypto (required for 6.0.0)
implementation 'androidx.security:security-crypto:1.1.0-alpha06'
}
Major version upgrade

This is a major version upgrade. While the public API remains largely compatible, the internal SDK architecture has been significantly refactored. Please test thoroughly after upgrading.


5.1.6 → 5.1.7

Release date: 13-04-2026

Changes

CategoryDescription
SDK Init & Thread SafetyRefactored VGPInit, VGPLifeCycle, VGPTracking with double-checked locking
WebSocketAdded PurchaseData model, duplicate transaction detection
Null SafetyAdded null checks for ServerConfig, notification channel, install referrer

Update

Simply bump the SDK version in build.gradle (app-level):

dependencies {
// VGP SDK
implementation 'vn.vgpjsc:vgpsdk:5.1.7'
}
No breaking changes

All APIs and dependencies remain unchanged from 5.1.6.


5.1.4 → 5.1.6

Release date: 12-12-2025

Changes

CategoryDescription
WebSocketUpdated WebSocket

Update

dependencies {
// VGP SDK
implementation 'vn.vgpjsc:vgpsdk:5.1.6'
}
No breaking changes

All APIs and dependencies remain unchanged from 5.1.4.


5.1.3 → 5.1.4

Release date: 21-10-2025

Changes

CategoryDescription
WebSocketUpdated WebSocket

Update

dependencies {
// VGP SDK
implementation 'vn.vgpjsc:vgpsdk:5.1.4'
}

5.1.2 → 5.1.3

Release date: 10-10-2025

Changes

CategoryDescription
WebSocketAdded WebSocket support
AdjustAdded install referrer for Adjust
WebViewUpdated WebView
BuildUpdated build gradle

Update

dependencies {
// VGP SDK
implementation 'vn.vgpjsc:vgpsdk:5.1.3'

// NEW — WebSocket
implementation 'org.java-websocket:Java-WebSocket:1.6.0'
}

5.1.1 → 5.1.2

Release date: 09-09-2025

Changes

CategoryDescription
FixFixed VGPMessagingService on Android 14+
GradleUpdated Gradle to 8.13.0

Update

dependencies {
// VGP SDK
implementation 'vn.vgpjsc:vgpsdk:5.1.2'
}

Update gradle-wrapper.properties:

distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip

Update build.gradle (project-level):

classpath 'com.android.tools.build:gradle:8.13.0'

5.1.0 → 5.1.1

Release date: 09-09-2025

Changes

CategoryDescription
UIUpdated UI
FixFixed VGPMessagingService warnings
DependenciesFacebook v18.1.3, Adjust v5.4.3

Update

dependencies {
// VGP SDK
implementation 'vn.vgpjsc:vgpsdk:5.1.1'

// Updated Facebook → 18.1.3
implementation 'com.facebook.android:facebook-core:18.1.3'
implementation 'com.facebook.android:facebook-login:18.1.3'
implementation 'com.facebook.android:facebook-share:18.1.3'

// Updated Adjust → 5.4.3
implementation 'com.adjust.sdk:adjust-android:5.4.3'
}

5.0.9 → 5.1.0

Release date: 12-08-2025

Changes

CategoryDescription
Push NotificationUpdated small_icon_push

Update

dependencies {
// VGP SDK
implementation 'vn.vgpjsc:vgpsdk:5.1.0'
}

5.0.8 → 5.0.9

Release date: 08-08-2025

Changes

CategoryDescription
SDK InitRemoved redundant openNotificationLink call
BreakingSDK initialization now requires activity instead of context

Update

dependencies {
// VGP SDK
implementation 'vn.vgpjsc:vgpsdk:5.0.9'
}
SDK initialization change

Update the init call in MainActivity:

// Old
VGPGameSDK.getInstance().init(context, callback);

// New
VGPGameSDK.getInstance().init(activity, callback);

5.0.7 → 5.0.8

Release date: 18-07-2025

Changes

CategoryDescription
FeatureAdded Open Notification Link

Update

dependencies {
// VGP SDK
implementation 'vn.vgpjsc:vgpsdk:5.0.8'
}

5.0.6 → 5.0.7

Release date: 24-06-2025

Changes

CategoryDescription
TrackingRemoved AdImpression tracking

Update

dependencies {
// VGP SDK
implementation 'vn.vgpjsc:vgpsdk:5.0.7'
}

4.x → 5.0.6

Release date: 16-06-2025

Changes

CategoryDescription
UIRedesigned SDK UI for v5
Google LoginAdded new Google login button
CodeRenamed FacebookShareFacebookShareHelper
DependenciesUpdated multiple libraries (see table below)

Updated dependencies:

LibraryNew version
firebase-bom33.15.0
google-billing7.1.1
room-runtime2.7.1
room-rxjava32.3.0
lifecycle2.9.1
play-services-auth21.3.0
lifecycle-livedata2.9.1

Update

dependencies {
// VGP SDK
implementation 'vn.vgpjsc:vgpsdk:5.0.6'

// Updated dependencies
implementation platform('com.google.firebase:firebase-bom:33.15.0')
implementation 'com.android.billingclient:billing:7.1.1'
implementation 'androidx.room:room-runtime:2.7.1'
implementation 'androidx.room:room-rxjava3:2.3.0'
implementation 'androidx.lifecycle:lifecycle-process:2.9.1'
implementation 'androidx.lifecycle:lifecycle-livedata:2.9.1'
implementation 'com.google.android.gms:play-services-auth:21.3.0'
}

Update gradle-wrapper.properties:

distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
Breaking changes
  • Renamed class FacebookShareFacebookShareHelper. Update all imports/references in your project.