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
| Category | Description |
|---|---|
| Meta CAPI | Forward 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'
}
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
| Category | Description |
|---|---|
| User Identity | Fixed 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 Deduplication | Added 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 Correctness | The 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'
}
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
| Category | Description |
|---|---|
| S2S Fix | HTTP 410 Gone and 422 Unprocessable Entity are now treated as terminal drops (no retry). Mirrors iOS 6.5.4. |
| S2S Feature | Firebase 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 Tracking | In 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'
}
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 capturevgpsdkCallbackandbaseActivityto preventNullPointerExceptionif a logout occurs concurrently with an asynchronous login response.- Logout callback — Fixed an issue where
vgpsdkCallbackwas incorrectly cleared beforeonUserLogoutcould 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 capturevgpsdkCallbackunder the singleton's monitor and skip dispatch if it isnull. Closes a narrow race introduced by 6.5.5: if the host callslogout()while a payment SDK callback is in flight,vgpsdkCallbackcould be cleared between the callback being scheduled andVGPGameSDKinvoking it, throwingNullPointerException.
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 leak —
VGPGameSDKnow clears its internalbaseActivityandvgpsdkCallbackreferences at the start oflogout()(capture-then-null pattern). Previously these references survived until the nextinit()/setActivity()call, leaking the SDK's modal Activity and the host's logout-callback closure (which typically retains the host Activity). - Lifecycle cleanup —
VGPSDKActivity.onDestroy()now also clears the singleton reference if it still points at this instance (race-safe for configuration changes). - New API —
IVGPGameSDK.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'
}
getActivity() in logout callbacksIf 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
| Category | Description |
|---|---|
| Core | Fixed initialization race condition to ensure configs load before S2S |
| Core | Added AtomicBoolean to prevent duplicate initialization API calls |
| Memory | Added CompositeDisposable to track and prevent RxJava memory leaks |
| Fix | Prevented NullPointerException during BillingDataSource creation |
| Fix | Made 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'
}
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, andsetForceUpdateListener(listener)onVGPGameSDK(optional). - 6.5.1 → 6.5.3 — silent attribution-loss fixes: empty
adjust_id, nullANDROID_ID, Metafbctimestamp, 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'
}
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).
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.
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
| Category | Description |
|---|---|
| S2S Purchase | Removed SDK-side purchase S2S dispatch — server wallet-sync now handles it as single source of truth |
| Cleanup | Removed S2SDatabase, S2SPurchaseDao, S2SPurchaseEntity (Room purchase DAO) |
| Cleanup | Removed S2SIntegration.logPurchase() and S2SEventQueue purchase queue/flush paths |
| Non-purchase events | sign_in, sign_up, created_character, level_milestone, start_app, join_server still flow through SDK S2S queue unchanged |
| On-device tracking | Native 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'
}
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
| Category | Description |
|---|---|
| S2S Attribution | New Server-to-Server attribution module — full offline event queue, purchase tracking, deep link parsing, device profiling |
| Security | Added security-crypto for encrypted shared preferences and keystore operations |
| Architecture | Refactored SDK architecture — improved VGPGameSDK, AppDataManager, VGPTracking |
| Emulator Detection | New EmulatorDetector utility |
| Level Tracking | New S2SLevelTracker for in-game progression tracking |
| Dependencies | Added 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'
}
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
| Category | Description |
|---|---|
| SDK Init & Thread Safety | Refactored VGPInit, VGPLifeCycle, VGPTracking with double-checked locking |
| WebSocket | Added PurchaseData model, duplicate transaction detection |
| Null Safety | Added 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'
}
All APIs and dependencies remain unchanged from 5.1.6.
5.1.4 → 5.1.6
Release date: 12-12-2025
Changes
| Category | Description |
|---|---|
| WebSocket | Updated WebSocket |
Update
dependencies {
// VGP SDK
implementation 'vn.vgpjsc:vgpsdk:5.1.6'
}
All APIs and dependencies remain unchanged from 5.1.4.
5.1.3 → 5.1.4
Release date: 21-10-2025
Changes
| Category | Description |
|---|---|
| WebSocket | Updated WebSocket |
Update
dependencies {
// VGP SDK
implementation 'vn.vgpjsc:vgpsdk:5.1.4'
}
5.1.2 → 5.1.3
Release date: 10-10-2025
Changes
| Category | Description |
|---|---|
| WebSocket | Added WebSocket support |
| Adjust | Added install referrer for Adjust |
| WebView | Updated WebView |
| Build | Updated 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
| Category | Description |
|---|---|
| Fix | Fixed VGPMessagingService on Android 14+ |
| Gradle | Updated 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
| Category | Description |
|---|---|
| UI | Updated UI |
| Fix | Fixed VGPMessagingService warnings |
| Dependencies | Facebook 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
| Category | Description |
|---|---|
| Push Notification | Updated 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
| Category | Description |
|---|---|
| SDK Init | Removed redundant openNotificationLink call |
| Breaking | SDK initialization now requires activity instead of context |
Update
dependencies {
// VGP SDK
implementation 'vn.vgpjsc:vgpsdk:5.0.9'
}
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
| Category | Description |
|---|---|
| Feature | Added 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
| Category | Description |
|---|---|
| Tracking | Removed AdImpression tracking |
Update
dependencies {
// VGP SDK
implementation 'vn.vgpjsc:vgpsdk:5.0.7'
}
4.x → 5.0.6
Release date: 16-06-2025
Changes
| Category | Description |
|---|---|
| UI | Redesigned SDK UI for v5 |
| Google Login | Added new Google login button |
| Code | Renamed FacebookShare → FacebookShareHelper |
| Dependencies | Updated multiple libraries (see table below) |
Updated dependencies:
| Library | New version |
|---|---|
firebase-bom | 33.15.0 |
google-billing | 7.1.1 |
room-runtime | 2.7.1 |
room-rxjava3 | 2.3.0 |
lifecycle | 2.9.1 |
play-services-auth | 21.3.0 |
lifecycle-livedata | 2.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
- Renamed class
FacebookShare→FacebookShareHelper. Update all imports/references in your project.