This page describes how to get set up with the Android SDK. If you haven't
completed the [prerequisites](https://developers.google.com/search-in-apps/android/prerequisites), complete
them first.

## Dependency

Import the "searchinapps" SDK into an Android project from GMaven. Open your
project's `build.gradle` file, declare the [Google Maven repository](https://maven.google.com/web/index.html) and add
the SDK dependency:

    repositories {
      google()
      ...
    }

    dependencies {
      implementation 'com.google.android.libraries.searchinapps:searchinapps:[version]'
      ...
    }

Then build your project using Gradle.

## AndroidManifest.xml configuration

Update your Android project `AndroidManifest.xml` file to add the following
metadata:

1. `com.google.searchinapps.API_KEY`: the string value of your SDK api key (see above).
2. `com.google.searchinapps.CLIENT_ID`: the string value of your app's client identifier (see above).

Sample `AndroidManifest.xml`

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.google.samples.quickstart.searchinapps">

    <application
    ...
    >
    <meta-data
    android:name="com.google.searchinapps.API_KEY"
    android:value="[your api key]"/>
    <meta-data
    android:name="com.google.searchinapps.CLIENT_ID"
    android:value="[your client id]"/>
    ...
    </application>

    </manifest>

## Initialization

To use "searchinapps" SDK's functions, in the target `Activity` or any classes
that's responsible for retrieving search results, create a
`SearchInAppsService` instance (you can do it in the Activity class's `onCreate`
function) and also pass activity or application Context into it.

Sample code

### Java

    package ...;

    ...
    import androidx.appcompat.app.AppCompatActivity;
    import com.google.android.libraries.searchinapps.SearchInAppsService;
    ...

    public class MainActivity extends AppCompatActivity {
      private SearchInAppsService service;

      @Override
      protected void onCreate(Bundle savedInstanceState) {
        ...
        service = SearchInAppsService.create(this);
        ...
      }

      @Override
      public void onDestroy() {
        service.shutDown();
        super.onDestroy();
      }
    }

### Jetpack Compose

    package ...

    ...
    import android.os.Bundle
    import androidx.activity.compose.setContent
    import androidx.appcompat.app.AppCompatActivity
    import androidx.compose.runtime.Composable
    import androidx.compose.runtime.DisposableEffect
    import androidx.compose.runtime.mutableStateOf
    import androidx.compose.ui.platform.LocalContext
    import com.google.android.libraries.searchinapps.SearchInAppsService
    ...

    class MainActivityJetpack : AppCompatActivity() {
      private var service: SearchInAppsService? = null

      override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
          SearchSuggestionsUI()
        }
      }

      @Composable
      fun SearchSuggestionsUI() {
        ...
        var service by remember {
          mutableStateOf<SearchInAppsService?>(
            SearchInAppsService.create(LocalContext.current))
        }
        ...
        DisposableEffect(Unit) { onDispose { service?.shutDown() } }
        ...
      }
      ...
    }

[Next: Search features](https://developers.google.com/search-in-apps/android/features)