The SDK is available as an AAR (recommended) and JAR library. The library is available in the MavenCentral and GitHub repository.
Google implementation
Attention!
From the SDK version com.devtodev:android-analytics:'2.2.3' and above you need to add com.devtodev:android-google:'1.0.0'.
This framework encapsulates work with Google ads ID. When developing and publishing apps for kids COPPA, you don’t need com.devtodev:android-google. You can find more information about working with COPPA at the end of this guide.
Step 1. Declare repositories
In the Project build.gradle file, declare the mavenCentral repository:
repositories {//.. other repositories mavenCentral()}
Step 2. Add Gradle Build Dependencies
If you use Gradle for building apps specify the following dependencies in the application build.gradle file.
dependencies {// Requirementimplementation ("com.google.code.gson:gson:*.*.*")implementation ("com.google.android.gms:play-services-ads-identifier:*.*.*")// Starting from version 2.2.3 and above, it is requiredimplementation ("com.devtodev:android-google:*.*.*")// if you use AAR (recommended) or JAR downloaded from GitHub, please add:implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.aar"))))// or just add the dependency, get the latest version from// https://mvnrepository.com/artifact/com.devtodev/android-analyticsimplementation ("com.devtodev:android-analytics:*.*.*")// Optional (recommended)implementation ("com.android.installreferrer:installreferrer:*.*.*")}
dependencies {// Requirement implementation 'com.google.code.gson:gson:*.*.*' implementation 'com.google.android.gms:play-services-ads-identifier:*.*.*'// Starting from version 2.2.3 and above, it is required implementation 'com.devtodev:android-google:*.*.*'// if you use AAR (recommended) or JAR downloaded from GitHub, please add: implementation fileTree(dir: "libs", include: ["*.aar"]) // or just add the dependency, get the latest version from// https://mvnrepository.com/artifact/com.devtodev/android-analytics implementation 'com.devtodev:android-analytics:*.*.*'// Optional (recommended) implementation 'com.android.installreferrer:installreferrer:*.*.*'}
Peculiarities of working with dependencies
Working with Advertising ID with Android API level less than 26
android {
defaultConfig {
// Required when setting minSdkVersion to 20 or lower
multiDexEnabled = true
}
compileOptions {
// Flag to enable support for the new language APIs
coreLibraryDesugaringEnabled = true
// Sets Java compatibility to Java 8
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
// For AGP 7.4+
coreLibraryDesugaring ("com.android.tools:desugar_jdk_libs:2.0.3")
// For AGP 7.3
// coreLibraryDesugaring ("com.android.tools:desugar_jdk_libs:1.2.3")
// For AGP 4.0 to 7.2
// coreLibraryDesugaring ("com.android.tools:desugar_jdk_libs:1.1.9")
}
android {
defaultConfig {
// Required when setting minSdkVersion to 20 or lower
multiDexEnabled true
}
compileOptions {
// Flag to enable support for the new language APIs
coreLibraryDesugaringEnabled true
// Sets Java compatibility to Java 8
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
// For AGP 7.4+
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.3'
// For AGP 7.3
// coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.2.3'
// For AGP 4.0 to 7.2
// coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.9'
}
We also recommend AGP 8.0+ as it makes it easier to configure com.android.tools:desugar_jdk_libs
Huawei implementation
Step 1. Declare repositories
If you use Gradle for compiling apps, declare the following dependencies in the build.gradle file in the dependency block:
repositories {
//.. other repositories
mavenCentral()
maven { url 'https://developer.huawei.com/repo/' }
}
allprojects {
repositories {
//.. other repositories
mavenCentral()
// Configure the Maven repository address for the HMS Core SDK.
maven {url 'https://developer.huawei.com/repo/'}
}
}
Step 2. Add Gradle Build Dependencies
In the Project build.gradle file declare the agconnect plugin
In the application build.gradle file declare the following dependencies:
dependencies {
// Requirement
implementation ("com.google.code.gson:gson:*.*.*")
implementation ("com.huawei.agconnect:agconnect-core:*.*.*")
implementation ("com.huawei.hms:opendevice:*.*.*")
// Starting from version 2.2.3 and above, it is required
implementation ("com.devtodev.android-huawei:*.*.*")
implementation ("com.huawei.hms:ads-identifier:*.*.*")
// if you use AAR (recommended) or JAR downloaded from GitHub, please add:
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.aar"))))
// or just add the dependency, get the latest version from
// https://mvnrepository.com/artifact/com.devtodev/android-analytics
implementation ("com.devtodev:android-analytics:*.*.*")
}
dependencies {
// Requirement
implementation 'com.google.code.gson:gson:*.*.*'
implementation 'com.huawei.agconnect:agconnect-core:*.*.*'
implementation 'com.huawei.hms:ads-identifier:*.*.*'
implementation 'com.huawei.hms:opendevice:*.*.*'
// Starting from version 2.2.3 and above, it is required
implementation 'com.devtodev.android-huawei:*.*.*'
// if you use AAR (recommended) or JAR downloaded from GitHub, please add:
implementation fileTree(dir: "libs", include: ["*.aar"])
// or just add the dependency, get the latest version from
// https://mvnrepository.com/artifact/com.devtodev/android-analytics
implementation 'com.devtodev:android-analytics:*.*.*'
}
And add a plugin:
plugins {
//.. other plugins
id 'com.huawei.agconnect'
}
The com.devtodev.android-huawei framework works with OAID and ODID IDs. In case the OAID is undefined, we use the ODID. For both IDs to work correctly, take the following steps:
Create a project and an app in AppGallery. Open AppGalleryConnect → Project Settings.
Enter SHA-256 certificate in the App information section. Read more about certificate creation here.
After taking all the steps described above, open the ‘App information’ section and download agconnect-services.json. You need to place this file in the app folder (read more).
If during testing the app you see that OAID is unavailable and OAID throws errors, you need to first of all check that the tested build is signed with a certificate.
SDK Initialization
Use the following way to initialize the library in the first Activity onCreate() method:
class MainActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val analyticsConfiguration = DTDAnalyticsConfiguration()
analyticsConfiguration.logLevel = DTDLogLevel.Error
DTDAnalytics.initialize("App ID", analyticsConfiguration, context = this)
}
}
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DTDAnalyticsConfiguration configuration = new DTDAnalyticsConfiguration();
configuration.setLogLevel(DTDLogLevel.Error);
DTDAnalytics.INSTANCE.initialize("App ID", configuration, context);
}
}
You can find the App ID in the settings of the respective app in devtodev (Settings → SDK → Integration → Credentials).
config - is a DTDAnalyticsConfiguration object instance that is used for specifying additional properties during initialization.
DTDAnalyticsConfiguration
Parameter
Type
Description
currentLevel
Integer
The player level at the moment of devtodev SDK initialization. It’s optional but we recommend using it for improving data accuracy.
userId
String
A custom user ID assigned by the developer. In the case of default calculation by device IDs, the identifier can be used for searching users in devtodev. In case the project uses calculation by user IDs, the parameter is mandatory because it becomes the principal calculation ID in devtodev.
trackingAvailability
DTDTrackingStatus (enum)
The property allows or disallows devtodev tracking of the user. By default, it is set to DTDTrackingStatus.enable. SDK stores the previously assigned value. Pass DTDTrackingStatus.disable if the user opted out of tracking in line with GDPR.
logLevel
DTDLogLevel (enum)
The level of logging the SDK activity. The DTDLogLevel.no value is used by default. For troubleshooting during integration it is recommended to set it to DTDLogLevel.debug, and either switch it off DTDLogLevel.no. Use DTDLogLevel.no in the release version.
Add the following strings to the proguard-rules.pro file of your app
-keep class com.devtodev.** { *; }
-dontwarn com.devtodev.**
// For Google Mobile Services
-keep class com.google.android.gms.** { *; }
// For Huawei Mobile Services
-keep class com.huawei.hms.**{*;}
Apps targeted at children
When developing and publishing apps targeted at children under 13 years old, you need to ensure special conditions for data processing. Any mobile app aimed at children or intended for users in a region with strict regulations on child online protection, must comply with current laws.