# Getting Started

{% hint style="info" %}
Pushlink is currently working for all Android versions. Tested up to the **Android 14 - API 33**. See the [changelog](/changelog.md) to check compatibility.
{% endhint %}

## 1 Create an Account to obtain an API Key

Visit <https://www.pushlink.com/signup.xhtml> and create your free account.&#x20;

You'll be redirected to the dashboard. Copy your API key from the navigation bar.

## 2 Import Pushlink in your Android Project

### Option #1: Gradle

```groovy
...
  repositories {
    google()
    mavenCentral()
    maven { url "https://jitpack.io" }
  }
...
```

```groovy
//project/app/build.gradle
dependencies {
  implementation 'com.pushlink:pushlink-android:5.6.0'
  ...
}
```

### Option #2: Maven

```xml
<repositories>
  <repository>
    <id>jitpack.io</id>
    <url>https://jitpack.io</url>
  </repository>
</repositories>

<dependency>
  <groupId>com.pushlink</groupId>
  <artifactId>pushlink-android</artifactId>
  <version>5.6.0</version>
</dependency>
```

### Option #3: Download JAR File

[Download pushlink-android-5.6.0.jar ](https://jitpack.io/com/pushlink/pushlink-android/5.6.0/pushlink-android-5.6.0.jar)[\[s3 mirror\]](https://s3.amazonaws.com/bin.pushlink.com/pushlink-android-5.6.0.jar)

## 3 Set up permissions in your AndroidManifest.xml

```xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<application android:name=".PushlinkSetup" ... >
  <uses-library android:name="org.apache.http.legacy" android:required="false"/>
  <provider 
    android:name="com.pushlink.android.FileProvider" 
    android:authorities="your.package.name" <--- change it ---
    android:exported="true" />
</application>
```

## 4 Call `PushLink.start()` in the Main UI Thread

```java
public class PushlinkSetup extends android.app.Application {
  @Override
  public void onCreate() {
    super.onCreate();
    String yourDeviceID = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID);
    PushLink.start(this, R.mipmap.ic_launcher, "yourApiKey", yourDeviceID);
  }
}
```

{% hint style="warning" %}
**Don't call the start method inside an ordinary Activity**

Call this inside the class that extends `android.app.Application` precisely, as shown above.&#x20;
{% endhint %}

{% hint style="info" %}
**It's up to you to identify the device**

Make sure you've read the [Android Device ID Guide](/android-device-id-guide.md).
{% endhint %}

## 5 Build the APK and upload it to Pushlink

You can find the Upload APK button in the menu bar at the Pushlink dashboard.

{% hint style="danger" %}
**Don't forget, or your installation will fail:**

1 - Upload a fully signed release APK to Pushlink.

2 - Increment the [versionCode](/downgrade-an-apk.md)

3 - Give your app installation and notification permissions.

4 - Adapt your app to the [newer Android versions](/android-versions.md)
{% endhint %}

## 6 Enroll your devices (Install & run)

First installation options:

### Option #1: From the terminal

A tech person usually performs this before sending the device to the field.

```bash
curl -o yourApp.apk 'https://www.pushlink.com/download?package=some.package.name&api_key=yourApiKey'
adb install yourApp.apk
```

{% hint style="info" %}
You can also generate a **hashed download link** in the dashboard to hide your credentials.
{% endhint %}

### Option #2: From the device itself

Download the APK from **QRCode** and install it.

![](/files/-LLyeGHr1h8NyOusKLSV)

## Final words

That's it. Now, every time you upload a new app version to Pushlink and make that the current version, all the devices using your application will receive and apply the update.&#x20;

Look at all the documentation to understand how Pushlink can help you.


---

# 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.pushlink.com/getting-started.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.
