# Install Android Sdk

Use Growlytics Android SDK to track, analyze and engage user from native android apps.

Follow the guidelines to install the Growlytics Android SDK, track events, and see the event data within the Growlytics dashboard.

## Step 1: Add Growlytics SDK to your project

Add `growlytics-android-sdk` dependency to your project.

For enable FCM support, you will need to add follwoing dependencies in your application’s `build.gradle` file. You will also have to add the FCM generated google-services.json file to your project.

{% tabs %}
{% tab title="build.grdle" %}

```gradle

{
    dependencies {
        implementation 'com.growlytics.android.sdk:growlytic-android-sdk:1.0.4'
        implementation 'com.google.firebase:firebase-messaging:17.3.3'
        implementation 'com.google.android.gms:play-services-base:16.0.1'
        implementation 'com.android.support:support-v4:28.0.0'
    }
    
    // at the end of the build.gradle file
    apply plugin: 'com.google.gms.google-services'
}
```

{% endtab %}
{% endtabs %}

Once you have added dependencies on your `build.gradle` file, sync your project by clicking on `Tools > Android > Sync Project With Gradle Files` button.

## Step 2: Configure Growlytics credentials in AndroidManifest.xml

To  send data to your Growlytics account, you will need to add your Growlytics account's credentials in the `AndroidManifest.xml` file in your application.

As shown in snippet below, add your Growlytics project id and api key to your `AndroidManifest.xml`, within the  tags.

{% tabs %}
{% tab title="AndroidManifest.xml" %}

```markup
<!-- Growlytics Project Id -->
<meta-data
    android:name="GROWLYTICS_PROJECT_ID"
    android:value="Growlytics Project Id"/>

<!-- Growlytics API Key -->
<meta-data
    android:name="GROWLYTICS_API_KEY"
    android:value="Growlytics Project Api Key"/>
    
<!-- Growlytics Project Env - Used for debugging integration -->
<meta-data
    android:name="GROWLYTICS_ENV"
    android:value="production"/>

<!-- Growlytics Enable/Disable - Enbled by default if not provided-->
<meta-data
    android:name="GROWLYTICS_DISABLED"
    android:value="1"/>

```

{% endtab %}
{% endtabs %}

## Step 3: Add required permissions in AndroidManifest.xml

At the root of your manifest file inside \<manifest> file, add following permissions.

{% tabs %}
{% tab title="AndroidManifest.xml" %}

```markup
<!-- Required to allow the app to send events and user profile information -->
<uses-permission android:name="android.permission.INTERNET"/>

<!-- Recommended so that Growlytics knows when to attempt a network call -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
```

{% endtab %}
{% endtabs %}

## Step 4: Enable Tracking by Adding Permissions

In your AndroidManifest.xml file, add the following snippet within the  tags.

```java
<application
    android:label="@string/app_name"
    android:icon="@drawable/ic_launcher"
    android:name="com.growlytics.android.sdk.Application">
```

{% hint style="warning" %}
Make sure you have specified `android:name` as `com.growlytics.android.sdk.Application.`
{% endhint %}

## Step 5: Build & Run Your Application

Build and run your application.

Open your Growlytics dashboard. Goto People > Customers. If you successfully integrated the Growlytics SDK, you will see a new customer there.

## Step 6: Setup Event Tracking

An Event is an action that user  takes in your mobile or web app. Growlytics records the event on the User Profile, using an Event Name and optional associated key:value-based Event Properties. You can then segment users, target and personalize messaging based on both the Event Name and specific Event Properties.

```java
// Prepare Attributes
Map<String, Object> eventDetails = new HashMap<>();
eventDetails.put("Product Name", "Mens Polo T-shirt with Collor, Yellow");
eventDetails.put("Category", "Mens Accessories");
eventDetails.put("Sub Category", "Polo T-shirts");
eventDetails.put("Price", 999.99);
eventDetails.put("Date", new java.util.Date());

// Put them in growlytics user profile
Analytics.getInstance(this).track("Product Viewed", eventDetails);
```

## Step 7: User Profile Information

&#x20;A User is automatically created in Growlytics platrorm when user opens the app first time.

Initially, there are very few properties captured for User Profile like city, country, device info etc. Depending on your product purpose, You can add more information to user profile with `Analytics.identify()`  method.&#x20;

There are two ways you can do this&#x20;

1. If your customer has logged in with your system's user id, then you can pass customer's id which is in your system. This will help you keeping unified profile across web, mobile and other platforms. An example is given below.

   ```java
   // Prepare Attributes
   Map<String, Object> userAttributes = new HashMap<>();
   attributes.put("has_subscribed", true);
   attributes.put("total_cart_visits", 12);

   // Put them in growlytics user profile
   Analytics.getInstance(this).identify(userAttributes);
   ```
2. Another way, if user has not logged in yet but you still want to keep information as anonymous user, you can do that as well. An example is given below.

   ```java
   // Prepare Attributes
   Map<String, Object> userAttributes = new HashMap<>();
   attributes.put("has_subscribed", true);
   attributes.put("total_cart_visits", 12);

   // Put them in growlytics user profile
   Analytics.getInstance(this).identify(userAttributes);
   ```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.growlytics.in/integration/android/installation.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
