> For the complete documentation index, see [llms.txt](https://legacy-docs.usesmileid.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://legacy-docs.usesmileid.com/integration-options/mobile/flutter/android-setup.md).

# Android Setup

{% hint style="danger" %}
This SDK is deprecated and will receive limited support. Please adopt the v10 SDK: [https://github.com/smileidentity/docs/blob/main/mobile/flutter/broken-reference/README.md](https://github.com/smileidentity/docs/blob/main/mobile/flutter/broken-reference/README.md "mention")
{% endhint %}

### Supported Versions

Minimum supported version is android 4.04 api 15

Maximum supported version is android 13 api 33

### \[Video] How to integrate Smile ID Flutter v7 SDK for Android

{% embed url="<https://youtu.be/Y9i1-lUsucU>" %}

## Gradle Integration

This is best done in Android Studio but if not installed can be done by looking at the android folder of your flutter native project

1\. In your root-level (project-level) Gradle file (`build.gradle`), add rules to include the Maven Central repository.

```
buildscript {​
        repositories {
        mavenCentral() // add the maven central repository
         maven {
            url 'https://oss.sonatype.org/content/repositories/snapshots/'
          }
   }
}
```

2\. Declare the Smile ID android SDK in your **root level Gradle file** (usually `build.gradle`).

```
dependencies {
classpath group: 'com.smileidentity', name: 'smile-id-android', version: '1.0.1'
}
```

3\. In your module (app-level) Gradle file (usually `app/build.gradle`), apply the Smile ID android plugin:

```
apply plugin: 'com.smileidentity.smile-id-android'

```

4\. In your module (app-level) Gradle file (usually `app/build.gradle`), add the Smile ID UI and SDK dependancies

The latest version for smile id sdks can be found [here](https://central.sonatype.com/namespace/com.smileidentity)

```
implementation 'com.smileidentity:smile-id-ui:<latest_version>'
implementation 'com.smileidentity:smile-id-sdk:<latest_version>'
implementation 'com.smileidentity:netjava:<latest_version>'// currently (0.0.8)
```

*NB: If you have already integrated with the Android SDK only Remove the reference to the Smile ID dependency as the Smile UI will automatically pull the correct version in. and also remember to check the latest version* [*here*](https://search.maven.org/artifact/com.smileidentity/smile-id-ui)

### Android Manifest

#### Permissions

Add the following permissions if they do not exist already

```
  <uses-permission android:name="android.permission.CAMERA" />
  <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
```

#### Activities

Add the following activities under the application tag

```
 <!--id capture-->
<activity android:name="com.smileid.smileidui.SIDIDCaptureActivity" />
<!--selfie capture-->
<activity android:name="com.smileid.smileidui.SIDSelfieCaptureActivity" />
<!--selfie review screen-->
<activity android:name="com.smileid.smileidui.SIDReviewActivity" />
```

### Proguard Rules

If using Proguard, then please add the following proguard rule to your rules file (usually called `proguard-rules.pro`)

```
-keep class com.smileidentity.** { *; }
```

### Smile Config

Place the file you downloaded from the portal as specified [here](/integration-options/mobile/flutter.md) in the android/app folder

That's it android is ready!

## Troubleshooting

There are issues that could come up during setup , you can follow the recommended solutions for work arounds\\

### Execution failed for task ':app:mergeDebugJavaResource'.

> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade More than one file was found with OS independent path 'META-INF/DEPENDENCIES'.

**Solution:** add this to your module level build.gradle\\

```
android {
....
    packagingOptions {
        exclude 'META-INF/androidx.*'
        exclude 'androidx.*'
        exclude 'META-INF/DEPENDENCIES'
    }
....
}
```

### Manifest merger failed : Attribute application\@label value=xxx

**Solution:** add the snippet below to your AndroidManifest.xml\\

```
<application
...
tools:replace="android:label"
.../>
```

### D8: Cannot fit requested classes in a single dex file

```
com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
The number of method references in a .dex file cannot exceed 64K.
```

**Solution:** enable android dex as documented [here](https://developer.android.com/studio/build/multidex) by doing the below

```
android {
    ....

    defaultConfig {
        ...
        multiDexEnabled true //STEP 1
        ....
    }
}


dependencies {
    ...
    implementation 'com.android.support:multidex:1.0.3'// STEP 2
    ...
}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://legacy-docs.usesmileid.com/integration-options/mobile/flutter/android-setup.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
