# Bundle an Asset Store filter in Android

> Place a protected .nosmai package in Android assets and apply the typed entry returned by NosmaiEffects.

> For AI agents: the complete documentation index is at https://nosmai.com/llms/effects.txt

Product: Nosmai Effects
Group: guide
Source: https://nosmai.com/docs/effects/guides/filters/bundle-an-asset-store-filter/android/

## Prerequisites

- A working [Android quickstart](/docs/effects/quickstart/android/)
- A downloaded `.nosmai` package and its required resources

## Add the package resources

Use the exact case-sensitive production layout:

```text
app/src/main/assets/Nosmai_Filters/heart_face/
  heart_face.nosmai
  heart_face_manifest.json
  heart_face_preview.png
```

`Nosmai_Filters` is case-sensitive on Android devices.

## Discover and apply it

```java
List<NosmaiFilterInfo> filters = NosmaiEffects.getFilters();
NosmaiFilterInfo filter = filters.get(0);

NosmaiEffects.applyEffect(
    filter.getPath(),
    new NosmaiEffects.EffectCallback() {
        @Override public void onSuccess() {}
        @Override public void onError(String message) {
            Log.e("Nosmai", message);
        }
    }
);
```

Do not use debug discovery as the production catalog.

## Verify it worked

After license verification, disable network access and apply the filter again.
The bundled package should remain available.

## Common errors

| Symptom | Fix |
| --- | --- |
| Catalog is empty on device | Correct `Nosmai_Filters` capitalization and filenames |
| Works in Debug but not Release | Inspect merged assets and R8 configuration in the release APK or App Bundle |
| Apply callback fails | Use the discovered path and a package built for the current SDK |

## Next steps

- [Download a Cloud Filter in Android](/docs/effects/guides/filters/download-a-cloud-filter/android/)
- [Understand package delivery](/docs/effects/concepts/filters-and-effects/)

## References

- [Android platform guide](/docs/effects/platforms/android/)
