├── .gitignore
├── Adjust
├── build.gradle
├── examples
│ ├── example-app-fbpixel
│ │ ├── .gitignore
│ │ ├── build.gradle
│ │ ├── proguard-rules.pro
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── assets
│ │ │ └── AdjustExample-FbPixel.html
│ │ │ ├── java
│ │ │ └── com
│ │ │ │ └── adjust
│ │ │ │ └── examples
│ │ │ │ └── MainActivity.java
│ │ │ └── res
│ │ │ ├── drawable-v24
│ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── drawable
│ │ │ └── ic_launcher_background.xml
│ │ │ ├── layout
│ │ │ └── activity_main.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── values
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ │ └── xml
│ │ │ └── network_security_config.xml
│ ├── example-app-java
│ │ ├── build.gradle
│ │ ├── proguard-rules.pro
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java
│ │ │ └── com
│ │ │ │ └── adjust
│ │ │ │ └── examples
│ │ │ │ ├── GlobalApplication.java
│ │ │ │ ├── MainActivity.java
│ │ │ │ ├── ServiceActivity.java
│ │ │ │ └── ServiceExample.java
│ │ │ └── res
│ │ │ ├── layout
│ │ │ ├── activity_main.xml
│ │ │ └── activity_service.xml
│ │ │ ├── menu
│ │ │ └── menu_main.xml
│ │ │ ├── mipmap-hdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-mdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── values-w820dp
│ │ │ └── dimens.xml
│ │ │ └── values
│ │ │ ├── dimens.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ ├── example-app-keyboard
│ │ ├── build.gradle
│ │ ├── proguard-rules.pro
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java
│ │ │ └── com
│ │ │ │ └── adjust
│ │ │ │ └── examples
│ │ │ │ └── keyboard
│ │ │ │ ├── GlobalApplication.java
│ │ │ │ ├── KeyboardInputMethodService.java
│ │ │ │ └── MainActivity.java
│ │ │ └── res
│ │ │ ├── layout
│ │ │ ├── activity_main.xml
│ │ │ ├── key_preview.xml
│ │ │ └── keyboard_view.xml
│ │ │ ├── mipmap-hdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-mdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── values-w820dp
│ │ │ └── dimens.xml
│ │ │ ├── values
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ │ └── xml
│ │ │ ├── keyboard.xml
│ │ │ └── method.xml
│ ├── example-app-kotlin
│ │ ├── .gitignore
│ │ ├── build.gradle
│ │ ├── proguard-rules.pro
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java
│ │ │ └── com
│ │ │ │ └── adjust
│ │ │ │ └── examples
│ │ │ │ ├── GlobalApplication.kt
│ │ │ │ ├── MainActivity.kt
│ │ │ │ ├── ServiceActivity.kt
│ │ │ │ └── ServiceExample.kt
│ │ │ └── res
│ │ │ ├── layout
│ │ │ ├── activity_main.xml
│ │ │ └── activity_service.xml
│ │ │ ├── menu
│ │ │ └── menu_main.xml
│ │ │ ├── mipmap-hdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-mdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── values-w820dp
│ │ │ └── dimens.xml
│ │ │ └── values
│ │ │ ├── dimens.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ ├── example-app-tv
│ │ ├── build.gradle
│ │ ├── proguard-rules.pro
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java
│ │ │ └── com
│ │ │ │ └── adjust
│ │ │ │ └── examples
│ │ │ │ ├── GlobalApplication.java
│ │ │ │ └── MainActivity.java
│ │ │ └── res
│ │ │ ├── layout
│ │ │ └── activity_main.xml
│ │ │ ├── mipmap-hdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-mdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── values-w820dp
│ │ │ └── dimens.xml
│ │ │ └── values
│ │ │ ├── dimens.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ └── example-app-webbridge
│ │ ├── .gitignore
│ │ ├── build.gradle
│ │ ├── proguard-rules.pro
│ │ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── assets
│ │ └── AdjustExample-WebView.html
│ │ ├── java
│ │ └── com
│ │ │ └── example
│ │ │ └── examples
│ │ │ └── MainActivity.java
│ │ └── res
│ │ ├── drawable-v24
│ │ └── ic_launcher_foreground.xml
│ │ ├── drawable
│ │ └── ic_launcher_background.xml
│ │ ├── layout
│ │ └── activity_main.xml
│ │ ├── mipmap-anydpi-v26
│ │ ├── ic_launcher.xml
│ │ └── ic_launcher_round.xml
│ │ ├── mipmap-hdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-mdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── values
│ │ ├── colors.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ │ └── xml
│ │ └── network_security_config.xml
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── plugins
│ ├── sdk-plugin-huawei-referrer
│ │ ├── .gitignore
│ │ ├── build.gradle
│ │ ├── proguard-rules.pro
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java
│ │ │ └── com
│ │ │ │ └── adjust
│ │ │ │ └── sdk
│ │ │ │ └── huawei
│ │ │ │ ├── AdjustHuaweiReferrer.java
│ │ │ │ ├── HuaweiInstallReferrerDetails.java
│ │ │ │ ├── HuaweiInstallReferrerResult.java
│ │ │ │ ├── HuaweiReferrerClient.java
│ │ │ │ ├── OnHuaweiInstallReferrerReadListener.java
│ │ │ │ └── Util.java
│ │ │ └── res
│ │ │ └── values
│ │ │ └── strings.xml
│ ├── sdk-plugin-imei
│ │ ├── .gitignore
│ │ ├── build.gradle
│ │ ├── proguard-rules.pro
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java
│ │ │ └── com
│ │ │ │ └── adjust
│ │ │ │ └── sdk
│ │ │ │ └── imei
│ │ │ │ ├── AdjustImei.java
│ │ │ │ ├── TelephonyIdsUtil.java
│ │ │ │ └── Util.java
│ │ │ └── res
│ │ │ └── values
│ │ │ └── strings.xml
│ ├── sdk-plugin-meta-referrer
│ │ ├── .gitignore
│ │ ├── build.gradle
│ │ ├── proguard-rules.pro
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java
│ │ │ └── com
│ │ │ │ └── adjust
│ │ │ │ └── sdk
│ │ │ │ └── meta
│ │ │ │ ├── AdjustMetaReferrer.java
│ │ │ │ ├── MetaInstallReferrerDetails.java
│ │ │ │ ├── MetaInstallReferrerResult.java
│ │ │ │ ├── MetaReferrerClient.java
│ │ │ │ ├── OnMetaInstallReferrerReadListener.java
│ │ │ │ └── Util.java
│ │ │ └── res
│ │ │ └── values
│ │ │ └── strings.xml
│ ├── sdk-plugin-oaid
│ │ ├── .gitignore
│ │ ├── build.gradle
│ │ ├── libs
│ │ │ └── oaid_sdk_2.0.0.aar
│ │ ├── proguard-rules.pro
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java
│ │ │ └── com
│ │ │ │ └── adjust
│ │ │ │ └── sdk
│ │ │ │ └── oaid
│ │ │ │ ├── AdjustOaid.java
│ │ │ │ ├── HmsSdkClient.java
│ │ │ │ ├── MsaSdkClient.java
│ │ │ │ ├── OaidInfo.java
│ │ │ │ ├── OaidResult.java
│ │ │ │ ├── OnOaidReadListener.java
│ │ │ │ └── Util.java
│ │ │ └── res
│ │ │ └── values
│ │ │ └── strings.xml
│ ├── sdk-plugin-samsung-clouddev
│ │ ├── .gitignore
│ │ ├── build.gradle
│ │ ├── proguard-rules.pro
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java
│ │ │ └── com
│ │ │ │ └── adjust
│ │ │ │ └── sdk
│ │ │ │ └── samsung
│ │ │ │ └── clouddev
│ │ │ │ ├── AdjustSamsungCloudDev.java
│ │ │ │ ├── SamsungCloudDevClient.java
│ │ │ │ └── Util.java
│ │ │ └── res
│ │ │ └── values
│ │ │ └── strings.xml
│ ├── sdk-plugin-samsung-referrer
│ │ ├── .gitignore
│ │ ├── build.gradle
│ │ ├── proguard-rules.pro
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java
│ │ │ └── com
│ │ │ │ └── adjust
│ │ │ │ └── sdk
│ │ │ │ └── samsung
│ │ │ │ ├── AdjustSamsungReferrer.java
│ │ │ │ ├── OnSamsungInstallReferrerReadListener.java
│ │ │ │ ├── SamsungInstallReferrerDetails.java
│ │ │ │ ├── SamsungInstallReferrerResult.java
│ │ │ │ ├── SamsungReferrerClient.java
│ │ │ │ └── Util.java
│ │ │ └── res
│ │ │ └── values
│ │ │ └── strings.xml
│ ├── sdk-plugin-vivo-referrer
│ │ ├── .gitignore
│ │ ├── build.gradle
│ │ ├── proguard-rules.pro
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java
│ │ │ └── com
│ │ │ │ └── adjust
│ │ │ │ └── sdk
│ │ │ │ └── vivo
│ │ │ │ ├── AdjustVivoReferrer.java
│ │ │ │ ├── OnVivoInstallReferrerReadListener.java
│ │ │ │ ├── Util.java
│ │ │ │ ├── VivoInstallReferrerDetails.java
│ │ │ │ ├── VivoInstallReferrerResult.java
│ │ │ │ └── VivoReferrerClient.java
│ │ │ └── res
│ │ │ └── values
│ │ │ └── strings.xml
│ ├── sdk-plugin-webbridge
│ │ ├── .gitignore
│ │ ├── build.gradle
│ │ ├── proguard-rules.pro
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── assets
│ │ │ ├── adjust.js
│ │ │ ├── adjust_config.js
│ │ │ ├── adjust_event.js
│ │ │ ├── adjust_store_info.js
│ │ │ └── adjust_third_party_sharing.js
│ │ │ └── java
│ │ │ └── com
│ │ │ └── adjust
│ │ │ └── sdk
│ │ │ └── webbridge
│ │ │ ├── AdjustBridge.java
│ │ │ ├── AdjustBridgeInstance.java
│ │ │ ├── AdjustBridgeUtil.java
│ │ │ └── FacebookSDKJSInterface.java
│ └── sdk-plugin-xiaomi-referrer
│ │ ├── .gitignore
│ │ ├── build.gradle
│ │ ├── proguard-rules.pro
│ │ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ └── com
│ │ │ └── adjust
│ │ │ └── sdk
│ │ │ └── xiaomi
│ │ │ ├── AdjustXiaomiReferrer.java
│ │ │ ├── OnXiaomiInstallReferrerReadListener.java
│ │ │ ├── Util.java
│ │ │ ├── XiaomiInstallReferrerDetails.java
│ │ │ ├── XiaomiInstallReferrerResult.java
│ │ │ └── XiaomiReferrerClient.java
│ │ └── res
│ │ └── values
│ │ └── strings.xml
├── sdk-core
│ ├── adjust-proguard-rules.txt
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ └── com
│ │ │ └── adjust
│ │ │ └── sdk
│ │ │ ├── ActivityHandler.java
│ │ │ ├── ActivityKind.java
│ │ │ ├── ActivityPackage.java
│ │ │ ├── ActivityState.java
│ │ │ ├── Adjust.java
│ │ │ ├── AdjustAdRevenue.java
│ │ │ ├── AdjustAttribution.java
│ │ │ ├── AdjustConfig.java
│ │ │ ├── AdjustDeeplink.java
│ │ │ ├── AdjustEvent.java
│ │ │ ├── AdjustEventFailure.java
│ │ │ ├── AdjustEventSuccess.java
│ │ │ ├── AdjustFactory.java
│ │ │ ├── AdjustInstance.java
│ │ │ ├── AdjustLinkResolution.java
│ │ │ ├── AdjustPlayStorePurchase.java
│ │ │ ├── AdjustPlayStoreSubscription.java
│ │ │ ├── AdjustPreinstallReferrerReceiver.java
│ │ │ ├── AdjustPurchaseVerificationResult.java
│ │ │ ├── AdjustReferrerReceiver.java
│ │ │ ├── AdjustSessionFailure.java
│ │ │ ├── AdjustSessionSuccess.java
│ │ │ ├── AdjustSigner.java
│ │ │ ├── AdjustStoreInfo.java
│ │ │ ├── AdjustTestOptions.java
│ │ │ ├── AdjustThirdPartySharing.java
│ │ │ ├── AndroidIdUtil.java
│ │ │ ├── AttributionHandler.java
│ │ │ ├── AttributionResponseData.java
│ │ │ ├── BackoffStrategy.java
│ │ │ ├── Constants.java
│ │ │ ├── DeviceInfo.java
│ │ │ ├── EventResponseData.java
│ │ │ ├── FirstSessionDelayManager.java
│ │ │ ├── GlobalParameters.java
│ │ │ ├── GooglePlayInstallReferrerDetails.java
│ │ │ ├── GooglePlayServicesClient.java
│ │ │ ├── IActivityHandler.java
│ │ │ ├── IAttributionHandler.java
│ │ │ ├── ILogger.java
│ │ │ ├── IPackageHandler.java
│ │ │ ├── IPurchaseVerificationHandler.java
│ │ │ ├── IRunActivityHandler.java
│ │ │ ├── ISdkClickHandler.java
│ │ │ ├── InstallReferrer.java
│ │ │ ├── InstallReferrerReadListener.java
│ │ │ ├── LogLevel.java
│ │ │ ├── Logger.java
│ │ │ ├── OnAdidReadListener.java
│ │ │ ├── OnAmazonAdIdReadListener.java
│ │ │ ├── OnAttributionChangedListener.java
│ │ │ ├── OnAttributionReadListener.java
│ │ │ ├── OnDeeplinkResolvedListener.java
│ │ │ ├── OnDeferredDeeplinkResponseListener.java
│ │ │ ├── OnEventTrackingFailedListener.java
│ │ │ ├── OnEventTrackingSucceededListener.java
│ │ │ ├── OnGoogleAdIdReadListener.java
│ │ │ ├── OnGooglePlayInstallReferrerReadListener.java
│ │ │ ├── OnIsEnabledListener.java
│ │ │ ├── OnLastDeeplinkReadListener.java
│ │ │ ├── OnPurchaseVerificationFinishedListener.java
│ │ │ ├── OnSdkVersionReadListener.java
│ │ │ ├── OnSessionTrackingFailedListener.java
│ │ │ ├── OnSessionTrackingSucceededListener.java
│ │ │ ├── PackageBuilder.java
│ │ │ ├── PackageFactory.java
│ │ │ ├── PackageHandler.java
│ │ │ ├── PreinstallUtil.java
│ │ │ ├── PurchaseVerificationHandler.java
│ │ │ ├── PurchaseVerificationResponseData.java
│ │ │ ├── ReferrerDetails.java
│ │ │ ├── Reflection.java
│ │ │ ├── ResponseData.java
│ │ │ ├── SdkClickHandler.java
│ │ │ ├── SdkClickResponseData.java
│ │ │ ├── SessionResponseData.java
│ │ │ ├── SharedPreferencesManager.java
│ │ │ ├── StoreInfoUtil.java
│ │ │ ├── SystemLifecycle.java
│ │ │ ├── SystemLifecycleContentProvider.java
│ │ │ ├── TrackingState.java
│ │ │ ├── Util.java
│ │ │ ├── network
│ │ │ ├── ActivityPackageSender.java
│ │ │ ├── ErrorCodes.java
│ │ │ ├── IActivityPackageSender.java
│ │ │ ├── UrlStrategy.java
│ │ │ └── UtilNetworking.java
│ │ │ └── scheduler
│ │ │ ├── AsyncTaskExecutor.java
│ │ │ ├── FutureScheduler.java
│ │ │ ├── RunnableWrapper.java
│ │ │ ├── SingleThreadCachedScheduler.java
│ │ │ ├── SingleThreadFutureScheduler.java
│ │ │ ├── ThreadExecutor.java
│ │ │ ├── ThreadFactoryWrapper.java
│ │ │ ├── ThreadScheduler.java
│ │ │ ├── TimerCycle.java
│ │ │ └── TimerOnce.java
│ │ └── res
│ │ └── values
│ │ └── strings.xml
├── settings.gradle
└── tests
│ ├── test-app-core
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ └── com
│ │ │ └── adjust
│ │ │ └── testapp
│ │ │ ├── AdjustCommandExecutor.java
│ │ │ ├── Command.java
│ │ │ ├── CommandListener.java
│ │ │ ├── MainActivity.java
│ │ │ └── Util.java
│ │ └── res
│ │ ├── drawable-v24
│ │ └── ic_launcher_foreground.xml
│ │ ├── drawable
│ │ └── ic_launcher_background.xml
│ │ ├── layout
│ │ └── activity_main.xml
│ │ ├── mipmap-anydpi-v26
│ │ ├── ic_launcher.xml
│ │ └── ic_launcher_round.xml
│ │ ├── mipmap-hdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-mdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ └── values
│ │ ├── colors.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ ├── test-app-webbridge
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── assets
│ │ ├── AdjustTestApp-WebView.html
│ │ ├── command_executor.js
│ │ └── test_library.js
│ │ ├── java
│ │ └── com
│ │ │ └── example
│ │ │ └── testappwebbridge
│ │ │ ├── MainActivity.java
│ │ │ └── TestLibraryBridge.java
│ │ └── res
│ │ ├── drawable-v24
│ │ └── ic_launcher_foreground.xml
│ │ ├── drawable
│ │ └── ic_launcher_background.xml
│ │ ├── layout
│ │ └── activity_main.xml
│ │ ├── mipmap-anydpi-v26
│ │ ├── ic_launcher.xml
│ │ └── ic_launcher_round.xml
│ │ ├── mipmap-hdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-mdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ └── values
│ │ ├── colors.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ ├── test-library
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ └── com
│ │ │ └── adjust
│ │ │ └── test
│ │ │ ├── Constants.java
│ │ │ ├── ICommandJsonListener.java
│ │ │ ├── ICommandListener.java
│ │ │ ├── ICommandRawJsonListener.java
│ │ │ ├── IOnExitListener.java
│ │ │ ├── Networking.java
│ │ │ ├── TestCommand.java
│ │ │ ├── TestLibrary.java
│ │ │ ├── Utils.java
│ │ │ └── ws
│ │ │ ├── ControlSignal.java
│ │ │ ├── ControlWebSocketClient.java
│ │ │ └── SignalType.java
│ │ └── res
│ │ └── values
│ │ └── strings.xml
│ └── test-options
│ ├── .gitignore
│ ├── build.gradle
│ ├── consumer-rules.pro
│ ├── proguard-rules.pro
│ └── src
│ └── main
│ ├── AndroidManifest.xml
│ └── java
│ └── com
│ └── adjust
│ └── test_options
│ ├── TLSSocketFactory.java
│ └── TestConnectionOptions.java
├── CHANGELOG.md
├── MIT-LICENSE
├── README.md
├── VERSION
└── tools
└── adjust-dtt
/.gitignore:
--------------------------------------------------------------------------------
1 | # Copyright: Benjamin Weiss (keyboardsurfer) https://github.com/keyboardsurfer
2 | # Under CC-BY-SA V3.0 (https://creativecommons.org/licenses/by-sa/3.0/legalcode)
3 |
4 | # orig files
5 | *.orig
6 |
7 | # built application files
8 | *.apk
9 | *.ap_
10 | *.jar
11 |
12 | # lint folder
13 | lint
14 |
15 | # files for the dex VM
16 | *.dex
17 |
18 | # Java class files
19 | *.class
20 |
21 | # generated files
22 | bin/
23 | gen/
24 | classes/
25 | gen-external-apklibs/
26 |
27 | # maven output folder
28 | target
29 |
30 | # Local configuration file (sdk path, etc)
31 | local.properties
32 |
33 | # Eclipse project files
34 | .classpath
35 | .project
36 | .metadata
37 | .settings
38 |
39 | # IntelliJ files
40 | .idea
41 | *.iml
42 |
43 | # OSX files
44 | .DS_Store
45 |
46 | # Windows files
47 | Thumbs.db
48 |
49 | # vi swap files
50 | *.swp
51 |
52 | # backup files
53 | *.bak
54 |
55 | # gradle directory
56 | .gradle
57 | build/
58 |
59 | # Ignore Gradle GUI config
60 | gradle-app.setting
61 |
62 | # Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
63 | !gradle-wrapper.jar
64 |
65 | # Cache of project
66 | .gradletasknamecache
67 |
68 | #for oh-my-zsh jira plugin (https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins#jira)
69 | .jira-url
70 | atlassian-ide-plugin.xml
71 |
72 | # add exception for private libraries
73 | google-services.json
74 |
75 | # generated native code
76 | .externalNativeBuild/
77 |
--------------------------------------------------------------------------------
/Adjust/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | // common in all sub-projects
4 | subprojects {
5 | }
6 |
7 | ext {
8 | // Android config.
9 | coreMinSdkVersion = 21
10 | coreCompileSdkVersion = 35
11 | coreTargetSdkVersion = 35
12 | coreVersionName = '5.4.0'
13 | defaultVersionCode = 1
14 | webbridgeMinSdkVersion = 21
15 | samsungReferrerMinSdkVersion = 21
16 | vivoReferrerMinSdkVersion = 23
17 | samsungCloudDevMinSdkVersion = 23
18 |
19 | // POM.
20 | adjustGroupId = 'com.adjust.sdk'
21 | }
22 |
23 | buildscript {
24 | ext.kotlin_version = '2.1.0'
25 |
26 | repositories {
27 | mavenCentral()
28 | google()
29 | }
30 | dependencies {
31 | classpath 'com.android.tools.build:gradle:8.8.0'
32 |
33 | // NOTE: Do not place your application dependencies here; they belong
34 | // in the individual module build.gradle files.
35 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" }
36 | }
37 |
38 | allprojects {
39 | repositories {
40 | mavenCentral()
41 | google()
42 | }
43 | gradle.projectsEvaluated {
44 | tasks.withType(JavaCompile) {
45 | options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-fbpixel/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-fbpixel/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | android {
4 | compileSdk 35
5 |
6 | defaultConfig {
7 | applicationId "com.adjust.examples"
8 | minSdkVersion 21
9 | targetSdkVersion 35
10 | versionCode 1
11 | versionName "1.0"
12 | }
13 |
14 | buildTypes {
15 | release {
16 | minifyEnabled false
17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
18 | }
19 | }
20 |
21 | compileOptions {
22 | sourceCompatibility 1.8
23 | targetCompatibility 1.8
24 | }
25 | namespace 'com.adjust.examples'
26 | }
27 |
28 | dependencies {
29 | implementation fileTree(dir: 'libs', include: ['*.jar'])
30 | implementation 'androidx.appcompat:appcompat:1.3.1'
31 | implementation "androidx.constraintlayout:constraintlayout:2.1.1"
32 | implementation 'com.google.android.gms:play-services-ads-identifier:17.1.0'
33 | implementation 'com.android.installreferrer:installreferrer:2.2'
34 | implementation 'com.google.android.gms:play-services-appset:16.0.2'
35 |
36 | implementation project(':sdk-core')
37 | implementation project(':plugins:sdk-plugin-webbridge')
38 | implementation 'com.adjust.signature:adjust-android-signature:3+'
39 | }
40 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-fbpixel/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-fbpixel/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
15 |
16 |
17 |
18 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-fbpixel/src/main/java/com/adjust/examples/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.adjust.examples;
2 |
3 | import androidx.appcompat.app.AppCompatActivity;
4 |
5 | import android.os.Bundle;
6 | import android.util.Log;
7 | import android.webkit.ConsoleMessage;
8 | import android.webkit.WebChromeClient;
9 | import android.webkit.WebView;
10 | import android.webkit.WebViewClient;
11 |
12 | import com.adjust.sdk.webbridge.AdjustBridge;
13 | import com.adjust.sdk.webbridge.AdjustBridgeInstance;
14 |
15 | public class MainActivity extends AppCompatActivity {
16 |
17 | @Override
18 | protected void onCreate(Bundle savedInstanceState) {
19 | super.onCreate(savedInstanceState);
20 | setContentView(R.layout.activity_main);
21 |
22 | WebView webView = (WebView) findViewById(R.id.webView1);
23 | webView.getSettings().setJavaScriptEnabled(true);
24 | webView.setWebChromeClient(new WebChromeClient());
25 | webView.setWebViewClient(new WebViewClient());
26 | webView.setWebChromeClient(new WebChromeClient() {
27 | public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
28 | String message = String.format("%s - %d: %s", consoleMessage.sourceId(), consoleMessage.lineNumber(), consoleMessage.message());
29 | Log.d("AdjustExample", message);
30 | return super.onConsoleMessage(consoleMessage);
31 | }
32 | });
33 |
34 | AdjustBridgeInstance defaultInstance = AdjustBridge.registerAndGetInstance(getApplication(), webView);
35 | defaultInstance.registerFacebookSDKJSInterface();
36 |
37 | try {
38 | webView.loadUrl("file:///android_asset/AdjustExample-FbPixel.html");
39 | } catch (Exception e) {
40 | e.printStackTrace();
41 | }
42 | }
43 |
44 | @Override
45 | protected void onDestroy() {
46 | AdjustBridge.unregister();
47 |
48 | super.onDestroy();
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-fbpixel/src/main/res/drawable-v24/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
12 |
13 |
19 |
22 |
25 |
26 |
27 |
28 |
34 |
35 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-fbpixel/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
12 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-fbpixel/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-fbpixel/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-fbpixel/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-fbpixel/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-fbpixel/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-fbpixel/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-fbpixel/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-fbpixel/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-fbpixel/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-fbpixel/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-fbpixel/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-fbpixel/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-fbpixel/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-fbpixel/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-fbpixel/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-fbpixel/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-fbpixel/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-fbpixel/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-fbpixel/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-fbpixel/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-fbpixel/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-fbpixel/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-fbpixel/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #3F51B5
4 | #303F9F
5 | #FF4081
6 |
7 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-fbpixel/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | example-fbpixel
3 |
4 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-fbpixel/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-fbpixel/src/main/res/xml/network_security_config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-java/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | repositories {
4 | maven {
5 | url "https://oss.sonatype.org/content/repositories/staging/"
6 | }
7 | }
8 |
9 | android {
10 | compileSdk 35
11 |
12 | defaultConfig {
13 | applicationId "com.adjust.examples"
14 | minSdkVersion 21
15 | targetSdkVersion 35
16 | versionCode 1
17 | versionName "1.0"
18 | }
19 | buildTypes {
20 | release {
21 | minifyEnabled true
22 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
23 | }
24 | }
25 | compileOptions {
26 | sourceCompatibility 1.8
27 | targetCompatibility 1.8
28 | }
29 | namespace 'com.adjust.examples'
30 | }
31 |
32 | dependencies {
33 | implementation fileTree(dir: 'libs', include: ['*.jar'])
34 | implementation 'androidx.appcompat:appcompat:1.3.1'
35 | implementation "androidx.constraintlayout:constraintlayout:2.1.1"
36 | implementation 'com.google.android.gms:play-services-ads-identifier:17.1.0'
37 | implementation 'com.android.installreferrer:installreferrer:2.2'
38 | implementation 'com.google.android.gms:play-services-appset:16.0.2'
39 |
40 | implementation project(':sdk-core')
41 | implementation 'com.adjust.signature:adjust-android-signature:3+'
42 | }
43 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-java/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Users/pfms/Development/Android_SDK/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 | -keep public class com.adjust.sdk.** { *; }
19 | -keep class com.google.android.gms.common.ConnectionResult {
20 | int SUCCESS;
21 | }
22 | -keep class com.google.android.gms.ads.identifier.AdvertisingIdClient {
23 | com.google.android.gms.ads.identifier.AdvertisingIdClient$Info getAdvertisingIdInfo(android.content.Context);
24 | }
25 | -keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info {
26 | java.lang.String getId();
27 | boolean isLimitAdTrackingEnabled();
28 | }
29 | -keep public class com.android.installreferrer.** { *; }
30 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-java/src/main/java/com/adjust/examples/ServiceActivity.java:
--------------------------------------------------------------------------------
1 | package com.adjust.examples;
2 |
3 | import android.content.Intent;
4 | import android.net.Uri;
5 |
6 | import androidx.appcompat.app.AppCompatActivity;
7 |
8 | import android.os.Bundle;
9 | import android.view.View;
10 |
11 | import com.adjust.sdk.Adjust;
12 | import com.adjust.sdk.AdjustDeeplink;
13 |
14 | public class ServiceActivity extends AppCompatActivity {
15 |
16 | @Override
17 | protected void onCreate(Bundle savedInstanceState) {
18 | super.onCreate(savedInstanceState);
19 | setContentView(R.layout.activity_service);
20 |
21 | Intent intent = getIntent();
22 | Uri data = intent.getData();
23 | AdjustDeeplink adjustDeeplink = new AdjustDeeplink(data);
24 | Adjust.processDeeplink(adjustDeeplink, getApplicationContext());
25 | }
26 |
27 | public void onServiceClick(View v) {
28 | Intent intent = new Intent(this, ServiceExample.class);
29 | startService(intent);
30 | }
31 |
32 | public void onReturnClick(View v) {
33 | finish();
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-java/src/main/res/layout/activity_service.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
20 |
21 |
29 |
30 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-java/src/main/res/menu/menu_main.xml:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-java/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-java/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-java/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-java/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-java/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-java/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-java/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-java/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-java/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 64dp
6 |
7 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-java/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 |
6 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-java/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Adjust Example
3 |
4 | Settings
5 |
6 | Track simple event
7 | Track revenue event
8 | Track callback event
9 | Track partner event
10 | Is SDK enabled?
11 | Fire INSTALL_REFERRER intent
12 | Service Activity
13 | Return
14 | Service
15 |
16 | Enable SDK
17 | Disable SDK
18 | Enable offline mode
19 | Disable offline mode
20 | Adjust SDK is ENABLED!
21 | Adjust SDK is DISABLED!
22 |
23 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-java/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-keyboard/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | repositories {
4 | maven {
5 | url "https://oss.sonatype.org/content/repositories/staging/"
6 | }
7 | }
8 |
9 | android {
10 | compileSdk 35
11 |
12 | defaultConfig {
13 | applicationId "com.adjust.examples.keyboard"
14 | minSdkVersion 21
15 | targetSdkVersion 35
16 | versionCode 1
17 | versionName "1.0"
18 | }
19 | buildTypes {
20 | release {
21 | minifyEnabled true
22 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
23 | }
24 | }
25 | compileOptions {
26 | sourceCompatibility 1.8
27 | targetCompatibility 1.8
28 | }
29 | namespace 'com.adjust.examples.keyboard'
30 | }
31 |
32 | dependencies {
33 | implementation fileTree(dir: 'libs', include: ['*.jar'])
34 | implementation 'androidx.appcompat:appcompat:1.3.1'
35 | implementation "androidx.constraintlayout:constraintlayout:2.1.1"
36 | implementation 'com.google.android.gms:play-services-ads-identifier:17.1.0'
37 | implementation 'com.android.installreferrer:installreferrer:2.2'
38 | implementation 'com.google.android.gms:play-services-appset:16.0.2'
39 |
40 | implementation project(':sdk-core')
41 | implementation 'com.adjust.signature:adjust-android-signature:3+'
42 | }
43 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-keyboard/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Users/pfms/Development/Android_SDK/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 | -keep public class com.adjust.sdk.** { *; }
19 | -keep class com.google.android.gms.common.ConnectionResult {
20 | int SUCCESS;
21 | }
22 | -keep class com.google.android.gms.ads.identifier.AdvertisingIdClient {
23 | com.google.android.gms.ads.identifier.AdvertisingIdClient$Info getAdvertisingIdInfo(android.content.Context);
24 | }
25 | -keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info {
26 | java.lang.String getId();
27 | boolean isLimitAdTrackingEnabled();
28 | }
29 | -keep public class com.android.installreferrer.** { *; }
30 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-keyboard/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
16 |
17 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
39 |
40 |
41 |
42 |
43 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-keyboard/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
11 |
12 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-keyboard/src/main/res/layout/key_preview.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-keyboard/src/main/res/layout/keyboard_view.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-keyboard/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-keyboard/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-keyboard/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-keyboard/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-keyboard/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-keyboard/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-keyboard/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-keyboard/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-keyboard/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 64dp
6 |
7 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-keyboard/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #5163B1
4 | #4C5786
5 | #EC0056
6 | #8F0054
7 | #FFFFFF
8 | #A8B1C1
9 | #4A4A4A
10 |
11 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-keyboard/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 |
6 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-keyboard/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Adjust Keyboard Example
3 | Adjust Keyboard is not enabled. Click Enable to open settings. Select Adjust Keyboard Example.
4 | Tip: To use keyboard open any text input field and switch the keyboard to Adjust Keyboard.
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-keyboard/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-keyboard/src/main/res/xml/keyboard.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-keyboard/src/main/res/xml/method.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-kotlin/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-kotlin/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 | apply plugin: 'kotlin-android'
3 | android {
4 | compileSdk 35
5 |
6 | defaultConfig {
7 | applicationId "com.adjust.examples"
8 | minSdkVersion 21
9 | targetSdkVersion 35
10 | versionCode 1
11 | versionName "1.0"
12 |
13 | }
14 |
15 | buildTypes {
16 | release {
17 | minifyEnabled false
18 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
19 | }
20 | }
21 |
22 | compileOptions {
23 | sourceCompatibility 1.8
24 | targetCompatibility 1.8
25 | }
26 |
27 | kotlinOptions {
28 | jvmTarget = '1.8'
29 | }
30 |
31 | namespace 'com.adjust.examples'
32 | }
33 |
34 | dependencies {
35 | implementation fileTree(dir: 'libs', include: ['*.jar'])
36 | implementation 'androidx.appcompat:appcompat:1.3.1'
37 | implementation "androidx.constraintlayout:constraintlayout:2.1.1"
38 | implementation 'com.google.android.gms:play-services-ads-identifier:17.1.0'
39 | implementation 'com.android.installreferrer:installreferrer:2.2'
40 | implementation 'com.google.android.gms:play-services-appset:16.0.2'
41 |
42 | implementation project(':sdk-core')
43 | implementation 'com.adjust.signature:adjust-android-signature:3+'
44 | }
45 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-kotlin/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Users/pfms/Development/Android_SDK/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 | -keep public class com.adjust.sdk.** { *; }
19 | -keep class com.google.android.gms.common.ConnectionResult {
20 | int SUCCESS;
21 | }
22 | -keep class com.google.android.gms.ads.identifier.AdvertisingIdClient {
23 | com.google.android.gms.ads.identifier.AdvertisingIdClient$Info getAdvertisingIdInfo(android.content.Context);
24 | }
25 | -keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info {
26 | java.lang.String getId();
27 | boolean isLimitAdTrackingEnabled();
28 | }
29 | -keep public class com.android.installreferrer.** { *; }
30 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-kotlin/src/main/java/com/adjust/examples/ServiceActivity.kt:
--------------------------------------------------------------------------------
1 | package com.adjust.examples
2 |
3 | import android.content.Intent
4 | import android.os.Bundle
5 | import androidx.appcompat.app.AppCompatActivity
6 | import android.view.View
7 |
8 | import com.adjust.sdk.Adjust
9 | import com.adjust.sdk.AdjustDeeplink
10 |
11 | class ServiceActivity : AppCompatActivity() {
12 |
13 | override fun onCreate(savedInstanceState: Bundle?) {
14 | super.onCreate(savedInstanceState)
15 | setContentView(R.layout.activity_service)
16 |
17 | val intent = intent
18 | val data = intent.data
19 | val adjustDeeplink = AdjustDeeplink(data);
20 | Adjust.processDeeplink(adjustDeeplink, applicationContext)
21 | }
22 |
23 | fun onServiceClick(v: View) {
24 | val intent = Intent(this, ServiceExample::class.java)
25 | startService(intent)
26 | }
27 |
28 | fun onReturnClick(v: View) {
29 | finish()
30 | }
31 | }
--------------------------------------------------------------------------------
/Adjust/examples/example-app-kotlin/src/main/java/com/adjust/examples/ServiceExample.kt:
--------------------------------------------------------------------------------
1 | package com.adjust.examples
2 |
3 | import android.app.Service
4 | import android.content.Intent
5 | import android.os.AsyncTask
6 | import android.os.IBinder
7 | import android.os.SystemClock
8 | import android.util.Log
9 |
10 | import com.adjust.sdk.Adjust
11 | import com.adjust.sdk.AdjustEvent
12 |
13 | class ServiceExample : Service() {
14 | init {
15 | Log.d("example", "ServiceExample constructor")
16 | }
17 |
18 | override fun onBind(intent: Intent): IBinder? {
19 | Log.d("example", "ServiceExample onBind")
20 |
21 | return null
22 | }
23 |
24 | override fun onCreate() {
25 | super.onCreate()
26 | Log.d("example", "ServiceExample onCreate")
27 | }
28 |
29 | override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
30 | val startDefaultOption = super.onStartCommand(intent, flags, startId)
31 | Log.d("example", "ServiceExample onStartCommand")
32 |
33 | if (flip) {
34 | Adjust.disable()
35 | flip = false
36 | } else {
37 | Adjust.enable()
38 | flip = true
39 | }
40 |
41 | object : AsyncTask() {
42 | override fun doInBackground(vararg params: Void): Void? {
43 | Log.d("example", "ServiceExample background sleeping")
44 | SystemClock.sleep(3000)
45 | Log.d("example", "ServiceExample background awake")
46 |
47 | val event = AdjustEvent(EVENT_TOKEN_BACKGROUND)
48 | Adjust.trackEvent(event)
49 |
50 | Log.d("example", "ServiceExample background event tracked")
51 |
52 | return null
53 | }
54 | }.execute()
55 |
56 | return Service.START_NOT_STICKY
57 | }
58 |
59 | override fun onDestroy() {
60 | super.onDestroy()
61 | Log.d("example", "ServiceExample onDestroy")
62 | }
63 |
64 | companion object {
65 | private val EVENT_TOKEN_BACKGROUND = "pkd28h"
66 |
67 | private var flip = true
68 | }
69 | }
--------------------------------------------------------------------------------
/Adjust/examples/example-app-kotlin/src/main/res/layout/activity_service.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
20 |
21 |
29 |
30 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-kotlin/src/main/res/menu/menu_main.xml:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-kotlin/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-kotlin/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-kotlin/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-kotlin/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-kotlin/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-kotlin/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-kotlin/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-kotlin/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-kotlin/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 64dp
6 |
7 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-kotlin/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 |
6 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-kotlin/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Adjust Example
3 |
4 | Settings
5 |
6 | Track simple event
7 | Track revenue event
8 | Track callback event
9 | Track partner event
10 | Is SDK enabled?
11 | Fire INSTALL_REFERRER intent
12 | Service Activity
13 | Return
14 | Service
15 |
16 | Enable SDK
17 | Disable SDK
18 | Enable offline mode
19 | Disable offline mode
20 | Adjust SDK is ENABLED!
21 | Adjust SDK is DISABLED!
22 |
23 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-kotlin/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-tv/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | repositories {
4 | maven {
5 | url "https://oss.sonatype.org/content/repositories/staging/"
6 | }
7 | }
8 |
9 | android {
10 | compileSdk 35
11 |
12 | defaultConfig {
13 | applicationId "com.adjust.examples"
14 | minSdkVersion 21
15 | targetSdkVersion 35
16 | versionCode 1
17 | versionName "1.0"
18 | }
19 | buildTypes {
20 | release {
21 | minifyEnabled true
22 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
23 | }
24 | }
25 | compileOptions {
26 | sourceCompatibility 1.8
27 | targetCompatibility 1.8
28 | }
29 | namespace 'com.adjust.examples'
30 | }
31 |
32 | dependencies {
33 | implementation fileTree(dir: 'libs', include: ['*.jar'])
34 | implementation 'androidx.appcompat:appcompat:1.3.1'
35 | implementation "androidx.constraintlayout:constraintlayout:2.1.1"
36 | implementation 'com.google.android.gms:play-services-ads-identifier:17.1.0'
37 | implementation 'com.android.installreferrer:installreferrer:2.2'
38 | implementation 'com.google.android.gms:play-services-appset:16.0.2'
39 |
40 | implementation project(':sdk-core')
41 | implementation 'com.adjust.signature:adjust-android-signature:3+'
42 | }
43 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-tv/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Users/uerceg/Development/Android/sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-tv/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-tv/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-tv/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-tv/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-tv/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-tv/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-tv/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-tv/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-tv/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 64dp
6 |
7 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-tv/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 |
6 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-tv/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | AdjustAndroidTv
3 |
4 | Track simple event
5 | Track revenue event
6 | Track callback event
7 | Track partner event
8 | Is SDK enabled?
9 | Service Activity
10 | Return
11 | Service
12 |
13 | Enable SDK
14 | Disable SDK
15 | Enable offline mode
16 | Disable offline mode
17 | Adjust SDK is ENABLED!
18 | Adjust SDK is DISABLED!
19 |
20 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-tv/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-webbridge/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-webbridge/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | android {
4 | compileSdk 35
5 |
6 | defaultConfig {
7 | applicationId "com.example.examples"
8 | minSdkVersion 21
9 | targetSdkVersion 35
10 | versionCode 1
11 | versionName "1.0"
12 | }
13 | buildTypes {
14 | release {
15 | minifyEnabled false
16 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
17 | }
18 | }
19 | compileOptions {
20 | sourceCompatibility 1.8
21 | targetCompatibility 1.8
22 | }
23 | namespace 'com.example.examples'
24 | }
25 |
26 | dependencies {
27 | implementation fileTree(dir: 'libs', include: ['*.jar'])
28 | implementation 'androidx.appcompat:appcompat:1.3.1'
29 | implementation "androidx.constraintlayout:constraintlayout:2.1.1"
30 | implementation 'com.google.android.gms:play-services-ads-identifier:17.1.0'
31 | implementation 'com.android.installreferrer:installreferrer:2.2'
32 | implementation 'com.google.android.gms:play-services-appset:16.0.2'
33 |
34 | implementation project(':sdk-core')
35 | implementation project(':plugins:sdk-plugin-webbridge')
36 | implementation 'com.adjust.signature:adjust-android-signature:3+'
37 | }
38 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-webbridge/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-webbridge/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
15 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-webbridge/src/main/java/com/example/examples/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.example.examples;
2 |
3 | import androidx.appcompat.app.AppCompatActivity;
4 |
5 | import android.os.Bundle;
6 | import android.webkit.WebChromeClient;
7 | import android.webkit.WebView;
8 | import android.webkit.WebViewClient;
9 |
10 | import com.adjust.sdk.webbridge.AdjustBridge;
11 |
12 | public class MainActivity extends AppCompatActivity {
13 |
14 | @Override
15 | protected void onCreate(Bundle savedInstanceState) {
16 | super.onCreate(savedInstanceState);
17 | setContentView(R.layout.activity_main);
18 |
19 | WebView webView = (WebView) findViewById(R.id.webView1);
20 | webView.getSettings().setJavaScriptEnabled(true);
21 | webView.setWebChromeClient(new WebChromeClient());
22 | webView.setWebViewClient(new WebViewClient());
23 |
24 | AdjustBridge.registerAndGetInstance(getApplication(), webView);
25 | try {
26 | webView.loadUrl("file:///android_asset/AdjustExample-WebView.html");
27 | // webView.loadUrl("https://adjustweb.neocities.org");
28 | } catch (Exception e) {
29 | e.printStackTrace();
30 | }
31 | }
32 |
33 | @Override
34 | protected void onDestroy() {
35 | AdjustBridge.unregister();
36 |
37 | super.onDestroy();
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-webbridge/src/main/res/drawable-v24/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
12 |
13 |
19 |
22 |
25 |
26 |
27 |
28 |
34 |
35 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-webbridge/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
12 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-webbridge/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-webbridge/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-webbridge/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-webbridge/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-webbridge/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-webbridge/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-webbridge/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-webbridge/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-webbridge/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-webbridge/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-webbridge/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-webbridge/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-webbridge/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-webbridge/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-webbridge/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-webbridge/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-webbridge/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-webbridge/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-webbridge/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-webbridge/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-webbridge/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/examples/example-app-webbridge/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/Adjust/examples/example-app-webbridge/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #3F51B5
4 | #303F9F
5 | #FF4081
6 |
7 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-webbridge/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | AdjustWebBridge
3 |
4 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-webbridge/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Adjust/examples/example-app-webbridge/src/main/res/xml/network_security_config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Adjust/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m
13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
14 |
15 | # When configured, Gradle will run in incubating parallel mode.
16 | # This option should only be used with decoupled projects. More details, visit
17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
18 | # org.gradle.parallel=true
19 | org.gradle.jvmargs=-Xmx2048M
20 | org.gradle.daemon=true
21 | org.gradle.parallel=true
22 | org.gradle.configureondemand=true
23 | android.useAndroidX=true
24 | android.enableJetifier=true
25 | android.enableR8.fullMode=true
--------------------------------------------------------------------------------
/Adjust/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/Adjust/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Oct 06 12:16:52 CEST 2023
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip
5 | zipStoreBase=GRADLE_USER_HOME
6 | zipStorePath=wrapper/dists
7 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-huawei-referrer/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | /libs
3 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-huawei-referrer/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-huawei-referrer/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-huawei-referrer/src/main/java/com/adjust/sdk/huawei/HuaweiInstallReferrerDetails.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.huawei;
2 |
3 | import com.adjust.sdk.ReferrerDetails;
4 | import com.adjust.sdk.Util;
5 |
6 | public class HuaweiInstallReferrerDetails {
7 | public String installReferrer; // The referrer URL of the installed package.
8 | public long referrerClickTimestampSeconds; // The client-side timestamp, when the referrer click happened.
9 | public long installBeginTimestampSeconds; // The client-side timestamp, when app installation began.
10 |
11 | HuaweiInstallReferrerDetails(String installReferrer, long referrerClickTimestampSeconds, long installBeginTimestampSeconds) {
12 | this.installReferrer = installReferrer;
13 | this.referrerClickTimestampSeconds = referrerClickTimestampSeconds;
14 | this.installBeginTimestampSeconds = installBeginTimestampSeconds;
15 | }
16 |
17 | public String toString() {
18 | return Util.formatString(
19 | " installReferrer : %s" +
20 | " referrerClickTimestampSeconds : %d" +
21 | " installBeginTimestampSeconds : %d",
22 | installReferrer,
23 | referrerClickTimestampSeconds,
24 | installBeginTimestampSeconds);
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-huawei-referrer/src/main/java/com/adjust/sdk/huawei/HuaweiInstallReferrerResult.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.huawei;
2 |
3 | public class HuaweiInstallReferrerResult {
4 | public String error;
5 | public HuaweiInstallReferrerDetails huaweiInstallReferrerDetails;
6 |
7 | HuaweiInstallReferrerResult(HuaweiInstallReferrerDetails huaweiInstallReferrerDetails) {
8 | this.huaweiInstallReferrerDetails = huaweiInstallReferrerDetails;
9 | }
10 |
11 | public HuaweiInstallReferrerResult(String error) {
12 | this.error = error;
13 | }
14 | }
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-huawei-referrer/src/main/java/com/adjust/sdk/huawei/OnHuaweiInstallReferrerReadListener.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.huawei;
2 |
3 | import com.adjust.sdk.ReferrerDetails;
4 |
5 | public interface OnHuaweiInstallReferrerReadListener {
6 | void onInstallReferrerDetailsRead(HuaweiInstallReferrerDetails referrerDetails);
7 | void onFail(String message);
8 | }
9 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-huawei-referrer/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | AdjustPluginHuaweiReferrer
3 |
4 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-imei/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-imei/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-imei/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-imei/src/main/java/com/adjust/sdk/imei/AdjustImei.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.imei;
2 |
3 | public class AdjustImei {
4 | static boolean isImeiToBeRead = false;
5 |
6 | public static void readImei() {
7 | AdjustImei.isImeiToBeRead = true;
8 | }
9 |
10 | public static void doNotReadImei() {
11 | AdjustImei.isImeiToBeRead = false;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-imei/src/main/java/com/adjust/sdk/imei/Util.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.imei;
2 |
3 | import android.content.Context;
4 |
5 | import com.adjust.sdk.ILogger;
6 |
7 | import java.util.HashMap;
8 | import java.util.Map;
9 |
10 | import static com.adjust.sdk.imei.TelephonyIdsUtil.injectImei;
11 |
12 | public class Util {
13 | public static Map getImeiParameters(Context context, ILogger logger) {
14 | Map parameters = new HashMap();
15 | injectImei(parameters, context, logger);
16 | return parameters;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-imei/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | AdjustNonPlay
3 |
4 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-meta-referrer/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | /libs
3 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-meta-referrer/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-meta-referrer/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-meta-referrer/src/main/java/com/adjust/sdk/meta/MetaInstallReferrerDetails.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.meta;
2 |
3 | import com.adjust.sdk.Util;
4 |
5 | public class MetaInstallReferrerDetails {
6 | public String installReferrer; // The referrer URL of the installed package.
7 | public long actualTimestampInSec; // The actual timestamp in seconds.
8 | public boolean isClick; // Whether its click or not.
9 |
10 | MetaInstallReferrerDetails(String installReferrer, long actualTimestampInSec, boolean isClick) {
11 | this.installReferrer = installReferrer;
12 | this.actualTimestampInSec = actualTimestampInSec;
13 | this.isClick = isClick;
14 | }
15 |
16 | public String toString() {
17 | return Util.formatString(
18 | " installReferrer : %s" +
19 | " actualTimestampInSec : %d" +
20 | " isClick : %b",
21 | installReferrer,
22 | actualTimestampInSec,
23 | isClick);
24 | }}
25 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-meta-referrer/src/main/java/com/adjust/sdk/meta/MetaInstallReferrerResult.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.meta;
2 |
3 | public class MetaInstallReferrerResult {
4 | public MetaInstallReferrerDetails metaInstallReferrerDetails;
5 | public String error;
6 |
7 | MetaInstallReferrerResult(MetaInstallReferrerDetails metaInstallReferrerDetails) {
8 | this.metaInstallReferrerDetails = metaInstallReferrerDetails;
9 | }
10 |
11 | public MetaInstallReferrerResult(String error) {
12 | this.error = error;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-meta-referrer/src/main/java/com/adjust/sdk/meta/OnMetaInstallReferrerReadListener.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.meta;
2 |
3 | public interface OnMetaInstallReferrerReadListener {
4 | void onInstallReferrerDetailsRead(MetaInstallReferrerDetails referrerDetails);
5 | void onFail(String message);
6 | }
7 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-meta-referrer/src/main/java/com/adjust/sdk/meta/Util.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.meta;
2 |
3 | import android.content.Context;
4 |
5 | import com.adjust.sdk.ILogger;
6 | import com.adjust.sdk.ReferrerDetails;
7 |
8 | public class Util {
9 | public synchronized static ReferrerDetails getMetaInstallReferrerDetails(Context context, String fbAppId, ILogger logger) {
10 | if (!AdjustMetaReferrer.shouldReadMetaReferrer) {
11 | return null;
12 | }
13 |
14 | logger.info("getMetaInstallReferrerDetails invoked");
15 |
16 | MetaInstallReferrerResult metaInstallReferrerResult = MetaReferrerClient.getMetaInstallReferrer(context, fbAppId, logger, true);
17 | if (metaInstallReferrerResult == null) {
18 | return null;
19 | }
20 | if (metaInstallReferrerResult.metaInstallReferrerDetails == null) {
21 | return null;
22 | }
23 | MetaInstallReferrerDetails metaInstallReferrerDetails = metaInstallReferrerResult.metaInstallReferrerDetails;
24 | return new ReferrerDetails(
25 | metaInstallReferrerDetails.installReferrer,
26 | metaInstallReferrerDetails.actualTimestampInSec,
27 | metaInstallReferrerDetails.isClick);
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-meta-referrer/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | AdjustPluginMetaReferrer
3 |
4 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-oaid/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-oaid/libs/oaid_sdk_2.0.0.aar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/plugins/sdk-plugin-oaid/libs/oaid_sdk_2.0.0.aar
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-oaid/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 | -keep class com.bun.miitmdid.** {*;}
23 | -keep interface com.bun.supplier.** {*;}
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-oaid/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-oaid/src/main/java/com/adjust/sdk/oaid/HmsSdkClient.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.oaid;
2 |
3 | import android.content.Context;
4 |
5 | import com.adjust.sdk.ILogger;
6 | import com.huawei.hms.ads.identifier.AdvertisingIdClient;
7 |
8 | import java.util.concurrent.Callable;
9 | import java.util.concurrent.FutureTask;
10 | import java.util.concurrent.TimeUnit;
11 |
12 | public class HmsSdkClient {
13 |
14 | public static OaidInfo getOaidInfo(Context context, final ILogger logger, long maxWaitTimeInMilli) {
15 | try {
16 | FutureTask task = new FutureTask<>(new Callable() {
17 | @Override
18 | public OaidInfo call() {
19 | OaidInfo oaidInfo = null;
20 | try {
21 | AdvertisingIdClient.Info info = AdvertisingIdClient.getAdvertisingIdInfo(context);
22 | if (info != null) {
23 | oaidInfo = new OaidInfo(info.getId(), !info.isLimitAdTrackingEnabled());
24 | }
25 | } catch (Exception e) {
26 | logger.error("Exception while reading oaid using hms %s", e.getMessage());
27 | }
28 | return oaidInfo;
29 | }
30 | });
31 | new Thread(task).start();
32 | return task.get(maxWaitTimeInMilli, TimeUnit.MILLISECONDS);
33 | } catch (Throwable t) {
34 | logger.error("Fail to read oaid info using hms, %s", t.getMessage());
35 | return null;
36 | }
37 | }
38 |
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-oaid/src/main/java/com/adjust/sdk/oaid/OaidInfo.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.oaid;
2 |
3 | public class OaidInfo {
4 | private String oaid;
5 | private boolean trackingEnabled;
6 |
7 | public OaidInfo(String oaid, boolean trackingEnabled) {
8 | this.oaid = oaid;
9 | this.trackingEnabled = trackingEnabled;
10 | }
11 |
12 | public String getOaid() {
13 | return oaid;
14 | }
15 |
16 | public boolean isTrackingEnabled() {
17 | return trackingEnabled;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-oaid/src/main/java/com/adjust/sdk/oaid/OaidResult.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.oaid;
2 |
3 | import java.util.Map;
4 |
5 | public class OaidResult {
6 |
7 | public String error;
8 | public String oaid;
9 | }
10 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-oaid/src/main/java/com/adjust/sdk/oaid/OnOaidReadListener.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.oaid;
2 |
3 | import java.util.Map;
4 |
5 | public interface OnOaidReadListener {
6 | void onOaidRead(String oaid);
7 | void onFail(String message);
8 | }
9 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-oaid/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | AdjustPluginOaid
3 |
4 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-samsung-clouddev/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | /libs
3 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-samsung-clouddev/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
23 | -keepclassmembers, includecode class com.samsung.android.game.cloudgame.dev.sdk.* { *;}
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-samsung-clouddev/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-samsung-clouddev/src/main/java/com/adjust/sdk/samsung/clouddev/AdjustSamsungCloudDev.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.samsung.clouddev;
2 |
3 | import android.content.Context;
4 |
5 | public class AdjustSamsungCloudDev {
6 |
7 | static boolean shouldUseSamsungCloudDevSdk = true;
8 |
9 | public static void useSamsungCloudDevSdk(Context context) {
10 | shouldUseSamsungCloudDevSdk = true;
11 | }
12 |
13 | public static void doNotUseSamsungCloudDevSdk() {
14 | shouldUseSamsungCloudDevSdk = false;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-samsung-clouddev/src/main/java/com/adjust/sdk/samsung/clouddev/Util.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.samsung.clouddev;
2 |
3 | import android.content.Context;
4 |
5 | import com.adjust.sdk.ILogger;
6 |
7 | public class Util {
8 | public synchronized static String getGoogleAdIdInCloudEnvironment(Context context, ILogger logger) {
9 | if (!AdjustSamsungCloudDev.shouldUseSamsungCloudDevSdk) {
10 | return null;
11 | }
12 |
13 | logger.info("getGoogleAdIdInCloudEnvironment invoked");
14 |
15 | return SamsungCloudDevClient.getGoogleAdId(context, logger, 4000);
16 | }
17 |
18 | public synchronized static boolean isAppRunningInCloudEnvironment(Context context, ILogger logger) {
19 | if (!AdjustSamsungCloudDev.shouldUseSamsungCloudDevSdk) {
20 | return false;
21 | }
22 |
23 | logger.info("isAppRunningInCloudEnvironment invoked");
24 |
25 | return SamsungCloudDevClient.isAppRunningInCloudEnvironment(context, logger);
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-samsung-clouddev/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | AdjustPluginSamsungCloudDev
3 |
4 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-samsung-referrer/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | /libs
3 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-samsung-referrer/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-samsung-referrer/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-samsung-referrer/src/main/java/com/adjust/sdk/samsung/OnSamsungInstallReferrerReadListener.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.samsung;
2 |
3 | public interface OnSamsungInstallReferrerReadListener {
4 | void onSamsungInstallReferrerRead(SamsungInstallReferrerDetails referrerDetails);
5 | void onFail(String message);
6 | }
7 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-samsung-referrer/src/main/java/com/adjust/sdk/samsung/SamsungInstallReferrerDetails.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.samsung;
2 |
3 | import com.adjust.sdk.ReferrerDetails;
4 | import com.adjust.sdk.Util;
5 |
6 | public class SamsungInstallReferrerDetails {
7 | public String installReferrer; // The referrer URL of the installed package.
8 | public long referrerClickTimestampSeconds; // The client-side timestamp, when the referrer click happened.
9 | public long installBeginTimestampSeconds; // The client-side timestamp, when app installation began.
10 |
11 | SamsungInstallReferrerDetails(String installReferrer, long referrerClickTimestampSeconds, long installBeginTimestampSeconds){
12 | this.installReferrer = installReferrer;
13 | this.referrerClickTimestampSeconds = referrerClickTimestampSeconds;
14 | this.installBeginTimestampSeconds = installBeginTimestampSeconds;
15 | }
16 |
17 | public String toString() {
18 | return Util.formatString(
19 | " installReferrer : %s" +
20 | " referrerClickTimestampSeconds : %d" +
21 | " installBeginTimestampSeconds : %d",
22 | installReferrer,
23 | referrerClickTimestampSeconds,
24 | installBeginTimestampSeconds);
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-samsung-referrer/src/main/java/com/adjust/sdk/samsung/SamsungInstallReferrerResult.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.samsung;
2 |
3 | public class SamsungInstallReferrerResult {
4 | public String error;
5 | public SamsungInstallReferrerDetails samsungInstallReferrerDetails;
6 |
7 | SamsungInstallReferrerResult(SamsungInstallReferrerDetails samsungInstallReferrerDetails) {
8 | this.samsungInstallReferrerDetails = samsungInstallReferrerDetails;
9 | }
10 |
11 | public SamsungInstallReferrerResult(String error) {
12 | this.error = error;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-samsung-referrer/src/main/java/com/adjust/sdk/samsung/Util.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.samsung;
2 |
3 | import android.content.Context;
4 |
5 | import com.adjust.sdk.Adjust;
6 | import com.adjust.sdk.ILogger;
7 | import com.adjust.sdk.ReferrerDetails;
8 |
9 | public class Util {
10 | public synchronized static ReferrerDetails getSamsungInstallReferrerDetails(Context context, ILogger logger) {
11 | if (!AdjustSamsungReferrer.shouldReadSamsungReferrer) {
12 | return null;
13 | }
14 |
15 | logger.info("getSamsungInstallReferrerDetails invoked");
16 |
17 | SamsungInstallReferrerResult referrerResult =
18 | SamsungReferrerClient.getReferrer(context, logger, 2000);
19 | if (referrerResult == null) {
20 | return null;
21 | }
22 | SamsungInstallReferrerDetails samsungInstallReferrerDetails = referrerResult.samsungInstallReferrerDetails;
23 | if (samsungInstallReferrerDetails == null) {
24 | return null;
25 | }
26 | return new ReferrerDetails(samsungInstallReferrerDetails.installReferrer,
27 | samsungInstallReferrerDetails.referrerClickTimestampSeconds,
28 | samsungInstallReferrerDetails.installBeginTimestampSeconds,
29 | -1,
30 | -1,
31 | null,
32 | null,
33 | null);
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-samsung-referrer/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | AdjustPluginSamsungReferrer
3 |
4 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-vivo-referrer/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | /libs
3 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-vivo-referrer/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-vivo-referrer/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-vivo-referrer/src/main/java/com/adjust/sdk/vivo/OnVivoInstallReferrerReadListener.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.vivo;
2 |
3 | import com.adjust.sdk.ReferrerDetails;
4 |
5 | public interface OnVivoInstallReferrerReadListener {
6 | void onVivoInstallReferrerRead(VivoInstallReferrerDetails referrerDetails);
7 | void onFail(String message);
8 | }
9 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-vivo-referrer/src/main/java/com/adjust/sdk/vivo/Util.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.vivo;
2 |
3 | import android.content.Context;
4 |
5 | import com.adjust.sdk.ILogger;
6 | import com.adjust.sdk.ReferrerDetails;
7 |
8 | public class Util {
9 | public synchronized static ReferrerDetails getVivoInstallReferrerDetails(Context context, ILogger logger) {
10 | if (!AdjustVivoReferrer.shouldReadVivoReferrer) {
11 | return null;
12 | }
13 |
14 | logger.info("getVivoInstallReferrerDetails invoked");
15 |
16 | VivoInstallReferrerResult vivoInstallReferrerResult = VivoReferrerClient.getReferrer(context, logger);
17 | if (vivoInstallReferrerResult.vivoInstallReferrerDetails == null) {
18 | return null;
19 | }
20 |
21 | VivoInstallReferrerDetails vivoInstallReferrerDetails = vivoInstallReferrerResult.vivoInstallReferrerDetails;
22 |
23 | return new ReferrerDetails(vivoInstallReferrerDetails.installReferrer,
24 | vivoInstallReferrerDetails.referrerClickTimestampSeconds,
25 | vivoInstallReferrerDetails.installBeginTimestampSeconds,
26 | -1,
27 | -1,
28 | vivoInstallReferrerDetails.installVersion,
29 | null,
30 | null);
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-vivo-referrer/src/main/java/com/adjust/sdk/vivo/VivoInstallReferrerDetails.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.vivo;
2 |
3 | import com.adjust.sdk.ReferrerDetails;
4 | import com.adjust.sdk.Util;
5 |
6 | public class VivoInstallReferrerDetails {
7 |
8 | public String installReferrer; // The referrer URL of the installed package.
9 | public long referrerClickTimestampSeconds; // The client-side timestamp, when the referrer click happened.
10 | public long installBeginTimestampSeconds; // The client-side timestamp, when app installation began.
11 | public String installVersion; // The app's version at the time when the app was first installed.
12 |
13 | public VivoInstallReferrerDetails(String installReferrer, long referrerClickTimestampSeconds, long installBeginTimestampSeconds, String installVersion) {
14 | this.installReferrer = installReferrer;
15 | this.referrerClickTimestampSeconds = referrerClickTimestampSeconds;
16 | this.installBeginTimestampSeconds = installBeginTimestampSeconds;
17 | this.installVersion = installVersion;
18 | }
19 |
20 | VivoInstallReferrerDetails(ReferrerDetails referrerDetails){
21 | if (referrerDetails == null){
22 | return;
23 | }
24 | this.installReferrer = referrerDetails.installReferrer;
25 | this.referrerClickTimestampSeconds = referrerDetails.referrerClickTimestampSeconds;
26 | this.installBeginTimestampSeconds = referrerDetails.installBeginTimestampSeconds;
27 | this.installVersion = referrerDetails.installVersion;
28 | }
29 |
30 | public String toString() {
31 | return Util.formatString(
32 | " installReferrer : %s" +
33 | " referrerClickTimestampSeconds : %d" +
34 | " installBeginTimestampSeconds : %d" +
35 | " installVersion : %s",
36 | installReferrer,
37 | referrerClickTimestampSeconds,
38 | installBeginTimestampSeconds,
39 | installVersion);
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-vivo-referrer/src/main/java/com/adjust/sdk/vivo/VivoInstallReferrerResult.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.vivo;
2 |
3 | public class VivoInstallReferrerResult {
4 | public String error;
5 | public VivoInstallReferrerDetails vivoInstallReferrerDetails;
6 |
7 | public VivoInstallReferrerResult(VivoInstallReferrerDetails vivoInstallReferrerDetails) {
8 | this.vivoInstallReferrerDetails = vivoInstallReferrerDetails;
9 | }
10 |
11 | public VivoInstallReferrerResult(String error) {
12 | this.error = error;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-vivo-referrer/src/main/java/com/adjust/sdk/vivo/VivoReferrerClient.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.vivo;
2 |
3 | import android.content.Context;
4 | import android.net.Uri;
5 | import android.os.Bundle;
6 | import android.text.TextUtils;
7 |
8 | import com.adjust.sdk.ILogger;
9 | import com.adjust.sdk.ReferrerDetails;
10 |
11 | public class VivoReferrerClient {
12 | public static VivoInstallReferrerResult getReferrer(Context context, final ILogger logger) {
13 |
14 | try {
15 | Uri url = Uri.parse("content://com.vivo.appstore.provider.referrer");
16 | Bundle resultBundle = context.getContentResolver().call(url, "read_referrer", null, null);
17 | if (resultBundle == null) {
18 | return new VivoInstallReferrerResult("VivoReferrer read error: resultBundle null");
19 | }
20 |
21 | String installReferrer = resultBundle.getString("install_referrer");
22 | if (TextUtils.isEmpty(installReferrer)) {
23 | return new VivoInstallReferrerResult("VivoReferrer read error: referrer string null");
24 | }
25 |
26 | long clickTime = resultBundle.getLong("referrer_click_timestamp_seconds");
27 | long installBeginTime = resultBundle.getLong("download_begin_timestamp_seconds");
28 | String installVersion = resultBundle.getString("install_version");
29 |
30 | VivoInstallReferrerDetails vivoInstallReferrerDetails = new VivoInstallReferrerDetails(
31 | installReferrer, clickTime, installBeginTime, installVersion);
32 | return new VivoInstallReferrerResult(vivoInstallReferrerDetails);
33 |
34 | } catch (Exception e) {
35 | String error = "VivoReferrer read error: " + e.getMessage();
36 | logger.info(error);
37 | return new VivoInstallReferrerResult(error);
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-vivo-referrer/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | AdjustPluginVivoReferrer
3 |
4 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-webbridge/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-webbridge/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-webbridge/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-webbridge/src/main/assets/adjust_event.js:
--------------------------------------------------------------------------------
1 | function AdjustEvent(eventToken) {
2 | this.eventToken = eventToken;
3 | this.revenue = null;
4 | this.currency = null;
5 | this.callbackParameters = [];
6 | this.partnerParameters = [];
7 | this.deduplicationId = null;
8 | this.callbackId = null;
9 | }
10 |
11 | AdjustEvent.prototype.setRevenue = function(revenue, currency) {
12 | this.revenue = revenue;
13 | this.currency = currency;
14 | };
15 |
16 | AdjustEvent.prototype.addCallbackParameter = function(key, value) {
17 | if (typeof key !== 'string' || typeof value !== 'string') {
18 | console.log('[Adjust]: Passed key or value is not of string type');
19 | return;
20 | }
21 | this.callbackParameters.push(key);
22 | this.callbackParameters.push(value);
23 | };
24 |
25 | AdjustEvent.prototype.addPartnerParameter = function(key, value) {
26 | if (typeof key !== 'string' || typeof value !== 'string') {
27 | console.log('[Adjust]: Passed key or value is not of string type');
28 | return;
29 | }
30 | this.partnerParameters.push(key);
31 | this.partnerParameters.push(value);
32 | };
33 |
34 | AdjustEvent.prototype.setDeduplicationId = function(deduplicationId) {
35 | this.deduplicationId = deduplicationId;
36 | };
37 |
38 | AdjustEvent.prototype.setCallbackId = function(callbackId) {
39 | this.callbackId = callbackId;
40 | };
41 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-webbridge/src/main/assets/adjust_store_info.js:
--------------------------------------------------------------------------------
1 | function AdjustStoreInfo(storeName) {
2 | this.storeName = storeName;
3 | this.storeAppId = null;
4 | }
5 |
6 | AdjustStoreInfo.prototype.setStoreAppId = function(storeAppId) {
7 | this.storeAppId = storeAppId;
8 | };
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-webbridge/src/main/assets/adjust_third_party_sharing.js:
--------------------------------------------------------------------------------
1 | function AdjustThirdPartySharing(isEnabled) {
2 | this.isEnabled = isEnabled;
3 | this.granularOptions = [];
4 | this.partnerSharingSettings = [];
5 | }
6 |
7 | AdjustThirdPartySharing.prototype.addGranularOption = function(partnerName, key, value) {
8 | if (typeof partnerName !== 'string' || typeof key !== 'string' || typeof value !== 'string') {
9 | console.log('[Adjust]: Passed partnerName, key or value is not of string type');
10 | return;
11 | }
12 | this.granularOptions.push(partnerName);
13 | this.granularOptions.push(key);
14 | this.granularOptions.push(value);
15 | };
16 |
17 | AdjustThirdPartySharing.prototype.addPartnerSharingSetting = function(partnerName, key, value) {
18 | if (typeof partnerName !== 'string' || typeof key !== 'string' || typeof value !== 'boolean') {
19 | console.log('[Adjust]: Passed partnerName or key is not of string type or value is not of boolean type');
20 | return;
21 | }
22 | this.partnerSharingSettings.push(partnerName);
23 | this.partnerSharingSettings.push(key);
24 | this.partnerSharingSettings.push(value);
25 | };
26 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-webbridge/src/main/java/com/adjust/sdk/webbridge/AdjustBridge.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.webbridge;
2 |
3 | import android.webkit.WebView;
4 | import android.app.Application;
5 |
6 | /**
7 | * Created by uerceg on 10/06/16.
8 | */
9 | public class AdjustBridge {
10 | private static AdjustBridgeInstance defaultInstance;
11 |
12 | // New builder gets dependencies
13 | public static synchronized AdjustBridgeInstance registerAndGetInstance(Application application, WebView webView) {
14 | if (defaultInstance == null) {
15 | defaultInstance = new AdjustBridgeInstance(application, webView);
16 | }
17 | return defaultInstance;
18 | }
19 |
20 | public static synchronized AdjustBridgeInstance getDefaultInstance() {
21 | if (defaultInstance == null) {
22 | defaultInstance = new AdjustBridgeInstance();
23 | }
24 | return defaultInstance;
25 | }
26 |
27 | public static void setWebView(WebView webView) {
28 | AdjustBridge.getDefaultInstance().setWebView(webView);
29 | }
30 |
31 | public static void setApplicationContext(Application application) {
32 | AdjustBridge.getDefaultInstance().setApplicationContext(application);
33 | }
34 |
35 | public static synchronized void unregister() {
36 | if (defaultInstance != null) {
37 | defaultInstance.unregister();
38 | }
39 | defaultInstance = null;
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-xiaomi-referrer/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-xiaomi-referrer/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-xiaomi-referrer/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-xiaomi-referrer/src/main/java/com/adjust/sdk/xiaomi/OnXiaomiInstallReferrerReadListener.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.xiaomi;
2 |
3 | public interface OnXiaomiInstallReferrerReadListener {
4 |
5 | void onXiaomiInstallReferrerRead(XiaomiInstallReferrerDetails referrerDetails);
6 | void onFail(String message);
7 | }
8 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-xiaomi-referrer/src/main/java/com/adjust/sdk/xiaomi/Util.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.xiaomi;
2 |
3 | import android.content.Context;
4 |
5 | import com.adjust.sdk.ILogger;
6 | import com.adjust.sdk.ReferrerDetails;
7 | import com.miui.referrer.api.GetAppsReferrerDetails;
8 |
9 | public class Util {
10 | public synchronized static ReferrerDetails getXiaomiInstallReferrerDetails(Context context, ILogger logger) {
11 | if (!AdjustXiaomiReferrer.shouldReadXiaomiReferrer) {
12 | return null;
13 | }
14 |
15 | logger.info("getXiaomiInstallReferrerDetails invoked");
16 |
17 | XiaomiInstallReferrerDetails xiaomiInstallReferrerDetails = XiaomiReferrerClient.getReferrer(context, logger, 3000).xiaomiInstallReferrerDetails;
18 | if (xiaomiInstallReferrerDetails == null) {
19 | return null;
20 | }
21 |
22 | return new ReferrerDetails(xiaomiInstallReferrerDetails.installReferrer,
23 | xiaomiInstallReferrerDetails.referrerClickTimestampSeconds,
24 | xiaomiInstallReferrerDetails.installBeginTimestampSeconds,
25 | xiaomiInstallReferrerDetails.referrerClickTimestampServerSeconds,
26 | xiaomiInstallReferrerDetails.installBeginTimestampServerSeconds,
27 | xiaomiInstallReferrerDetails.installVersion, null, null);
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-xiaomi-referrer/src/main/java/com/adjust/sdk/xiaomi/XiaomiInstallReferrerDetails.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.xiaomi;
2 |
3 | import com.miui.referrer.api.GetAppsReferrerDetails;
4 |
5 | public class XiaomiInstallReferrerDetails {
6 |
7 | public String installReferrer; // The referrer URL of the installed package.
8 | public long referrerClickTimestampSeconds; // The client-side timestamp, when the referrer click happened.
9 | public long installBeginTimestampSeconds; // The client-side timestamp, when app installation began.
10 | public long installBeginTimestampServerSeconds; // The server-side timestamp, when app installation began.
11 | public long referrerClickTimestampServerSeconds; // The server-side timestamp, when the referrer click happened.
12 | public String installVersion; // The app's version at the time when the app was first installed.
13 |
14 | public XiaomiInstallReferrerDetails(GetAppsReferrerDetails getAppsReferrerDetails) {
15 | this.installReferrer = getAppsReferrerDetails.getInstallReferrer();
16 | this.referrerClickTimestampSeconds = getAppsReferrerDetails.getReferrerClickTimestampSeconds();
17 | this.installBeginTimestampSeconds = getAppsReferrerDetails.getInstallBeginTimestampSeconds();
18 | this.installBeginTimestampServerSeconds = getAppsReferrerDetails.getInstallBeginTimestampServerSeconds();
19 | this.referrerClickTimestampServerSeconds = getAppsReferrerDetails.getReferrerClickTimestampServerSeconds();
20 | this.installVersion = getAppsReferrerDetails.getInstallVersion();
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-xiaomi-referrer/src/main/java/com/adjust/sdk/xiaomi/XiaomiInstallReferrerResult.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.xiaomi;
2 |
3 | public class XiaomiInstallReferrerResult {
4 |
5 | public String error;
6 | public XiaomiInstallReferrerDetails xiaomiInstallReferrerDetails;
7 |
8 | XiaomiInstallReferrerResult(XiaomiInstallReferrerDetails xiaomiInstallReferrerDetails) {
9 | this.xiaomiInstallReferrerDetails = xiaomiInstallReferrerDetails;
10 | }
11 |
12 | public XiaomiInstallReferrerResult(String error) {
13 | this.error = error;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Adjust/plugins/sdk-plugin-xiaomi-referrer/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | AdjustPluginXiaomiReferrer
3 |
4 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/adjust-proguard-rules.txt:
--------------------------------------------------------------------------------
1 | -keep public class com.adjust.sdk.** { *; }
2 | -keep class com.adjust.sdk.DeviceInfo**
3 | -keepclassmembers class com.adjust.sdk.DeviceInfo** {*;}
4 | -keep class com.google.android.gms.common.ConnectionResult {
5 | int SUCCESS;
6 | }
7 | -keep class com.google.android.gms.ads.identifier.AdvertisingIdClient {
8 | com.google.android.gms.ads.identifier.AdvertisingIdClient$Info getAdvertisingIdInfo(android.content.Context);
9 | }
10 | -keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info {
11 | java.lang.String getId();
12 | boolean isLimitAdTrackingEnabled();
13 | }
14 | -keep class dalvik.system.VMRuntime {
15 | java.lang.String getRuntime();
16 | }
17 | -keep class android.os.Build {
18 | java.lang.String[] SUPPORTED_ABIS;
19 | java.lang.String CPU_ABI;
20 | }
21 | -keep class android.content.res.Configuration {
22 | android.os.LocaleList getLocales();
23 | java.util.Locale locale;
24 | }
25 | -keep class android.os.LocaleList {
26 | java.util.Locale get(int);
27 | }
28 | -keep public class com.android.installreferrer.** { *; }
--------------------------------------------------------------------------------
/Adjust/sdk-core/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Users/pfms/Development/Android_SDK/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 | -keep public class com.adjust.sdk.** { *; }
19 | -keep class com.adjust.sdk.**
20 | -keepclassmembers class com.adjust.sdk.DeviceInfo** {*;}
21 | -keep class com.google.android.gms.common.ConnectionResult {
22 | int SUCCESS;
23 | }
24 | -keep class com.google.android.gms.ads.identifier.AdvertisingIdClient {
25 | com.google.android.gms.ads.identifier.AdvertisingIdClient$Info getAdvertisingIdInfo(android.content.Context);
26 | }
27 | -keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info {
28 | java.lang.String getId();
29 | boolean isLimitAdTrackingEnabled();
30 | }
31 | -keep public class com.android.installreferrer.** { *; }
32 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustDeeplink.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | import android.net.Uri;
4 |
5 | public class AdjustDeeplink {
6 | Uri url;
7 | Uri referrer;
8 |
9 | public AdjustDeeplink(Uri url) {
10 | this.url = url;
11 | }
12 |
13 | public boolean isValid() {
14 | if (url == null || url.toString().isEmpty()) {
15 | return false;
16 | }
17 | return true;
18 | }
19 |
20 | public void setReferrer(Uri referrer) {
21 | this.referrer = referrer;
22 | }
23 |
24 | public Uri getUrl() {
25 | return url;
26 | }
27 |
28 | public Uri getReferrer() {
29 | return referrer;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustEventFailure.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | import org.json.JSONObject;
4 |
5 | /**
6 | * Adjust SDK
7 | * Created by Pedro Silva (@nonelse) on 4th January 2016.
8 | * Copyright \u00a9 2016-2018 Adjust GmbH. All rights reserved.
9 | */
10 | public class AdjustEventFailure {
11 | public boolean willRetry;
12 | public String adid;
13 | public String message;
14 | public String timestamp;
15 | public String eventToken;
16 | public String callbackId;
17 | public JSONObject jsonResponse;
18 |
19 | @Override
20 | public String toString() {
21 | return Util.formatString("Event Failure msg:%s time:%s adid:%s event:%s cid:%s retry:%b json:%s",
22 | message,
23 | timestamp,
24 | adid,
25 | eventToken,
26 | callbackId,
27 | willRetry,
28 | jsonResponse);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustEventSuccess.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | import org.json.JSONObject;
4 |
5 | /**
6 | * Adjust SDK
7 | * Created by Pedro Silva (@nonelse) on 4th January 2016.
8 | * Copyright \u00a9 2016-2018 Adjust GmbH. All rights reserved.
9 | */
10 | public class AdjustEventSuccess {
11 | public String adid;
12 | public String message;
13 | public String timestamp;
14 | public String eventToken;
15 | public String callbackId;
16 | public JSONObject jsonResponse;
17 |
18 | @Override
19 | public String toString() {
20 | return Util.formatString("Event Success msg:%s time:%s adid:%s event:%s cid:%s json:%s",
21 | message,
22 | timestamp,
23 | adid,
24 | eventToken,
25 | callbackId,
26 | jsonResponse);
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustPlayStorePurchase.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | public class AdjustPlayStorePurchase {
4 | private final String productId;
5 | private final String purchaseToken;
6 |
7 | public AdjustPlayStorePurchase(final String productId, final String purchaseToken) {
8 | this.productId = productId;
9 | this.purchaseToken = purchaseToken;
10 | }
11 |
12 | String getProductId() {
13 | return productId;
14 | }
15 |
16 | String getPurchaseToken() {
17 | return purchaseToken;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustPreinstallReferrerReceiver.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | import android.content.BroadcastReceiver;
4 | import android.content.Context;
5 | import android.content.Intent;
6 | import android.util.Log;
7 |
8 | import static com.adjust.sdk.Constants.EXTRA_SYSTEM_INSTALLER_REFERRER;
9 |
10 | public class AdjustPreinstallReferrerReceiver extends BroadcastReceiver {
11 | @Override
12 | public void onReceive(Context context, Intent intent) {
13 | if (intent == null) {
14 | return;
15 | }
16 |
17 | String referrer = intent.getStringExtra(EXTRA_SYSTEM_INSTALLER_REFERRER);
18 | if (referrer == null) {
19 | return;
20 | }
21 |
22 | Adjust.getDefaultInstance().sendPreinstallReferrer(referrer, context);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustPurchaseVerificationResult.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | public class AdjustPurchaseVerificationResult {
4 | private final String verificationStatus;
5 | private final int code;
6 | private final String message;
7 |
8 | public AdjustPurchaseVerificationResult(final String verificationStatus,
9 | final int code,
10 | final String message) {
11 | this.verificationStatus = verificationStatus;
12 | this.code = code;
13 | this.message = message;
14 | }
15 |
16 | public String getVerificationStatus() {
17 | return verificationStatus;
18 | }
19 |
20 | public int getCode() {
21 | return code;
22 | }
23 |
24 | public String getMessage() {
25 | return message;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustReferrerReceiver.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | import android.content.BroadcastReceiver;
4 | import android.content.Context;
5 | import android.content.Intent;
6 |
7 |
8 | import static com.adjust.sdk.Constants.REFERRER;
9 |
10 | // support multiple BroadcastReceivers for the INSTALL_REFERRER:
11 | // https://appington.wordpress.com/2012/08/01/giving-credit-for-android-app-installs/
12 |
13 | public class AdjustReferrerReceiver extends BroadcastReceiver {
14 | @Override
15 | public void onReceive(Context context, Intent intent) {
16 | String rawReferrer = intent.getStringExtra(REFERRER);
17 |
18 | if (null == rawReferrer) {
19 | return;
20 | }
21 |
22 | Adjust.getDefaultInstance().sendReferrer(rawReferrer, context);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustSessionFailure.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | import org.json.JSONObject;
4 |
5 | /**
6 | * Adjust SDK
7 | * Created by Pedro Silva (@nonelse) on 16th February 2016.
8 | * Copyright \u00a9 2016-2018 Adjust GmbH. All rights reserved.
9 | */
10 | public class AdjustSessionFailure {
11 | public boolean willRetry;
12 | public String adid;
13 | public String message;
14 | public String timestamp;
15 | public JSONObject jsonResponse;
16 |
17 | @Override
18 | public String toString() {
19 | return Util.formatString("Session Failure msg:%s time:%s adid:%s retry:%b json:%s",
20 | message,
21 | timestamp,
22 | adid,
23 | willRetry,
24 | jsonResponse);
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustSessionSuccess.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | import org.json.JSONObject;
4 |
5 | /**
6 | * Adjust SDK
7 | * Created by Pedro Silva (@nonelse) on 16th February 2016.
8 | * Copyright \u00a9 2016-2018 Adjust GmbH. All rights reserved.
9 | */
10 | public class AdjustSessionSuccess {
11 | public String adid;
12 | public String message;
13 | public String timestamp;
14 | public JSONObject jsonResponse;
15 |
16 | @Override
17 | public String toString() {
18 | return Util.formatString("Session Success msg:%s time:%s adid:%s json:%s",
19 | message,
20 | timestamp,
21 | adid,
22 | jsonResponse);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustStoreInfo.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | public class AdjustStoreInfo {
4 | String storeName;
5 | String storeAppId;
6 |
7 | private static final ILogger logger = AdjustFactory.getLogger();
8 |
9 | public AdjustStoreInfo(String storeName) {
10 | if (!isValidStore(storeName)) {
11 | return;
12 | }
13 |
14 | this.storeName = storeName;
15 | }
16 |
17 | public void setStoreAppId(String storeAppId) {
18 | this.storeAppId = storeAppId;
19 | }
20 |
21 | private boolean isValidStore(final String storeName) {
22 | if (storeName == null) {
23 | logger.error("Missing store name");
24 | return false;
25 | }
26 | if (storeName.isEmpty()) {
27 | logger.error("Store name can't be empty");
28 | return false;
29 | }
30 | return true;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustTestOptions.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | import android.content.Context;
4 |
5 | /**
6 | * Created by nonelse on 08.01.2018
7 | */
8 |
9 | public class AdjustTestOptions {
10 | public Context context;
11 | public String baseUrl;
12 | public String gdprUrl;
13 | public String subscriptionUrl;
14 | public String purchaseVerificationUrl;
15 | public String basePath;
16 | public String gdprPath;
17 | public String subscriptionPath;
18 | public String purchaseVerificationPath;
19 | public Long timerIntervalInMilliseconds;
20 | public Long timerStartInMilliseconds;
21 | public Long sessionIntervalInMilliseconds;
22 | public Long subsessionIntervalInMilliseconds;
23 | public Boolean teardown;
24 | public Boolean tryInstallReferrer = false;
25 | public Boolean noBackoffWait;
26 | public Boolean ignoreSystemLifecycleBootstrap = true;
27 | }
28 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/AndroidIdUtil.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | import android.content.Context;
4 | import android.provider.Settings.Secure;
5 |
6 | public class AndroidIdUtil {
7 | public static String getAndroidId(final Context context) {
8 | return Secure.getString(context.getContentResolver(), Secure.ANDROID_ID);
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/AttributionResponseData.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | import android.net.Uri;
4 |
5 | /**
6 | * Created by pfms on 09/02/16.
7 | */
8 | public class AttributionResponseData extends ResponseData {
9 | public Uri deeplink;
10 | }
11 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/BackoffStrategy.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | /**
4 | * Created by pfms on 06/04/16.
5 | */
6 | public enum BackoffStrategy {
7 | LONG_WAIT(1, // min retries
8 | 2 * Constants.ONE_MINUTE, // milliseconds multiplier
9 | 24 * Constants.ONE_HOUR, // max wait time
10 | 0.5, // min jitter multiplier
11 | 1.0), // max jitter multiplier
12 |
13 | // 0.1-0.2, 0.2-0.4, 0.4-0.8, ... 1h
14 | SHORT_WAIT(1, // min retries
15 | 200, // milliseconds multiplier
16 | Constants.ONE_HOUR, // max wait time
17 | 0.5, // min jitter multiplier
18 | 1.0), // max jitter multiplier
19 |
20 | TEST_WAIT(1, // min retries
21 | 200, // milliseconds multiplier
22 | 1000, // max wait time
23 | 0.5, // min jitter multiplier
24 | 1.0), // max jitter multiplier
25 |
26 | NO_WAIT(100, // min retries
27 | 1, // milliseconds multiplier
28 | Constants.ONE_SECOND, // max wait time
29 | 1.0, // min jitter multiplier
30 | 1.0); // max jitter multiplier
31 |
32 | int minRetries; // retries before starting backoff
33 | long milliSecondMultiplier;
34 | long maxWait;
35 | double minRange;
36 | double maxRange;
37 |
38 | BackoffStrategy(int minRetries,
39 | long milliSecondMultiplier,
40 | long maxWait,
41 | double minRange,
42 | double maxRange) {
43 | this.minRetries = minRetries;
44 | this.milliSecondMultiplier = milliSecondMultiplier;
45 | this.maxWait = maxWait;
46 | this.minRange = minRange;
47 | this.maxRange = maxRange;
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/GlobalParameters.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | import java.util.HashMap;
4 | import java.util.Map;
5 |
6 | /**
7 | * Created by pfms on 29/07/2016.
8 | */
9 | public class GlobalParameters {
10 | Map callbackParameters;
11 | Map partnerParameters;
12 |
13 | @Override
14 | public boolean equals(Object other) {
15 | if (other == this) return true;
16 | if (other == null) return false;
17 | if (getClass() != other.getClass()) return false;
18 | GlobalParameters otherGlobalParameters = (GlobalParameters) other;
19 |
20 | if (!Util.equalObject(callbackParameters, otherGlobalParameters.callbackParameters)) return false;
21 | if (!Util.equalObject(partnerParameters, otherGlobalParameters.partnerParameters)) return false;
22 |
23 | return true;
24 | }
25 |
26 | @Override
27 | public int hashCode() {
28 | int hashCode = 17;
29 | hashCode = Util.hashObject(callbackParameters, hashCode);
30 | hashCode = Util.hashObject(partnerParameters, hashCode);
31 | return hashCode;
32 | }
33 |
34 | public GlobalParameters deepCopy() {
35 | GlobalParameters newGlobalParameters = new GlobalParameters();
36 | if (this.callbackParameters != null) {
37 | newGlobalParameters.callbackParameters = new HashMap(this.callbackParameters);
38 | }
39 | if (this.partnerParameters != null) {
40 | newGlobalParameters.partnerParameters = new HashMap(this.partnerParameters);
41 | }
42 | return newGlobalParameters;
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/IAttributionHandler.java:
--------------------------------------------------------------------------------
1 | //
2 | // IAttributionHandler.java
3 | // Adjust SDK
4 | //
5 | // Created by Pedro Silva (@nonelse) on 15th December 2014.
6 | // Copyright (c) 2014-2018 Adjust GmbH. All rights reserved.
7 | //
8 |
9 | package com.adjust.sdk;
10 |
11 | import com.adjust.sdk.network.IActivityPackageSender;
12 |
13 | public interface IAttributionHandler {
14 | void init(IActivityHandler activityHandler,
15 | boolean startsSending,
16 | IActivityPackageSender attributionHandlerActivityPackageSender);
17 | void checkSessionResponse(SessionResponseData sessionResponseData);
18 | void checkSdkClickResponse(SdkClickResponseData sdkClickResponseData);
19 | void pauseSending();
20 | void resumeSending();
21 | void getAttribution();
22 | void teardown();
23 | }
24 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/ILogger.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | public interface ILogger {
4 | void setLogLevel(LogLevel logLevel, boolean isProductionEnvironment);
5 |
6 | void setLogLevelString(String logLevelString, boolean isProductionEnvironment);
7 |
8 | void verbose(String message, Object... parameters);
9 |
10 | void debug(String message, Object... parameters);
11 |
12 | void info(String message, Object... parameters);
13 |
14 | void warn(String message, Object... parameters);
15 | void warnInProduction(String message, Object... parameters);
16 |
17 | void error(String message, Object... parameters);
18 |
19 | void Assert(String message, Object... parameters);
20 |
21 | void lockLogLevel();
22 | }
23 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/IPackageHandler.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | import android.content.Context;
4 |
5 | import com.adjust.sdk.network.IActivityPackageSender;
6 |
7 | public interface IPackageHandler {
8 | void init(IActivityHandler activityHandler,
9 | Context context,
10 | boolean startsSending,
11 | IActivityPackageSender packageHandlerActivityPackageSender);
12 |
13 | void addPackage(ActivityPackage activityPackage);
14 |
15 | void sendFirstPackage();
16 |
17 | void pauseSending();
18 |
19 | void resumeSending();
20 |
21 | void flush();
22 |
23 | void teardown();
24 | }
25 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/IPurchaseVerificationHandler.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | import com.adjust.sdk.network.IActivityPackageSender;
4 |
5 | /**
6 | * PurchaseVerificationHandler interface.
7 | *
8 | * @author Ugljesa Erceg (uerceg)
9 | * @since 30th May 2023
10 | */
11 |
12 | public interface IPurchaseVerificationHandler {
13 | /**
14 | * Initialise PurchaseVerificationHandler instance.
15 | *
16 | * @param activityHandler Activity handler instance.
17 | * @param startsSending Is sending paused?
18 | */
19 | void init(IActivityHandler activityHandler,
20 | boolean startsSending,
21 | IActivityPackageSender purchaseVerificationHandlerActivityPackageSender);
22 |
23 | /**
24 | * Pause sending from PurchaseVerificationHandler.
25 | */
26 | void pauseSending();
27 |
28 | /**
29 | * Resume sending from PurchaseVerificationHandler.
30 | */
31 | void resumeSending();
32 |
33 | /**
34 | * Send purchase_verification package.
35 | *
36 | * @param purchaseVerification purchase_verification package to be sent.
37 | */
38 | void sendPurchaseVerificationPackage(ActivityPackage purchaseVerification);
39 |
40 | /**
41 | * Teardown PurchaseVerificationHandler instance.
42 | */
43 | void teardown();
44 | }
45 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/IRunActivityHandler.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | /**
4 | * Created by pfms on 29/07/2016.
5 | */
6 | public interface IRunActivityHandler {
7 | void run(ActivityHandler activityHandler);
8 | }
9 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/ISdkClickHandler.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | import com.adjust.sdk.network.IActivityPackageSender;
4 |
5 | /**
6 | * SdkClickHandler interface.
7 | *
8 | * @author Pedro Silva (nonelse)
9 | * @since 31st March 2016
10 | */
11 |
12 | public interface ISdkClickHandler {
13 | /**
14 | * Initialise SdkClickHandler instance.
15 | *
16 | * @param activityHandler Activity handler instance.
17 | * @param startsSending Is sending paused?
18 | */
19 | void init(IActivityHandler activityHandler,
20 | boolean startsSending,
21 | IActivityPackageSender sdkClickHandlerActivityPackageSender);
22 |
23 | /**
24 | * Pause sending from SdkClickHandler.
25 | */
26 | void pauseSending();
27 |
28 | /**
29 | * Resume sending from SdkClickHandler.
30 | */
31 | void resumeSending();
32 |
33 | /**
34 | * Send sdk_click package.
35 | *
36 | * @param sdkClick sdk_click package to be sent.
37 | */
38 | void sendSdkClick(ActivityPackage sdkClick);
39 |
40 | /**
41 | * Send sdk_click packages made from all the persisted intent type referrers.
42 | */
43 | void sendReftagReferrers();
44 |
45 | /**
46 | * Send sdk_click package carrying preinstall info.
47 | */
48 | void sendPreinstallPayload(String payload, String location);
49 |
50 | /**
51 | * Teardown SdkClickHandler instance.
52 | */
53 | void teardown();
54 | }
55 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/InstallReferrerReadListener.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | public interface InstallReferrerReadListener {
4 | void onInstallReferrerRead(ReferrerDetails referrerDetails, String referrerApi);
5 | void onFail(String message);
6 |
7 | }
8 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/LogLevel.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | import android.util.Log;
4 |
5 | /**
6 | * Created by pfms on 11/03/15.
7 | */
8 | public enum LogLevel {
9 | VERBOSE(Log.VERBOSE), DEBUG(Log.DEBUG), INFO(Log.INFO), WARN(Log.WARN), ERROR(Log.ERROR), ASSERT(Log.ASSERT), SUPPRESS(8);
10 | final int androidLogLevel;
11 |
12 | LogLevel(final int androidLogLevel) {
13 | this.androidLogLevel = androidLogLevel;
14 | }
15 |
16 | public int getAndroidLogLevel() {
17 | return androidLogLevel;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/OnAdidReadListener.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | public interface OnAdidReadListener {
4 | void onAdidRead(String adid);
5 | }
6 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/OnAmazonAdIdReadListener.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | public interface OnAmazonAdIdReadListener {
4 |
5 | void onAmazonAdIdRead(String amazonAdId);
6 | }
7 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/OnAttributionChangedListener.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | public interface OnAttributionChangedListener {
4 | void onAttributionChanged(AdjustAttribution attribution);
5 | }
6 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/OnAttributionReadListener.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | public interface OnAttributionReadListener {
4 | void onAttributionRead(AdjustAttribution attribution);
5 | }
6 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/OnDeeplinkResolvedListener.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | public interface OnDeeplinkResolvedListener {
4 | void onDeeplinkResolved(String resolvedLink);
5 | }
6 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/OnDeferredDeeplinkResponseListener.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | import android.net.Uri;
4 |
5 | /**
6 | * Created by pfms on 22/03/16.
7 | */
8 | public interface OnDeferredDeeplinkResponseListener {
9 | boolean launchReceivedDeeplink(Uri deeplink);
10 | }
11 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/OnEventTrackingFailedListener.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | /**
4 | * Created by pfms on 04/01/16.
5 | */
6 | public interface OnEventTrackingFailedListener {
7 | void onEventTrackingFailed(AdjustEventFailure eventFailureResponseData);
8 | }
9 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/OnEventTrackingSucceededListener.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | /**
4 | * Created by pfms on 04/01/16.
5 | */
6 | public interface OnEventTrackingSucceededListener {
7 | void onEventTrackingSucceeded(AdjustEventSuccess eventSuccessResponseData);
8 | }
9 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/OnGoogleAdIdReadListener.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | public interface OnGoogleAdIdReadListener {
4 | void onGoogleAdIdRead(String googleAdId);
5 | }
6 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/OnGooglePlayInstallReferrerReadListener.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | public interface OnGooglePlayInstallReferrerReadListener {
4 | void onInstallReferrerRead(GooglePlayInstallReferrerDetails referrerDetails);
5 | void onFail(String message);
6 |
7 | }
8 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/OnIsEnabledListener.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | public interface OnIsEnabledListener {
4 | void onIsEnabledRead(boolean isEnabled);
5 | }
6 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/OnLastDeeplinkReadListener.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | import android.net.Uri;
4 |
5 | public interface OnLastDeeplinkReadListener {
6 | void onLastDeeplinkRead(Uri deeplink);
7 | }
8 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/OnPurchaseVerificationFinishedListener.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | public interface OnPurchaseVerificationFinishedListener {
4 | void onVerificationFinished(AdjustPurchaseVerificationResult result);
5 | }
6 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/OnSdkVersionReadListener.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | public interface OnSdkVersionReadListener {
4 | void onSdkVersionRead(String sdkVersion);
5 | }
6 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/OnSessionTrackingFailedListener.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | /**
4 | * Created by pfms on 16/02/16.
5 | */
6 | public interface OnSessionTrackingFailedListener {
7 | void onSessionTrackingFailed(AdjustSessionFailure failureResponseData);
8 | }
9 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/OnSessionTrackingSucceededListener.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | /**
4 | * Created by pfms on 16/02/16.
5 | */
6 | public interface OnSessionTrackingSucceededListener {
7 | void onSessionTrackingSucceeded(AdjustSessionSuccess sessionSuccessResponseData);
8 | }
9 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/PurchaseVerificationResponseData.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | /**
4 | * Created by uerceg on 30.05.23.
5 | */
6 |
7 | public class PurchaseVerificationResponseData extends ResponseData {
8 | }
9 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/SdkClickResponseData.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | /**
4 | * Created by nonelse on 24.04.17.
5 | */
6 |
7 | public class SdkClickResponseData extends ResponseData {
8 | boolean isInstallReferrer;
9 | long clickTime;
10 | long installBegin;
11 | String installReferrer;
12 | long clickTimeServer;
13 | long installBeginServer;
14 | String installVersion;
15 | Boolean googlePlayInstant;
16 | Boolean isClick;
17 | String referrerApi;
18 | }
19 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/StoreInfoUtil.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | import android.content.Context;
4 | import android.content.pm.ApplicationInfo;
5 | import android.content.pm.InstallSourceInfo;
6 | import android.content.pm.PackageManager;
7 | import android.os.Build;
8 | import android.os.Bundle;
9 |
10 | public class StoreInfoUtil {
11 | public static String getStoreIdFromSystem(final Context context) {
12 | try {
13 | PackageManager packageManager = context.getPackageManager();
14 | String packageName = context.getPackageName();
15 |
16 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
17 | InstallSourceInfo installSourceInfo = packageManager.getInstallSourceInfo(packageName);
18 | return installSourceInfo.getInstallingPackageName();
19 | } else {
20 | return packageManager.getInstallerPackageName(packageName);
21 | }
22 | } catch (Exception e) {
23 | return null;
24 | }
25 | }
26 |
27 | public static AdjustStoreInfo getStoreInfoFromClient(final AdjustConfig adjustConfig, final Context context) {
28 | try {
29 | ApplicationInfo applicationInfo = context.getPackageManager().getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
30 | Bundle metaData = applicationInfo.metaData;
31 | if (metaData == null) {
32 | return adjustConfig.storeInfo;
33 | }
34 |
35 | String storeName = metaData.getString("ADJUST_STORE_NAME");
36 | if (storeName == null || storeName.isEmpty()) {
37 | return adjustConfig.storeInfo;
38 | }
39 |
40 | String storeAppId = metaData.getString("ADJUST_STORE_APP_ID");
41 |
42 | AdjustStoreInfo storeInfo = new AdjustStoreInfo(storeName);
43 | storeInfo.setStoreAppId(storeAppId);
44 | return storeInfo;
45 |
46 | } catch (Exception e) {
47 | return adjustConfig.storeInfo;
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/SystemLifecycleContentProvider.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | import android.content.ContentProvider;
4 | import android.content.ContentValues;
5 | import android.database.Cursor;
6 | import android.net.Uri;
7 |
8 | import androidx.annotation.NonNull;
9 | import androidx.annotation.Nullable;
10 |
11 | public class SystemLifecycleContentProvider extends ContentProvider {
12 | // region ContentProvider
13 | @Override public boolean onCreate() {
14 | SystemLifecycle.getSingletonInstance().
15 | registerActivityLifecycleCallbacks(getContext());
16 |
17 | return false;
18 | }
19 |
20 | @Nullable @Override public Cursor query(@NonNull final Uri uri,
21 | @Nullable final String[] projection,
22 | @Nullable final String selection,
23 | @Nullable final String[] selectionArgs,
24 | @Nullable final String sortOrder)
25 | {
26 | return null;
27 | }
28 |
29 | @Nullable @Override public String getType(@NonNull final Uri uri) {
30 | return null;
31 | }
32 |
33 | @Nullable @Override
34 | public Uri insert(@NonNull final Uri uri, @Nullable final ContentValues values) {
35 | return null;
36 | }
37 |
38 | @Override public int delete(@NonNull final Uri uri,
39 | @Nullable final String selection,
40 | @Nullable final String[] selectionArgs)
41 | {
42 | return 0;
43 | }
44 |
45 | @Override public int update(@NonNull final Uri uri,
46 | @Nullable final ContentValues values,
47 | @Nullable final String selection,
48 | @Nullable final String[] selectionArgs)
49 | {
50 | return 0;
51 | }
52 | // endregion
53 | }
54 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/TrackingState.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk;
2 |
3 | public enum TrackingState {
4 | OPTED_OUT(1);
5 |
6 | private int value;
7 |
8 | TrackingState(int value) {
9 | this.value = value;
10 | }
11 |
12 | public int getValue() {
13 | return this.value;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/network/ErrorCodes.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.network;
2 |
3 | public interface ErrorCodes {
4 | int NULL_JSON_RESPONSE = 1000;
5 | int SERVER_RETRY_IN = 1001;
6 | int UNSUPPORTED_ENCODING_EXCEPTION = 1002;
7 | int MALFORMED_URL_EXCEPTION = 1003;
8 | int PROTOCOL_EXCEPTION = 1004;
9 | int SOCKET_TIMEOUT_EXCEPTION = 1005;
10 | int SSL_HANDSHAKE_EXCEPTION = 1006;
11 | int IO_EXCEPTION = 1007;
12 | int THROWABLE = 1100;
13 | }
14 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/network/IActivityPackageSender.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.network;
2 |
3 | import com.adjust.sdk.ActivityPackage;
4 | import com.adjust.sdk.ResponseData;
5 |
6 | import java.util.Map;
7 |
8 | public interface IActivityPackageSender {
9 | interface ResponseDataCallbackSubscriber {
10 | void onResponseDataCallback(ResponseData responseData);
11 | }
12 |
13 | void sendActivityPackage(ActivityPackage activityPackage,
14 | Map sendingParameters,
15 | ResponseDataCallbackSubscriber responseCallback);
16 |
17 | ResponseData sendActivityPackageSync(ActivityPackage activityPackage,
18 | Map sendingParameters);
19 | }
20 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/scheduler/AsyncTaskExecutor.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.scheduler;
2 |
3 | import android.os.Handler;
4 | import android.os.Looper;
5 |
6 | import java.util.concurrent.ExecutorService;
7 | import java.util.concurrent.Executors;
8 |
9 | public abstract class AsyncTaskExecutor {
10 |
11 | protected abstract Result doInBackground(Params[] params);
12 |
13 | protected void onPreExecute() { }
14 |
15 | protected void onPostExecute(Result result) { }
16 |
17 | @SafeVarargs
18 | public final AsyncTaskExecutor execute(final Params ... params) {
19 | onPreExecute();
20 |
21 | final Handler handler = new Handler(Looper.getMainLooper());
22 | ExecutorService executorService = Executors.newSingleThreadExecutor();
23 | executorService.execute(new Runnable() {
24 | @Override
25 | public void run() {
26 | final Result result = doInBackground(params);
27 | handler.post(new Runnable() {
28 | @Override
29 | public void run() {
30 | onPostExecute(result);
31 | }
32 | });
33 | }
34 | });
35 |
36 | return this;
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/scheduler/FutureScheduler.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.scheduler;
2 |
3 | import java.util.concurrent.Callable;
4 | import java.util.concurrent.ScheduledFuture;
5 |
6 | /**
7 | * Created by nonelse on 30.05.2018
8 | */
9 | public interface FutureScheduler {
10 | ScheduledFuture> scheduleFuture(Runnable command, long millisecondDelay);
11 | ScheduledFuture> scheduleFutureWithFixedDelay(Runnable command,
12 | long initialMillisecondDelay,
13 | long millisecondDelay);
14 | ScheduledFuture scheduleFutureWithReturn(Callable callable, long millisecondDelay);
15 |
16 | void teardown();
17 | }
18 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/scheduler/RunnableWrapper.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.scheduler;
2 |
3 | import com.adjust.sdk.AdjustFactory;
4 |
5 | public class RunnableWrapper implements Runnable {
6 | private Runnable runnable;
7 |
8 | RunnableWrapper(Runnable runnable) {
9 | this.runnable = runnable;
10 | }
11 |
12 | @Override
13 | public void run() {
14 | try {
15 | runnable.run();
16 | } catch (Throwable t) {
17 | AdjustFactory.getLogger().error("Runnable error [%s] of type [%s]",
18 | t.getMessage(), t.getClass().getCanonicalName());
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/scheduler/ThreadExecutor.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.scheduler;
2 |
3 | import java.util.concurrent.Callable;
4 | import java.util.concurrent.Future;
5 |
6 | /**
7 | * Created by nonelse on 12.09.17.
8 | */
9 |
10 | public interface ThreadExecutor {
11 | void submit(Runnable task);
12 | void teardown();
13 | }
14 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/scheduler/ThreadFactoryWrapper.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.scheduler;
2 |
3 | import android.os.Process;
4 |
5 | import com.adjust.sdk.AdjustFactory;
6 | import com.adjust.sdk.Constants;
7 |
8 | import java.util.concurrent.Executors;
9 | import java.util.concurrent.ThreadFactory;
10 |
11 | public class ThreadFactoryWrapper implements ThreadFactory {
12 | private String source;
13 |
14 | public ThreadFactoryWrapper(String source) {
15 | this.source = source;
16 | }
17 |
18 | @Override
19 | public Thread newThread(Runnable runnable) {
20 | Thread thread = Executors.defaultThreadFactory().newThread(runnable);
21 |
22 | thread.setPriority(Process.THREAD_PRIORITY_BACKGROUND + Process.THREAD_PRIORITY_MORE_FAVORABLE);
23 | thread.setName(Constants.THREAD_PREFIX + thread.getName() + "-" + source);
24 | thread.setDaemon(true);
25 |
26 | thread.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
27 | @Override
28 | public void uncaughtException(Thread th, Throwable tr) {
29 | AdjustFactory.getLogger().error("Thread [%s] with error [%s]",
30 | th.getName(), tr.getMessage());
31 | }
32 | });
33 |
34 | return thread;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/scheduler/ThreadScheduler.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.scheduler;
2 |
3 | public interface ThreadScheduler extends ThreadExecutor {
4 | void schedule(Runnable task, long millisecondsDelay);
5 | }
6 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/java/com/adjust/sdk/scheduler/TimerOnce.java:
--------------------------------------------------------------------------------
1 | package com.adjust.sdk.scheduler;
2 |
3 | import com.adjust.sdk.AdjustFactory;
4 | import com.adjust.sdk.ILogger;
5 | import com.adjust.sdk.Util;
6 |
7 | import java.util.concurrent.ScheduledFuture;
8 | import java.util.concurrent.TimeUnit;
9 |
10 | /**
11 | * Created by pfms on 08/05/15.
12 | */
13 | public class TimerOnce {
14 | private FutureScheduler scheduler;
15 |
16 | private ScheduledFuture waitingTask;
17 | private String name;
18 | private Runnable command;
19 | private ILogger logger;
20 |
21 | public TimerOnce(Runnable command, String name) {
22 | this.name = name;
23 | this.scheduler = new SingleThreadFutureScheduler(name, true);
24 | this.command = command;
25 | this.logger = AdjustFactory.getLogger();
26 | }
27 |
28 | public void startIn(long fireIn) {
29 | // cancel previous
30 | cancel(false);
31 |
32 | String fireInSeconds = Util.SecondsDisplayFormat.format(fireIn / 1000.0);
33 |
34 | logger.verbose("%s starting. Launching in %s seconds", name, fireInSeconds);
35 |
36 | waitingTask = scheduler.scheduleFuture(new Runnable() {
37 | @Override
38 | public void run() {
39 | logger.verbose("%s fired", name);
40 | command.run();
41 | waitingTask = null;
42 | }
43 | }, fireIn);
44 | }
45 |
46 | public long getFireIn() {
47 | if (waitingTask == null) {
48 | return 0;
49 | }
50 | return waitingTask.getDelay(TimeUnit.MILLISECONDS);
51 | }
52 |
53 | private void cancel(boolean mayInterruptIfRunning) {
54 | if (waitingTask != null) {
55 | waitingTask.cancel(mayInterruptIfRunning);
56 | }
57 | waitingTask = null;
58 |
59 | logger.verbose("%s canceled", name);
60 | }
61 |
62 | public void cancel() {
63 | cancel(false);
64 | }
65 |
66 | public void teardown() {
67 | cancel(true);
68 |
69 | if (scheduler != null) {
70 | scheduler.teardown();
71 | }
72 |
73 | scheduler = null;
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/Adjust/sdk-core/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/Adjust/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':sdk-core'
2 |
3 | include ':plugins:sdk-plugin-webbridge'
4 | include ':plugins:sdk-plugin-oaid'
5 | include ':plugins:sdk-plugin-imei'
6 | include ':plugins:sdk-plugin-xiaomi-referrer'
7 | include ':plugins:sdk-plugin-samsung-referrer'
8 | include ':plugins:sdk-plugin-vivo-referrer'
9 | include ':plugins:sdk-plugin-samsung-clouddev'
10 | include ':plugins:sdk-plugin-huawei-referrer'
11 | include ':plugins:sdk-plugin-meta-referrer'
12 |
13 | include ':tests:test-options'
14 | include ':tests:test-library'
15 | include ':tests:test-app-core'
16 | include ':tests:test-app-webbridge'
17 |
18 | include ':examples:example-app-java'
19 | include ':examples:example-app-kotlin'
20 | include ':examples:example-app-tv'
21 | include ':examples:example-app-webbridge'
22 | include ':examples:example-app-fbpixel'
23 | include ':examples:example-app-keyboard'
24 |
--------------------------------------------------------------------------------
/Adjust/tests/test-app-core/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/Adjust/tests/test-app-core/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | repositories {
4 | maven {
5 | url "https://oss.sonatype.org/content/repositories/snapshots/"
6 | }
7 | }
8 |
9 | android {
10 | compileSdk 34
11 |
12 | defaultConfig {
13 | applicationId "com.adjust.testapp"
14 | minSdkVersion 21
15 | targetSdkVersion 34
16 | versionCode 1
17 | versionName "1.0"
18 | }
19 |
20 | compileOptions {
21 | sourceCompatibility 1.8
22 | targetCompatibility 1.8
23 | }
24 | namespace 'com.adjust.testapp'
25 | }
26 |
27 | dependencies {
28 | implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
29 | implementation 'androidx.appcompat:appcompat:1.3.1'
30 | implementation "androidx.constraintlayout:constraintlayout:2.1.1"
31 | implementation 'com.google.android.gms:play-services-ads-identifier:17.1.0'
32 | implementation 'com.android.installreferrer:installreferrer:2.2'
33 | implementation 'com.adjust.signature:adjust-android-signature:3+'
34 |
35 | implementation project(':sdk-core')
36 | implementation project(':tests:test-options')
37 | implementation project(':tests:test-library')
38 | }
39 |
--------------------------------------------------------------------------------
/Adjust/tests/test-app-core/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/Adjust/tests/test-app-core/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
16 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/Adjust/tests/test-app-core/src/main/java/com/adjust/testapp/Command.java:
--------------------------------------------------------------------------------
1 | package com.adjust.testapp;
2 |
3 | import java.util.List;
4 | import java.util.Map;
5 |
6 | /**
7 | * Created by nonelse on 10.03.17.
8 | */
9 |
10 | public class Command {
11 | String className;
12 | String methodName;
13 | Map> parameters;
14 |
15 | public Command(String className, String methodName, Map> parameters) {
16 | this.className = className;
17 | this.methodName = methodName;
18 | this.parameters = parameters;
19 | }
20 |
21 | public String getFirstParameterValue(String parameterKey) {
22 | List parameterValues = this.parameters.get(parameterKey);
23 | if (parameterValues == null || parameterValues.size() == 0) {
24 | return null;
25 | }
26 | return parameterValues.get(0);
27 | }
28 |
29 | public boolean containsParameter(String parameterKey) {
30 | return this.parameters.get(parameterKey) != null;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Adjust/tests/test-app-core/src/main/java/com/adjust/testapp/CommandListener.java:
--------------------------------------------------------------------------------
1 | package com.adjust.testapp;
2 |
3 | import android.content.Context;
4 | import android.util.Log;
5 |
6 | import com.adjust.test.ICommandListener;
7 |
8 | import java.util.Arrays;
9 | import java.util.List;
10 | import java.util.Locale;
11 | import java.util.Map;
12 |
13 | /**
14 | * Created by nonelse on 09.03.17.
15 | */
16 |
17 | public class CommandListener implements ICommandListener {
18 | AdjustCommandExecutor adjustCommandExecutor;
19 |
20 | public CommandListener(Context context) {
21 | adjustCommandExecutor = new AdjustCommandExecutor(context);
22 | }
23 |
24 | @Override
25 | public void executeCommand(String className, String methodName, Map> parameters) {
26 | switch (className) {
27 | case "Adjust":
28 | adjustCommandExecutor.executeCommand(new Command(className, methodName, parameters));
29 | break;
30 | default:
31 | debug("Could not find %s class to execute", className);
32 | break;
33 | }
34 | }
35 |
36 | static void debug(String message, Object... parameters) {
37 | try {
38 | Log.d("TestApp", String.format(Locale.US, message, parameters));
39 | } catch (Exception e) {
40 | Log.e("TestApp", String.format(Locale.US, "Error formating log message: %s, with params: %s"
41 | , message, Arrays.toString(parameters)));
42 | }
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/Adjust/tests/test-app-core/src/main/java/com/adjust/testapp/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.adjust.testapp;
2 |
3 | import android.content.Intent;
4 | import android.net.Uri;
5 | import android.os.Bundle;
6 |
7 | import androidx.appcompat.app.AppCompatActivity;
8 |
9 | import com.adjust.sdk.Adjust;
10 | import com.adjust.sdk.AdjustDeeplink;
11 | import com.adjust.sdk.OnSdkVersionReadListener;
12 | import com.adjust.test.TestLibrary;
13 |
14 | public class MainActivity extends AppCompatActivity {
15 | public static TestLibrary testLibrary;
16 | private static final String baseIp = "10.0.2.2";
17 | public static final String baseUrl = "https://" + baseIp + ":8443";
18 | public static final String gdprUrl = "https://" + baseIp + ":8443";
19 | public static final String controlUrl = "ws://" + baseIp + ":1987";
20 |
21 | @Override
22 | protected void onCreate(Bundle savedInstanceState) {
23 | super.onCreate(savedInstanceState);
24 | setContentView(R.layout.activity_main);
25 |
26 | // Check if deferred deeplink was received
27 | Intent intent = getIntent();
28 | Uri deeplinkData = intent.getData();
29 | if (deeplinkData != null) {
30 | AdjustDeeplink adjustDeeplink = new AdjustDeeplink(deeplinkData);
31 | Adjust.processDeeplink(adjustDeeplink, getApplicationContext());
32 | return;
33 | }
34 |
35 | testLibrary = new TestLibrary(baseUrl, controlUrl, this.getApplicationContext(),
36 | new CommandListener(this.getApplicationContext()));
37 | // testLibrary.doNotExitAfterEnd();
38 |
39 | startTestSession();
40 | }
41 |
42 | private void startTestSession() {
43 | //testLibrary.addTestDirectory("app-secret");
44 | //testLibrary.addTest("Test_Event_Params");
45 |
46 | Adjust.getSdkVersion(new OnSdkVersionReadListener() {
47 | @Override
48 | public void onSdkVersionRead(String sdkVersion) {
49 | testLibrary.startTestSession(sdkVersion);
50 | }
51 | });
52 |
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/Adjust/tests/test-app-core/src/main/res/drawable-v24/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
12 |
13 |
19 |
22 |
25 |
26 |
27 |
28 |
34 |
35 |
--------------------------------------------------------------------------------
/Adjust/tests/test-app-core/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
--------------------------------------------------------------------------------
/Adjust/tests/test-app-core/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Adjust/tests/test-app-core/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Adjust/tests/test-app-core/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/tests/test-app-core/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/tests/test-app-core/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/tests/test-app-core/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/Adjust/tests/test-app-core/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/tests/test-app-core/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/tests/test-app-core/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/tests/test-app-core/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/Adjust/tests/test-app-core/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/tests/test-app-core/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/tests/test-app-core/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/tests/test-app-core/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/Adjust/tests/test-app-core/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/tests/test-app-core/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/tests/test-app-core/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/tests/test-app-core/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/Adjust/tests/test-app-core/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/tests/test-app-core/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/tests/test-app-core/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/tests/test-app-core/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/Adjust/tests/test-app-core/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #3F51B5
4 | #303F9F
5 | #FF4081
6 |
7 |
--------------------------------------------------------------------------------
/Adjust/tests/test-app-core/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | testapp
3 | Start Test Session
4 |
5 |
--------------------------------------------------------------------------------
/Adjust/tests/test-app-core/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Adjust/tests/test-app-webbridge/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/Adjust/tests/test-app-webbridge/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | repositories {
4 | maven {
5 | url "https://oss.sonatype.org/content/repositories/snapshots/"
6 | }
7 | }
8 |
9 | android {
10 | compileSdk 34
11 |
12 | defaultConfig {
13 | applicationId "com.example.testappwebbridge"
14 | minSdkVersion 21
15 | targetSdkVersion 34
16 | versionCode 1
17 | versionName "1.0"
18 | }
19 |
20 | buildTypes {
21 | release {
22 | minifyEnabled false
23 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
24 | }
25 | }
26 | namespace 'com.example.testappwebbridge'
27 | }
28 |
29 | dependencies {
30 | implementation fileTree(dir: 'libs', include: ['*.jar'])
31 | implementation 'androidx.appcompat:appcompat:1.3.1'
32 | implementation "androidx.constraintlayout:constraintlayout:2.1.1"
33 | implementation 'com.google.android.gms:play-services-ads-identifier:17.1.0'
34 | implementation 'com.android.installreferrer:installreferrer:2.2'
35 | implementation 'com.adjust.signature:adjust-android-signature:3+'
36 |
37 | implementation project(':sdk-core')
38 | implementation project(':plugins:sdk-plugin-webbridge')
39 | implementation project(':tests:test-options')
40 | implementation project(':tests:test-library')
41 | }
42 |
--------------------------------------------------------------------------------
/Adjust/tests/test-app-webbridge/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/Adjust/tests/test-app-webbridge/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
16 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/Adjust/tests/test-app-webbridge/src/main/assets/AdjustTestApp-WebView.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | Adjust Web View SDK Test
21 |
22 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/Adjust/tests/test-app-webbridge/src/main/assets/test_library.js:
--------------------------------------------------------------------------------
1 | var TestLibrary = {
2 | startTestSession: function(clientSdk) {
3 | if (TestLibraryBridge) {
4 | var baseUrl = "https://10.0.2.2:8443";
5 | var gdprUrl = "https://10.0.2.2:8443";
6 | TestLibrary.commandExecutor = new CommandExecutor(baseUrl, gdprUrl);
7 | TestLibraryBridge.startTestSession(clientSdk);
8 | }
9 | },
10 | addTestDirectory: function(testDir) {
11 | console.log('TestLibrary addTestDirectory: ' + testDir);
12 | if (TestLibraryBridge) {
13 | TestLibraryBridge.addTestDirectory(testDir);
14 | }
15 | },
16 | addTest: function(testName) {
17 | console.log('TestLibrary, addTest: ' + testName);
18 | if (TestLibraryBridge) {
19 | TestLibraryBridge.addTest(testName);
20 | }
21 | },
22 | addInfoToSend: function(key, value) {
23 | if (TestLibraryBridge) {
24 | TestLibraryBridge.addInfoToSend(key, value);
25 | }
26 | },
27 | sendInfoToServer: function(basePath) {
28 | if (TestLibraryBridge) {
29 | TestLibraryBridge.sendInfoToServer(basePath);
30 | }
31 | },
32 |
33 | adjust_commandRawJsonListenerCallback: function (order, commandJson) {
34 | var className = commandJson.className;
35 | var methodName = commandJson.functionName;
36 | var jsonParameters = commandJson.params;
37 | TestLibrary.commandExecutor.scheduleCommand(className, methodName, jsonParameters, order);
38 | },
39 |
40 | setTestOptions: function (testOptions) {
41 | var testOptionsString = JSON.stringify(testOptions);
42 | if (TestLibraryBridge) {
43 | TestLibraryBridge.setTestOptions(testOptionsString);
44 | }
45 | },
46 | };
47 |
--------------------------------------------------------------------------------
/Adjust/tests/test-app-webbridge/src/main/res/drawable-v24/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
12 |
13 |
19 |
22 |
25 |
26 |
27 |
28 |
34 |
35 |
--------------------------------------------------------------------------------
/Adjust/tests/test-app-webbridge/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
12 |
13 |
--------------------------------------------------------------------------------
/Adjust/tests/test-app-webbridge/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Adjust/tests/test-app-webbridge/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Adjust/tests/test-app-webbridge/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/tests/test-app-webbridge/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/tests/test-app-webbridge/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/tests/test-app-webbridge/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/Adjust/tests/test-app-webbridge/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/tests/test-app-webbridge/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/tests/test-app-webbridge/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/tests/test-app-webbridge/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/Adjust/tests/test-app-webbridge/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/tests/test-app-webbridge/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/tests/test-app-webbridge/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/tests/test-app-webbridge/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/Adjust/tests/test-app-webbridge/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/tests/test-app-webbridge/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/tests/test-app-webbridge/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/tests/test-app-webbridge/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/Adjust/tests/test-app-webbridge/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/tests/test-app-webbridge/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Adjust/tests/test-app-webbridge/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/tests/test-app-webbridge/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/Adjust/tests/test-app-webbridge/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #3F51B5
4 | #303F9F
5 | #FF4081
6 |
7 |
--------------------------------------------------------------------------------
/Adjust/tests/test-app-webbridge/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | TestAppWebBridge
3 |
4 |
--------------------------------------------------------------------------------
/Adjust/tests/test-app-webbridge/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Adjust/tests/test-library/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/Adjust/tests/test-library/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 |
3 | android {
4 | compileSdk 34
5 |
6 | defaultConfig {
7 | minSdkVersion 21
8 | targetSdkVersion 34
9 | }
10 | namespace 'com.adjust.test_library'
11 | }
12 |
13 | dependencies {
14 | implementation fileTree(dir: 'libs', include: ['*.jar'])
15 | implementation 'com.google.code.gson:gson:2.8.6'
16 | // Add web sockets
17 | implementation 'org.java-websocket:Java-WebSocket:1.5.1'
18 | }
19 |
20 | task adjustTestLibraryJarCleanDebug(type: Delete) {
21 | delete "build/intermediates/packaged-classes/debug/classes.jar"
22 | }
23 |
24 | task adjustTestLibraryJarCleanRelease(type: Delete) {
25 | delete "build/intermediates/packaged-classes/release/classes.jar"
26 | }
27 |
28 | task adjustTestLibraryAarRelease(type: Copy) {
29 | dependsOn 'assembleRelease'
30 |
31 | from('build/outputs/aar/')
32 | include 'test-library-release.aar'
33 | destinationDir file('build/libs/')
34 | }
35 |
36 | task adjustTestLibraryAarDebug(type: Copy) {
37 | dependsOn 'assembleDebug'
38 |
39 | from('build/outputs/aar/')
40 | include 'test-library-debug.aar'
41 | destinationDir file('build/libs/')
42 | }
43 |
44 | task adjustTestLibraryJarRelease(type: Jar) {
45 | dependsOn 'compileReleaseJavaWithJavac'
46 | from('build/intermediates/javac/release/classes/')
47 | archiveFileName = project.provider { "test-library-release.jar"}
48 | }
49 |
50 | task adjustTestLibraryJarDebug(type: Jar) {
51 | dependsOn 'compileDebugJavaWithJavac'
52 | from('build/intermediates/javac/debug/classes/')
53 | archiveFileName = project.provider { "test-library-debug.jar"}
54 | }
55 |
56 | adjustTestLibraryJarDebug.dependsOn(adjustTestLibraryJarCleanDebug, build)
57 | adjustTestLibraryJarRelease.dependsOn(adjustTestLibraryJarCleanRelease, build)
58 |
--------------------------------------------------------------------------------
/Adjust/tests/test-library/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/Adjust/tests/test-library/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/Adjust/tests/test-library/src/main/java/com/adjust/test/Constants.java:
--------------------------------------------------------------------------------
1 | package com.adjust.test;
2 |
3 | /**
4 | * Created by nonelse on 09.03.17.
5 | */
6 | public interface Constants {
7 | int ONE_SECOND = 1000;
8 | int ONE_MINUTE = 60 * ONE_SECOND;
9 | String ENCODING = "UTF-8";
10 |
11 | String LOGTAG = "TestLibrary";
12 | String TEST_LIBRARY_CLASSNAME = "TestLibrary";
13 | String WAIT_FOR_CONTROL = "control";
14 | String WAIT_FOR_SLEEP = "sleep";
15 | String TEST_SESSION_ID_HEADER = "Test-Session-Id";
16 |
17 | // web socket values
18 | String SIGNAL_INFO = "info";
19 | String SIGNAL_INIT_TEST_SESSION = "init-test-session";
20 | String SIGNAL_END_WAIT = "end-wait";
21 | String SIGNAL_CANCEL_CURRENT_TEST = "cancel-current-test";
22 | }
23 |
--------------------------------------------------------------------------------
/Adjust/tests/test-library/src/main/java/com/adjust/test/ICommandJsonListener.java:
--------------------------------------------------------------------------------
1 | package com.adjust.test;
2 |
3 | /**
4 | * Created by nonelse on 10.03.17.
5 | */
6 |
7 | public interface ICommandJsonListener {
8 | void executeCommand(String className, String methodName, String jsonParameters);
9 | }
10 |
--------------------------------------------------------------------------------
/Adjust/tests/test-library/src/main/java/com/adjust/test/ICommandListener.java:
--------------------------------------------------------------------------------
1 | package com.adjust.test;
2 |
3 | import java.util.List;
4 | import java.util.Map;
5 |
6 | /**
7 | * Created by nonelse on 09.03.17.
8 | */
9 |
10 | public interface ICommandListener {
11 | void executeCommand(String className, String methodName, Map> parameters);
12 | }
13 |
--------------------------------------------------------------------------------
/Adjust/tests/test-library/src/main/java/com/adjust/test/ICommandRawJsonListener.java:
--------------------------------------------------------------------------------
1 | package com.adjust.test;
2 |
3 | /**
4 | * Created by nonelse on 10.03.17.
5 | */
6 |
7 | public interface ICommandRawJsonListener {
8 | void executeCommand(String json);
9 | }
10 |
--------------------------------------------------------------------------------
/Adjust/tests/test-library/src/main/java/com/adjust/test/IOnExitListener.java:
--------------------------------------------------------------------------------
1 | package com.adjust.test;
2 |
3 | /**
4 | * Created by nonelse on 09.03.17.
5 | */
6 |
7 | public interface IOnExitListener {
8 | void onExit();
9 | }
10 |
--------------------------------------------------------------------------------
/Adjust/tests/test-library/src/main/java/com/adjust/test/TestCommand.java:
--------------------------------------------------------------------------------
1 | package com.adjust.test;
2 |
3 | import java.util.List;
4 | import java.util.Map;
5 |
6 | /**
7 | * Created by nonelse on 09.03.17.
8 | */
9 |
10 | public class TestCommand {
11 | public String className;
12 | public String functionName;
13 | public Map> params;
14 | }
15 |
--------------------------------------------------------------------------------
/Adjust/tests/test-library/src/main/java/com/adjust/test/Utils.java:
--------------------------------------------------------------------------------
1 | package com.adjust.test;
2 |
3 | import static com.adjust.test.Constants.LOGTAG;
4 |
5 | import android.util.Log;
6 |
7 | import java.util.Arrays;
8 | import java.util.Locale;
9 |
10 | /**
11 | * Created by nonelse on 11.03.17.
12 | */
13 |
14 | public class Utils {
15 | public static void debug(String message, Object... parameters) {
16 | try {
17 | Log.d(LOGTAG, String.format(Locale.US, message, parameters));
18 | } catch (Exception e) {
19 | Log.e(LOGTAG, String.format(Locale.US, "Error formating log message: %s, with params: %s"
20 | , message, Arrays.toString(parameters)));
21 | }
22 | }
23 |
24 | public static void error(String message, Object... parameters) {
25 | try {
26 | Log.e(LOGTAG, String.format(Locale.US, message, parameters));
27 | } catch (Exception e) {
28 | Log.e(LOGTAG, String.format(Locale.US, "Error formating log message: %s, with params: %s"
29 | , message, Arrays.toString(parameters)));
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Adjust/tests/test-library/src/main/java/com/adjust/test/ws/ControlSignal.java:
--------------------------------------------------------------------------------
1 | package com.adjust.test.ws;
2 |
3 | import static com.adjust.test.Constants.*;
4 |
5 | /**
6 | * com.adjust.test.ws
7 | * Created by 2beens on 08.02.19.
8 | */
9 | public class ControlSignal {
10 | private String type;
11 | private String value;
12 |
13 | ControlSignal(SignalType type) {
14 | this.type = getSignalTypeString(type);
15 | this.value = "n/a";
16 | }
17 |
18 | ControlSignal(SignalType type, String value) {
19 | this.type = getSignalTypeString(type);
20 | this.value = value;
21 | }
22 |
23 | public SignalType getType() {
24 | return getSignalTypeByString(type);
25 | }
26 |
27 | public String getValue() {
28 | return this.value;
29 | }
30 |
31 | private String getSignalTypeString(SignalType signalType) {
32 | switch (signalType) {
33 | case INFO: return SIGNAL_INFO;
34 | case INIT_TEST_SESSION: return SIGNAL_INIT_TEST_SESSION;
35 | case END_WAIT: return SIGNAL_END_WAIT;
36 | case CANCEL_CURRENT_TEST: return SIGNAL_CANCEL_CURRENT_TEST;
37 | default: return "unknown";
38 | }
39 | }
40 |
41 | private SignalType getSignalTypeByString(String signalType) {
42 | switch (signalType) {
43 | case SIGNAL_INFO: return SignalType.INFO;
44 | case SIGNAL_INIT_TEST_SESSION: return SignalType.INIT_TEST_SESSION;
45 | case SIGNAL_END_WAIT: return SignalType.END_WAIT;
46 | case SIGNAL_CANCEL_CURRENT_TEST: return SignalType.CANCEL_CURRENT_TEST;
47 | default: return SignalType.UNKNOWN;
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/Adjust/tests/test-library/src/main/java/com/adjust/test/ws/SignalType.java:
--------------------------------------------------------------------------------
1 | package com.adjust.test.ws;
2 |
3 | /**
4 | * com.adjust.test.ws
5 | * Created by 2beens on 08.02.19.
6 | */
7 | public enum SignalType {
8 | INFO,
9 | INIT_TEST_SESSION,
10 | END_WAIT,
11 | CANCEL_CURRENT_TEST,
12 | UNKNOWN
13 | }
14 |
--------------------------------------------------------------------------------
/Adjust/tests/test-library/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | testlibrary
3 |
4 |
--------------------------------------------------------------------------------
/Adjust/tests/test-options/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/Adjust/tests/test-options/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'com.android.library'
3 | }
4 |
5 | android {
6 | compileSdk 34
7 |
8 | defaultConfig {
9 | minSdkVersion 21
10 | targetSdkVersion 34
11 | }
12 | namespace 'com.adjust.test_options'
13 | }
14 |
15 | dependencies {
16 | implementation fileTree(dir: 'libs', include: ['*.jar'])
17 | implementation project(':sdk-core')
18 | }
--------------------------------------------------------------------------------
/Adjust/tests/test-options/consumer-rules.pro:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adjust/android_sdk/3b78c5a92760622259ebbfc9eb57a1b7b6bb47cc/Adjust/tests/test-options/consumer-rules.pro
--------------------------------------------------------------------------------
/Adjust/tests/test-options/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
--------------------------------------------------------------------------------
/Adjust/tests/test-options/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/MIT-LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2012-2017 adjust GmbH,
2 | http://www.adjust.com
3 |
4 | Permission is hereby granted, free of charge, to any person obtaining
5 | a copy of this software and associated documentation files (the
6 | "Software"), to deal in the Software without restriction, including
7 | without limitation the rights to use, copy, modify, merge, publish,
8 | distribute, sublicense, and/or sell copies of the Software, and to
9 | permit persons to whom the Software is furnished to do so, subject to
10 | the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be
13 | included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Adjust SDK for Android
2 |
3 | This is the [Adjust](https://adjust.com)™ SDK for Android. Documentation is available on our help center in the following languages:
4 |
5 | * [English][en-helpcenter]
6 | * [中文][zh-helpcenter]
7 | * [日本語][ja-helpcenter]
8 | * [한국어][ko-helpcenter]
9 |
10 | ## License
11 |
12 | Distributed under the [MIT license](https://opensource.org/licenses/MIT). See [`MIT-LICENSE`](MIT-LICENSE) for the full text.
13 |
14 | [en-helpcenter]: https://help.adjust.com/en/developer/android-sdk-documentation
15 | [zh-helpcenter]: https://help.adjust.com/zh/developer/android-sdk-documentation
16 | [ja-helpcenter]: https://help.adjust.com/ja/developer/android-sdk-documentation
17 | [ko-helpcenter]: https://help.adjust.com/ko/developer/android-sdk-documentation
18 |
--------------------------------------------------------------------------------
/VERSION:
--------------------------------------------------------------------------------
1 | 5.4.0
2 |
--------------------------------------------------------------------------------