dependencies { implementation('com.google.android.gms:play-services-analytics:18.0.2') } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keep class com.adjust.sdk.plugin.MacAddressUtil { java.lang.String getMacAddress(android.content.Context); } -keep class com.adjust.sdk.plugin.AndroidIdUtil { java.lang.String getAndroidId(android.content.Context); } -keep class com.google.android.gms.common.ConnectionResult { int SUCCESS; } -keep class com.google.android.gms.ads.identifier.AdvertisingIdClient { com.google.android.gms.ads.identifier.AdvertisingIdClient$Info getAdvertisingIdInfo(android.content.Context); } -keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info { java.lang.String getId(); boolean isLimitAdTrackingEnabled(); } import java.util.LinkedHashMap; import java.util.Map; import android.net.Uri; import com.adjust.sdk.Adjust; import com.adjust.sdk.AdjustAttribution; import com.adjust.sdk.AdjustConfig; import com.adjust.sdk.AdjustEvent; import com.adjust.sdk.AdjustEventFailure; import com.adjust.sdk.AdjustEventSuccess; import com.adjust.sdk.LogLevel; import com.adjust.sdk.OnAttributionChangedListener; import com.adjust.sdk.OnDeeplinkResponseListener; import com.adjust.sdk.OnEventTrackingFailedListener; import com.adjust.sdk.OnEventTrackingSucceededListener; import com.adjust.sdk.OnSessionTrackingFailedListener; import com.adjust.sdk.OnSessionTrackingSucceededListener; import com.adjust.sdk.AdjustSessionFailure; import com.adjust.sdk.AdjustSessionSuccess; Map<String, String> Adjust_Event_CallbackParameters; Map<String, String> Adjust_Event_PartnerParameters; public void AndroidThunkJava_Adjust_SetEnabled(boolean Enable) { // Disable or enable tracking (REMEMBERED BETWEEEN SESSIONS!!) Adjust.setEnabled(Enable); } public void AndroidThunkJava_Adjust_SetOfflineMode(boolean Offline) { // Offline mode: (will save to file and send when disabled) ALWAYS STARTS in online mode! Adjust.setOfflineMode(Offline); } public void AndroidThunkJava_Adjust_SetPushToken(String Token) { Adjust.setPushToken(Token); } public void AndroidThunkJava_Adjust_AddSessionPartnerParameter(String Key, String Value) { Adjust.addSessionPartnerParameter(Key, Value); } public void AndroidThunkJava_Adjust_RemoveSessionPartnerParameter(String Key) { Adjust.removeSessionPartnerParameter(Key); } public void AndroidThunkJava_Adjust_ResetSessionPartnerParameters() { Adjust.resetSessionPartnerParameters(); } public void AndroidThunkJava_Adjust_Event_AddCallbackParameter(String Key, String Value) { if (Adjust_Event_CallbackParameters == null) { // use LinkedHashMap to preserve the ordering Adjust_Event_CallbackParameters = new LinkedHashMap<String, String>(); } Adjust_Event_CallbackParameters.put(Key, Value); } public void AndroidThunkJava_Adjust_Event_RemoveCallbackParameter(String Key) { if (Adjust_Event_CallbackParameters != null) { Adjust_Event_CallbackParameters.remove(Key); } } public void AndroidThunkJava_Adjust_Event_ResetCallbackParameters() { Adjust_Event_CallbackParameters = null; } public void AndroidThunkJava_Adjust_Event_AddPartnerParameter(String Key, String Value) { if (Adjust_Event_PartnerParameters == null) { // use LinkedHashMap to preserve the ordering Adjust_Event_PartnerParameters = new LinkedHashMap<String, String>(); } Adjust_Event_PartnerParameters.put(Key, Value); } public void AndroidThunkJava_Adjust_Event_RemovePartnerParameter(String Key) { if (Adjust_Event_PartnerParameters != null) { Adjust_Event_PartnerParameters.remove(Key); } } public void AndroidThunkJava_Adjust_Event_ResetPartnerParameters() { Adjust_Event_PartnerParameters = null; } private AdjustEvent Adjust_CreateEvent(String Token) { AdjustEvent event = new AdjustEvent(Token); if (Adjust_Event_CallbackParameters != null) { for (LinkedHashMap.Entry<String, String> entry : Adjust_Event_CallbackParameters.entrySet()) { event.addCallbackParameter(entry.getKey(), entry.getValue()); } } if (Adjust_Event_PartnerParameters != null) { for (LinkedHashMap.Entry<String, String> entry : Adjust_Event_PartnerParameters.entrySet()) { event.addPartnerParameter(entry.getKey(), entry.getValue()); } } return event; } public void AndroidThunkJava_Adjust_SendEvent(String Token) { Adjust.trackEvent(Adjust_CreateEvent(Token)); } public void AndroidThunkJava_Adjust_SendRevenueEvent(String Token, String OrderId, double Amount, String Currency) { AdjustEvent event = Adjust_CreateEvent(Token); event.setRevenue(Amount, Currency); // 0.01, USD if (OrderId != "") { event.setOrderId(OrderId); // optional to prevent duplication (remembers last 10) } Adjust.trackEvent(event); } String environment = AdjustConfig.ENVIRONMENT_SANDBOX; String environment = AdjustConfig.ENVIRONMENT_PRODUCTION; AdjustConfig config = new AdjustConfig(this, appToken, environment); config.setSendInBackground(true); config.setSendInBackground(false); config.setEventBufferingEnabled(true); config.setEventBufferingEnabled(false); // set attribution delegate config.setOnAttributionChangedListener(new OnAttributionChangedListener() { @Override public void onAttributionChanged(AdjustAttribution attribution) { Log.debug("[ADJUST] attribution: " + attribution.toString()); } }); // set event success tracking delegate config.setOnEventTrackingSucceededListener(new OnEventTrackingSucceededListener() { @Override public void onFinishedEventTrackingSucceeded(AdjustEventSuccess eventSuccessResponseData) { Log.debug("[ADJUST] success event tracking: " + eventSuccessResponseData.toString()); } }); // set event failure tracking delegate config.setOnEventTrackingFailedListener(new OnEventTrackingFailedListener() { @Override public void onFinishedEventTrackingFailed(AdjustEventFailure eventFailureResponseData) { Log.debug("[ADJUST] failed event tracking: " + eventFailureResponseData.toString()); } }); // set session success tracking delegate config.setOnSessionTrackingSucceededListener(new OnSessionTrackingSucceededListener() { @Override public void onFinishedSessionTrackingSucceeded(AdjustSessionSuccess sessionSuccessResponseData) { Log.debug("[ADJUST] success session tracking: " + sessionSuccessResponseData.toString()); } }); // set session failure tracking delegate config.setOnSessionTrackingFailedListener(new OnSessionTrackingFailedListener() { @Override public void onFinishedSessionTrackingFailed(AdjustSessionFailure sessionFailureResponseData) { Log.debug("[ADJUST] failed session tracking: " + sessionFailureResponseData.toString()); } }); // evaluate deeplink to be launched config.setOnDeeplinkResponseListener(new OnDeeplinkResponseListener() { @Override public boolean launchReceivedDeeplink(Uri deeplink) { Log.debug("[ADJUST] deeplink to open: " + deeplink); return true; } }); Adjust.onCreate(config); Adjust.onResume(); Adjust.onPause();