| This project includes a simple implementation for all features of indigitall SDK for Android devices. Every feature is implemented in its own activity. |
|---|
| > > Click here to see examples |
What do you need for integration?
- An account to access into indigitall console. If you don't have it, please contact with us here.
- The next thing is to have a project associated with the application web (web browsers) and / or mobile (android, ios). See more details here.
It is important since the project contains the configuration data of your application, that is, the domain where your website is hosted, the safari or iOS certificates or the firebase key that android uses. It all depends on the platforms (web or app) that the project uses.
- You will need the App Key of the project, which is the key that our system uses to identify it, so it is unique for each project. You can find it in the administration console within the Configuration section in the Projects tab. You can see it in the following image, and to copy it, it is easy to click on the icon next to the key (App Key)
- A Server Key of Firebase
- A Server Key of HMS Push Kit (optional)
- Android Studio
- An Android device or emulator with Google Play services installed to run the app
Integration
This article shows the minimum development that must be done to start registering devices and being able to carry out the first push campaigns.
The Indigitall SDK is compatible with Google messaging services, through the Firebase platform and with the services of HMS or Huawei Mobile Services of Huawei.
You can watch the video tutorial, use our AI prompts to accelerate implementation, or follow the step-by-step instructions below:
🤖 Click to expand AI Integration Prompt (ChatGPT / Copilot / Claude)
Copy and paste this prompt into your AI assistant to accelerate your integration:
````text
# Indigitall Push SDK — Android Integration Guide
You are an Android integration assistant. Your job is to integrate the Indigitall Push SDK into this Android project step by step. Follow EVERY step in order. Do not skip steps. Ask each question one at a time and wait for the answer before proceeding.
> **⚠️ CRITICAL RULE:** Never change the project's existing `applicationId`, `namespace`, or package structure to match `google-services.json` / `agconnect-services.json`. Always use the exact class/package the user provides in STEP 1 (`PUSH_ACTIVITY`). If the config files reference a different package name, warn the user about the mismatch instead of renaming the project.
---
## STEP 1 — Gather configuration data
Ask the user these questions ONE BY ONE (wait for each answer before asking the next):
1. "What is your Indigitall **appKey**?" (example: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
2. "What is your **Firebase Sender ID**?" (found in your Firebase project settings → Cloud Messaging → Sender ID)
3. "Do you have a **private cloud URL** (nube privada)? If yes, provide the full URL. If not, say no."
4. "In which **Activity do you want to receive the push notifications**? Provide the fully qualified class name." (example: com.myapp.MainActivity — this Activity will be set in `setDefaultActivity` AND will receive the push intent extras)
5. "In which **class do you want to integrate the Indigitall init call**? If you don't have a specific one, say no and a new dedicated class will be created for it (NOT extending Application)."
6. "Do you want to enable **geolocation** for push targeting? (yes/no)"
7. "Do you want **HMS (Huawei Mobile Services) compatibility**? (yes/no)"
Store all answers as variables:
- `APPKEY`
- `SENDER_ID`
- `PRIVATE_CLOUD_URL` (null if not provided)
- `PUSH_ACTIVITY` (fully qualified Activity that receives the push — used in `setDefaultActivity` and for the intent handling in STEP 8)
- `INIT_CLASS` (fully qualified class where `Indigitall.init` must be placed — null if the user has no specific one)
- `USE_GEOLOCATION` (true/false)
- `USE_HMS` (true/false)
Rules for these variables:
- `PUSH_ACTIVITY` defines both the class used in `setDefaultActivity` AND the package where any new code must live. Do not use a different package than the one implied by `PUSH_ACTIVITY`.
- If `INIT_CLASS` is provided, the init code (STEP 7) MUST be placed exactly in that class — do not put it anywhere else.
- If `INIT_CLASS` is null, a new class (NOT extending `Application`) will be created in STEP 7 to hold the initialization.
---
## STEP 2 — Verify configuration files
1. Check that `google-services.json` exists in the `app/` module root directory (same level as the module's `build.gradle`). If it is missing or misplaced, warn the user:
> ⚠️ google-services.json not found in app/. Please download it from your Firebase Console (Project Settings → Your apps → google-services.json) and place it in the app/ folder.
2. If `USE_HMS` is true, check that `agconnect-services.json` exists in the `app/` module root directory. If missing, warn:
> ⚠️ agconnect-services.json not found in app/. Please download it from your Huawei AppGallery Connect console and place it in the app/ folder.
3. If the `package_name` inside `google-services.json` (or `agconnect-services.json`) does not match the project's existing `applicationId`, **do not** rename the project's `applicationId`/`namespace`/package folders. Instead, warn the user:
> ⚠️ The package name in google-services.json (`X`) does not match your project's applicationId (`Y`). Please regenerate the config file for the correct package, or confirm you want to proceed anyway.
Do not continue to the next step until the user confirms the files are in place.
---
## STEP 3 — Add the Indigitall Maven repository
In the project-level `settings.gradle` (or `build.gradle` if using the old format), add the following repository inside `dependencyResolutionManagement > repositories` (or `allprojects > repositories`):
```groovy
maven { url "https://repo1.maven.org/maven2" }
```
If it already uses Maven Central (`mavenCentral()`), this is already covered — skip it.
If `USE_HMS` is true, also ensure the Huawei Maven repository is present in both `pluginManagement > repositories` and `dependencyResolutionManagement > repositories`:
```kotlin
maven(url = "https://developer.huawei.com/repo/")
```
---
## STEP 4 — Add plugins (if HMS)
If `USE_HMS` is true, ensure the Huawei AGConnect plugin is applied in the app-level `build.gradle`:
**Groovy DSL:**
```groovy
apply plugin: 'com.huawei.agconnect'
```
**Kotlin DSL:**
```kotlin
id("com.huawei.agconnect")
```
And add the plugin classpath to the project-level `build.gradle`:
**Groovy:**
```groovy
classpath 'com.huawei.agconnect:agcp:1.9.1.301'
```
**Kotlin DSL:**
```kotlin
id("com.huawei.agconnect") version "1.9.1.301" apply false
```
---
## STEP 5 — Add SDK dependency in app/build.gradle
Open the app-level `build.gradle` (or `build.gradle.kts`) and add the Indigitall SDK dependency inside the `dependencies { }` block.
**If `USE_HMS` is false** (exclude HMS module to reduce APK size):
```kotlin
implementation("com.indigitall:android:7.0.+") {
exclude(group = "com.indigitall", module = "android-hms")
}
```
**If `USE_HMS` is true** (include full SDK with HMS support):
```kotlin
implementation("com.indigitall:android:7.0.+")
// REQUIRED when HMS is enabled — do not skip this dependency:
implementation("com.indigitall:android-hms:7.0.+") {
exclude(group = "com.indigitall", module = "android-commons")
}
```
Also add Google Firebase Messaging if not already present:
```kotlin
implementation("com.google.firebase:firebase-messaging:25.0.2")
```
If `USE_HMS` is true, also add Huawei Push:
```kotlin
implementation("com.huawei.hms:push:6.13.0.300")
```
If `USE_GEOLOCATION` is true, also add Google Location:
```kotlin
implementation("com.google.android.gms:play-services-location:21.3.0")
```
And if `USE_HMS` is true, also add Huawei Location:
```kotlin
implementation("com.huawei.hms:location:6.16.0.302")
```
### 5.1 — Sync Gradle before continuing
After adding the dependencies, **sync Gradle** to download them BEFORE adding any code (Steps 6–8):
- In Android Studio: click **Sync Project with Gradle Files**, or
- From the command line:
```bash
./gradlew --refresh-dependencies
```
Verify the sync finishes **without errors** (dependencies resolved correctly). Do not continue to the next step until the sync succeeds — otherwise the Indigitall classes used in Steps 7 and 8 will not be available.
---
## STEP 6 — Update AndroidManifest.xml
Open `app/src/main/AndroidManifest.xml` and make the following changes:
### 6.1 — Permissions (add inside `` before ``)
Always add:
```xml
```
If `USE_GEOLOCATION` is true, also add:
```xml
```
### 6.2 — Notification icon meta-data (add inside ``)
```xml
```
> If the project uses different resource names for color or launcher icon, adapt the values accordingly.
### 6.3 — Receivers and Services (add inside ``)
Always add:
```xml
```
If `USE_GEOLOCATION` is true, also add:
```xml
```
If `USE_HMS` is true, also add:
```xml
```
---
## STEP 7 — Add Indigitall.init call
Where to place the init code depends on `INIT_CLASS` from STEP 1:
- **If `INIT_CLASS` was provided:** add the initialization code exactly in that class (in its `onCreate()` if it is an `Application`/`Activity`, or in an appropriate init method otherwise). Do NOT place it anywhere else.
- **If `INIT_CLASS` is null:** create a NEW class that does NOT extend `Application`, in the same package as `PUSH_ACTIVITY`, that encapsulates the initialization. Then call it from the app's entry point (e.g. from `PUSH_ACTIVITY.onCreate()`). Example skeleton:
```kotlin
package
import android.content.Context
class IndigitallInitializer {
fun init(context: Context) {
// Indigitall initialization code goes here (see below)
}
}
```
> ⚠️ Use exactly these imports — do not guess or invent alternate package paths (e.g. never use `com.indigitall.android.push.*` for these classes):
```kotlin
import android.util.Log
import com.indigitall.android.Indigitall
import com.indigitall.android.push.Configuration
import com.indigitall.android.push.callbacks.InitCallBack
import com.indigitall.android.push.models.Device
import com.indigitall.android.push.models.Permission
import com.indigitall.android.commons.models.LogLevel
```
Use the values collected in Step 1 to fill in the placeholders:
```kotlin
// Build the configuration
val config = Configuration.Builder("APPKEY", "SENDER_ID")
.setDefaultActivity(PUSH_ACTIVITY)
.setLogDebug(LogLevel.DEBUG)
.setAutoRequestPermissionLocation(USE_GEOLOCATION) // true or false
// Only include next line if PRIVATE_CLOUD_URL is not null:
// .setUrlDeviceApi("PRIVATE_CLOUD_URL")
.build()
// Initialize the SDK
Indigitall.init(context, config, object : InitCallBack(context) {
override fun onIndigitallInitialized(
permissions: Array,
device: Device?
) {
super.onIndigitallInitialized(permissions, device)
Log.d("Indigitall", "SDK initialized. Push token: ${device?.pushToken}")
}
override fun onNewUserRegistered(device: Device?) {
super.onNewUserRegistered(device)
Log.d("Indigitall", "New user registered. Push token: ${device?.pushToken}")
}
override fun onErrorInitialized(
errorId: Int,
errorMessage: String?,
descriptionMessage: String?
) {
super.onErrorInitialized(errorId, errorMessage, descriptionMessage)
Log.e("Indigitall", "Init error [$errorId]: $errorMessage — $descriptionMessage")
}
})
```
Replace:
- `"APPKEY"` → the value from Step 1 (`APPKEY` variable)
- `"SENDER_ID"` → the value from Step 1 (`SENDER_ID` variable)
- `PUSH_ACTIVITY` → the fully qualified class name from Step 1 (e.g. `com.myapp.MainActivity::class.java.name`)
- `context` → the available `Context` (`this` if inside an `Application`/`Activity`, or the `Context` parameter of the new initializer class)
- `USE_GEOLOCATION` → `true` or `false` based on Step 1
- Uncomment `.setUrlDeviceApi(...)` only if `PRIVATE_CLOUD_URL` was provided
> ⚠️ Do not modify `applicationId`, `namespace`, package folder names, or move existing classes to a new package as part of this step.
---
## STEP 8 — Handle the push intent in PUSH_ACTIVITY
Open the `PUSH_ACTIVITY` class (the one from Step 1, question 4). Besides being set in `setDefaultActivity`, this Activity must read the push payload from the intent extras when the user taps a notification.
Add these imports:
```kotlin
import android.util.Log
import com.indigitall.android.push.models.Push
```
Add the following code in `onCreate()` (and in `onNewIntent()` if the Activity uses `launchMode="singleTop"`/`singleTask`):
```kotlin
intent.extras?.let { extras ->
when {
extras.containsKey(Push.EXTRA_PUSH) -> {
extras.getString(Push.EXTRA_PUSH).let {
val push = Push(
applicationContext,
it
)
Log.d("Indigitall push string", "${push?.toString()}")
// TODO: handle the push payload here (e.g. navigate based on push data)
}
}
else -> {
// Intent without push payload — normal launch
}
}
}
```
> ⚠️ Do not create a different Activity for this: the intent handling MUST go in `PUSH_ACTIVITY`, the same class passed to `setDefaultActivity`.
---
## STEP 9 — Final verification checklist
After all changes, verify:
- [ ] `google-services.json` is in `app/` directory, and its `package_name` matches the project's `applicationId` (or user was warned about mismatch)
- [ ] If HMS: `agconnect-services.json` is in `app/` directory
- [ ] `com.google.gms:google-services` plugin is applied in `build.gradle`
- [ ] If HMS: `com.huawei.agconnect` plugin is applied
- [ ] Indigitall dependency is in `app/build.gradle`
- [ ] If HMS: `com.indigitall:android-hms:7.0.+` (excluding `android-commons`) is in `app/build.gradle`
- [ ] Gradle sync completed without errors after adding the dependencies (Step 5.1)
- [ ] `POST_NOTIFICATIONS` permission is in manifest
- [ ] `BootReceiver` and `FirebaseMessagingService` are in manifest
- [ ] If geolocation: location permissions and `LocationReceiver` are in manifest
- [ ] If HMS: `HMSMessagingService` is in manifest
- [ ] `indigitall.color`, `indigitall.icon`, `indigitall.icon.monochrome` meta-data are in manifest
- [ ] `Indigitall.init(...)` is called in `INIT_CLASS` if provided, or in a new dedicated class NOT extending `Application` (invoked from the app's entry point), using the imports from Step 7 exactly
- [ ] `PUSH_ACTIVITY` is set in `setDefaultActivity` AND handles the intent extras with `Push.EXTRA_PUSH` (Step 8)
- [ ] Project's original `applicationId`/`namespace`/package structure was **not** changed
---
## STEP 10 — Done! 🎉
✅ Indigitall SDK integration is complete! Build and run your app to verify the push token appears in Logcat with the tag `Indigitall`.
For advanced features (topics, inbox, in-app messages, geofencing, custom events, etc.) check the official documentation:
👉 https://documentation.indigitall.com/reference/initial-sdk-setup-6
> ⚠️ AI can make mistakes. Always verify everything it does before treating it as valid.
````
Adding the SDK dependencies
The first thing to do is open the app / build.gradle file. In the screenshot you can see where to find this app / build.gradle file.
It is the build.gradle file found in the app folder, NOT the root of the project.
The library is available through the repository Maven Central. Maven is one of the most used library management tools in Android. To integrate the SDK of indigitall it is necessary to add the following dependencies:
- The AndroidX Library
- The location services of Google Play Services
- The Firebase message library
- The HMS message library
- The indigitall SDK
- SDK compatibility with Android is as of Android 5.0, or what is the same, the minSdkVersion of application's gradle field is 21, since it is from this version that it is compatible with TLS 1.2 certificates.
// build.gradle (project)
buildscript {
repositories {
...
mavenCentral()
maven {
url 'https://developer.huawei.com/repo/'
}
}
dependencies {
...
classpath 'com.google.gms:google-services:4.3.14'
classpath 'com.huawei.agconnect:agcp:1.9.1.302'
}
}
allprojects {
...
mavenCentral()
maven{
url 'https://developer.huawei.com/repo/'
}
}// build.gradle (app)
plugins {
id 'com.android.application'
...
id 'com.google.gms.google-services'
}
// if you use apply plugin
// apply plugin: 'com.google.gms.google-services'
android {
compileSdkVersion 34
defaultConfig {
minSdkVersion 21
targetSdkVersion 34
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'com.google.android.gms:play-services-location:21.0.1'
implementation 'com.google.firebase:firebase-messaging:23.1.0'
implementation 'com.huawei.hms:push:6.11.0.300'
implementation 'com.indigitall:android:5.14.+'
implementation 'com.indigitall:android-hms:5.14.+'{
exclude(group = "com.indigitall", module = "android-commons")
}
}If you are with a version of Kotlin less than 1.5.21, you will have to add the following implementation of coroutines in the gradle dependencies:
dependencies {
implementation 'androidx.appcompat:appcompat:1.1.0'
...
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.1'
}To find out what version of gradle you have configured in your project go to File->Project Structure->Project under Gradle Version.
Compatibility with the Gradle JDK changes with this version, in this case you must use version 11. To do this, go to the Android Studio->Build, Execution, Deplyment->Build Tools->Gradle menu and select Gradle JDK version 11.
The settings that were in allprojects->repositories have been moved to the settings.gradle file. So you have to modify the gradle of the project and the settings.gradle being as follows:
// build.gradle (project)
build script {
dependencies {
classpath 'com.google.gms:google-services:4.3.14'
classpath 'com.huawei.agconnect:agcp:1.9.1.302'
classpath 'com.android.tools.build:gradle:4.1.3'
}
}
//no repository field//settings.gradle
plugin management {
repositories {
gradlePluginPortal()
google() //if necessary
mavenCentral()
maven {url 'https://developer.huawei.com/repo/' }
}
}
dependency resolution management {
...
repositories {
google() //if necessary
mavenCentral()
maven {url 'https://developer.huawei.com/repo/' }
}
}Adding the indigitall services
These services are necessary so that our SDK can synchronize device data with indigitall's servers.
<manifest ...>
<!-- ... -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<!-- To obtain the location of the device -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>
<application ...>
<!-- ... -->
<!-- MANDATORY -->
<!-- So that when the user presses a push, the metric is saved -->
<service android:name="com.indigitall.android.push.services.StatisticService"/>
<!-- To start services when you restart the device -->
<receiver android:name="com.indigitall.android.push.receivers.BootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<!-- OPTIONAL -->
<!-- So that when the user clicks an InApp message, the metric is saved.
It is only necessary if you use the InApp message functionality -->
<service android:name="com.indigitall.android.inapp.services.StatisticInAppService" />
<!-- To obtain the location of the device.
It is only necessary if you are going to ask for location permission
to segment pushes by device location -->
<receiver android:name="com.indigitall.android.push.receivers.LocationReceiver">
<intent-filter>
<action android:name="LocationReceiver.Action.LOCATION_UPDATE" />
</intent-filter>
</receiver>
</application>
</manifest>- For further clarification on creating icons, we leave you this link to the Android documentation that may help you: Product icons
Adding Firebase services
Our SDK needs to integrate with your FCM (Firebase Cloud Messaging) project.
FCM makes the connection to the device in order to send it push notifications. This connection is established with the Push Token, an ephemeral token, unique and generated by Google for each device.
<manifest ...>
<!-- ... -->
<application ...>
<!-- ... -->
<service android:name="com.indigitall.android.push.services.FirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<!-- DEPRECATED - NOT ADD
<service android:name="com.indigitall.android.services.FirebaseInstanceIdService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
-->
</application>
</manifest>Adding HMS services
Warning: 11-07-24Since version 5.10.0. HMS Indigitall Module is independent of the SDK module, soindependent implementation must be added, as indicated in the previous section and below:
implementation("com.indigitall:android-hms:5.10.0"){<br />exclude(group = "com.indigitall", module = "android-commons")<br />}
On version 4.19.0 of our SDK, HMS services have been excluded because Google prevents any apps with HMS dependencies from being deployed to the PlayStore. As soon as HMS finds a fix, we'll re-publish, and independently, so it doesn't affect this again in the future.
New version 4.20.0 has been released with HMS included and solved this problem with push HMS library version: implementation("com.huawei.hms:push:6.3.0.304")
Our SDK needs to integrate with your HMS (Huawei Mobile Services) project in order to impact the latest Huawei terminals.
HMS makes the connection with the device to be able to send you push notifications. This connection is established with the Push Token, an ephemeral token, unique and generated by HMS for each device.
In order to impact Huawei devices with Harmony, you will need to perform the following steps:
- Add the HMSMessagingService service in the project manifest.
<manifest ...>
<!-- ... -->
<application ...>
<!-- ... -->
<service
android:name="com.indigitall.android.hms.services.HMSMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.huawei.push.action.MESSAGING_EVENT" />
</intent-filter>
</service>
</application>
</manifest>- Add the huawei plugin in the gradle of the application, remember that minSdkVersion that Huawei allows is 19:
//build.gradle (app)
plugins {
id 'com.huawei.agconnect'
}
// if you use apply plugin
// apply plugin: 'com.huawei.agconnect'
android {
...
defaultConfig {
minSdkVersion 21
}
...
dependencies {
...
implementation 'com.huawei.hms:push:6.11.0.300'
}
}- Add dependencies on gradle.project:
// build.gradle (project)
buildscript {
repositories {
...
mavenCentral()
maven {
url 'https://developer.huawei.com/repo/'
}
}
dependencies {
...
classpath 'com.google.gms:google-services:4.3.14'
classpath 'com.huawei.agconnect:agcp:1.9.1.302'
}
}
allprojects {
...
mavenCentral()
maven{
url 'https://developer.huawei.com/repo/'
}
}Huawei Devices with EMUI > 10
On Huawei devices running EMUI 11 or higher, push notifications are not available if _Google Mobile Services (GMS) _were installed via a third-party app.
Neither HMS nor FCM can generate a valid push token in this scenario.
Push notifications will not work.
⚠️ Developers should handle this case gracefully in the app.
Push permission after Android 13 (Api level 33 - Tiramisu)
Android 13 requires you to add the android.permission.POST_NOTIFICATIONS flag to the manifest:
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>and also override onRequestPermissionsResult in the Main Activity:
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<String>,
grantResults: IntArray
) {
Indigitall.onRequestPermissionsResult(this, requestCode, permissions, grantResults)
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
}Requesting POST_NOTIFICATION Permission
If you don’t want the SDK to request the permissions and you prefer to handle it yourself, to ensure our SDK can properly handle push notifications, the client app must request the POST_NOTIFICATION permission using a specific request code: 50001. This allows the SDK to identify the permission response correctly.
// Request POST_NOTIFICATION permission with the required request code
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
ActivityCompat.requestPermissions(
this,
new String[]{Manifest.permission.POST_NOTIFICATIONS},
50001 // Required by our SDK
);
}
⚠️ Important: Always use 50001 as the request code when requesting POST_NOTIFICATION permission. Using a different code may prevent our SDK from correctly detecting the user's response.
Exclude HMS Services
WarningThis exclusion only has to be done in versions prior to 5.10.0. Starting with this version, the SDK implementation does not contain Huawei or HMS services.
If you want to perform the integration without impacting Huawei devices, you have to remove the dependencies from the previous section and add the following code in the application's gradle, where indigitall implementation is:
implementation("com.indigitall:android:5.14.+") {
exclude(group = "com.indigitall", module = "android-hms")
}ProGuard Configuration
Applications that use ProGuard should include the following line in their ProGuard file to ensure proper library functionality:
-keepnames class com.indigitall.android.** { *; }Setting the notifications icon
This icon will be displayed in the top bar of the Android system and in the header of the pushes sent through your app.
It must be a monochrome icon, that is, the image must contain only one color and alpha.
We give you an example with our logo in monochrome:
Here we show you how your code should be in the AndroidManifest.xml (The icon has to be a png)
<manifest ...>
<!-- ... -->
<application ...>
<!-- ... -->
<!-- Resource for monochrome icon -->
<meta-data android:name="indigitall.icon" android:resource="@drawable/YOUR_MONOCHROME_ICON"/>
<!-- Resource for icon color -->
<meta-data android:name="indigitall.color" android:resource="@color/colorPrimary"/>
</application>
</manifest>For further clarification on creating icons, we leave you this link to the Android documentation that may help you: Product icons
