> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nexa.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Get started with Nexa AI SDK for Android in minutes.

## **Tutorial Video**

<iframe className="w-full aspect-video rounded-xl" src="https://www.youtube.com/embed/v_bASJDlhME" title="Nexa AI Android SDK Quickstart Tutorial" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowFullScreen />

## **Installation**

Nexa AI Android SDK is available from Maven Central, the latest version is [0.0.24](https://repo1.maven.org/maven2/ai/nexa/core/0.0.24/). You can also find it on [Maven Repository](https://mvnrepository.com/artifact/ai.nexa/core) which updates a bit slower than Maven Central.

### **Add Dependency**

Add the following to your `app/build.gradle.kts` to import NexaSDK:

```kotlin theme={"dark"}
android{
  packagingOptions {
    jniLibs.useLegacyPackaging = true
  }
}
dependencies {
  implementation("ai.nexa:core:0.0.24")
}
```

<Note>
  The default repository is mavenCentral(). You can also add github's raw repository in the settings.gradle.kts:

  ```kotlin theme={"dark"}
  dependencyResolutionManagement{
      repositories {
          maven {
              url = uri("https://raw.githubusercontent.com/NexaAI/core/main")
          }
      }
  }
  ```
</Note>

## **Run Your First Model**

<Steps>
  <Step title="Initialize SDK">
    Initialize the NexaSDK in your Android application:

    ```kotlin theme={"dark"}
    NexaSdk.getInstance().init(this)
    ```
  </Step>

  <Step title="Download and Load Model">
    Create a VLM wrapper and load a model for NPU inference. You can download [OmniNeural-4B model](https://huggingface.co/NexaAI/OmniNeural-4B-mobile) from huggingface and place it in the folder that your app has permission to access, for example:  `/data/data/${your-app-packagename}/files/models/OmniNeural-4B`

    ```kotlin theme={"dark"}
    VlmWrapper.builder()
        .vlmCreateInput(
            VlmCreateInput(
                model_name = "omni-neural",
                model_path = <your-model-file-absolute-path>,
                config = ModelConfig(
                    max_tokens = 2048,
                    enable_thinking = false
                ),
                plugin_id = "npu"
            )
        )
        .build()
        .onSuccess { vlmWrapper = it }
    ```

    <Note>
      Your app should have permission to access the model folder. For example, in the demo, the model\_path is set to `/data/data/com.nexa.demo/files/models/OmniNeural-4B/files-1-1.nexa`
    </Note>
  </Step>

  <Step title="Generate Content">
    Use the loaded model to generate responses:

    ```kotlin theme={"dark"}
    vlmWrapper.generateStreamFlow("Who are you?", GenerationConfig()).collect { result ->
        println(result)
    }
    ```
  </Step>
</Steps>

## **Supported Models**

We've curated collections of compatible models for you to explore:

<CardGroup cols={2}>
  <Card title="NPU Models" icon="microchip" href="https://huggingface.co/collections/NexaAI/qualcomm-npu-mobile">
    Optimized models for Qualcomm NPU
  </Card>

  <Card title="GGUF Models" icon="file-code">
    Any GGUF format LLM and VLM models
  </Card>
</CardGroup>

## **Device Compatibility**

<AccordionGroup>
  <Accordion title="NPU Support" icon="microchip">
    * Qualcomm Snapdragon 8 Elite
    * Qualcomm Snapdragon 8 Elite Gen 5
  </Accordion>

  <Accordion title="GPU Support" icon="bolt">
    * Qualcomm Adreno GPU
  </Accordion>

  <Accordion title="CPU Support" icon="memory">
    * ARM64-v8a
  </Accordion>
</AccordionGroup>

## **Next Steps**

<Card title="API Reference" icon="book" href="/en/nexa-sdk-android/APIReference">
  Explore detailed documentation for all model types and learn their usage.
</Card>

<br />

<div class="feedback-wrapper">
  <span class="feedback-label">Was this page helpful?</span>

  <div class="feedback-toggle">
    <input type="radio" name="feedback" id="feedback-yes" class="feedback-input" />

    <label for="feedback-yes" class="feedback-button">
      <img src="https://mintcdn.com/nexaai/g8-zBYnunEyVtcK3/Images/FeedBack/thumbs-up.svg?fit=max&auto=format&n=g8-zBYnunEyVtcK3&q=85&s=0b57c51c8db9940403e7552956e5c30e" alt="Thumbs up" class="feedback-icon" noZoom width="14" height="14" data-path="Images/FeedBack/thumbs-up.svg" />

      Yes
    </label>

    <input type="radio" name="feedback" id="feedback-no" class="feedback-input" />

    <label for="feedback-no" class="feedback-button">
      <img src="https://mintcdn.com/nexaai/g8-zBYnunEyVtcK3/Images/FeedBack/thumbs-down.svg?fit=max&auto=format&n=g8-zBYnunEyVtcK3&q=85&s=ebacf61d57c8259c6df243d329b548b3" alt="Thumbs down" class="feedback-icon" noZoom width="14" height="14" data-path="Images/FeedBack/thumbs-down.svg" />

      No
    </label>
  </div>
</div>
