@WorkerThread
  public static LottieResult<LottieComposition> fromAssetSync(Context context, String fileName, @Nullable String cacheKey) {
    final LottieComposition cachedComposition = cacheKey == null ? null : LottieCompositionCache.getInstance().get(cacheKey);
    if (cachedComposition != null) {
      return new LottieResult<>(cachedComposition);
    }
    try {
      return fromInputStreamSync(context, context.getAssets().open(fileName), cacheKey);
    } catch (IOException e) {
      return new LottieResult<>(e);
    }
  }
Parse an animation from src/main/assets. It is recommended to use {@link #fromRawRes(Context, int)} instead.
The asset file name will be used as a cache key so future usages won't have to parse the json again.
However, if your animation has images, you may package the json and images as a single flattened zip file in assets.
<p>
Pass null as the cache key to skip the cache.

@see #fromZipStreamSync(Context, ZipInputStream, String)
lottie/src/main/java/com/airbnb/lottie/LottieCompositionFactory.java