resources/src/main/java/org/robolectric/res/android/CppAssetManager.java
static Asset openNonAssetInPathLocked(final String fileName, AccessMode mode,
      final asset_path ap) {
    Asset pAsset = null;

      /* look at the filesystem on disk */
    if (ap.type == kFileTypeDirectory) {
      String8 path = new String8(ap.path);
      path.appendPath(fileName);

      pAsset = openAssetFromFileLocked(path, mode);

      if (pAsset == null) {
              /* try again, this time with ".gz" */
        path.append(".gz");
        pAsset = openAssetFromFileLocked(path, mode);
      }

      if (pAsset != null) {
        //printf("FOUND NA '%s' on disk\n", fileName);
        pAsset.setAssetSource(path);
      }

      /* look inside the zip file */
    } else {
      String8 path = new String8(fileName);

          /* check the appropriate Zip file */
      ZipFileRO pZip = getZipFileLocked(ap);
      if (pZip != null) {
        //printf("GOT zip, checking NA '%s'\n", (final char*) path);
        ZipEntryRO entry = pZip.findEntryByName(path.string());
        if (entry != null) {
          //printf("FOUND NA in Zip file for %s\n", appName ? appName : kAppCommon);
          pAsset = openAssetFromZipLocked(pZip, entry, mode, path);
          pZip.releaseEntry(entry);
        }
      }

      if (pAsset != null) {
              /* create a "source" name, for debug/display */
        pAsset.setAssetSource(
            createZipSourceNameLocked(ap.path, new String8(), new String8(fileName)));
      }
    }

    return pAsset;
  }
static Asset openNonAssetInPathLocked(final String fileName, AccessMode mode,
      final asset_path ap) {
    Asset pAsset = null;

      /* look at the filesystem on disk */
    if (ap.type == kFileTypeDirectory) {
      String8 path = new String8(ap.path);
      path.appendPath(fileName);

      pAsset = openAssetFromFileLocked(path, mode);

      if (pAsset == null) {
              /* try again, this time with ".gz" */
        path.append(".gz");
        pAsset = openAssetFromFileLocked(path, mode);
      }

      if (pAsset != null) {
        //printf("FOUND NA '%s' on disk\n", fileName);
        pAsset.setAssetSource(path);
      }

      /* look inside the zip file */
    } else {
      String8 path = new String8(fileName);

          /* check the appropriate Zip file */
      ZipFileRO pZip = getZipFileLocked(ap);
      if (pZip != null) {
        //printf("GOT zip, checking NA '%s'\n", (final char*) path);
        ZipEntryRO entry = pZip.findEntryByName(path.string());
        if (entry != null) {
          //printf("FOUND NA in Zip file for %s\n", appName ? appName : kAppCommon);
          pAsset = openAssetFromZipLocked(pZip, entry, mode, path);
          pZip.releaseEntry(entry);
        }
      }

      if (pAsset != null) {
              /* create a "source" name, for debug/display */
        pAsset.setAssetSource(
            createZipSourceNameLocked(ap.path, new String8(), new String8(fileName)));
      }
    }

    return pAsset;
  }
/*
Open a non-asset file as if it were an asset, searching for it in the
specified app.

Pass in a null values for "appName" if the common app directory should
be used.