Search code examples
javaandroid-source

Error 110 while running make


I'm getting the following error:

frameworks/base/core/java/android/os/mypackage/MyServiceListenerClass.java:283: error 110: Parameter of unavailable type android.os.storage.VolumeInfo in android.os.mypackage.MyServiceListenerClass.myMethod()

I have created a new package with some classes and those classes use VolumeInfo from the storage package.

I couldn't find any documentation on this error. What have I done wrong?

UPDATE:

  • Found out that Error 110 = UNAVAILABLE_SYMBOL.

  • Found this section in doclava/Stubs.java:

    for (ParameterInfo p :  m.parameters()) {
        TypeInfo t = p.type();
        if (!t.isPrimitive()) {
          hiddenClass = findHiddenClasses(t);
          if (null != hiddenClass) {
            if (hiddenClass.qualifiedName() == t.asClassInfo().qualifiedName()) {
              // Parameter type is hidden
              Errors.error(Errors.UNAVAILABLE_SYMBOL, m.position(),
                  "Parameter of unavailable type " + t.fullName() + " in " + cl.qualifiedName()
                  + "." + m.name() + "()");
            } else {
              // Parameter type contains a generic parameter
              Errors.error(Errors.HIDDEN_TYPE_PARAMETER, m.position(),
                  "Parameter uses type parameter of unavailable type " + t.fullName() + " in "
                  + cl.qualifiedName() + "." + m.name() + "()");
            }
          }
        }
    }
    

Solution

  • So the reason for this error was the @hide attribute at the bottom of VolumInfo's documentation part:

    /**
     * Information about a storage volume that may be mounted. A volume may be a
     * partition on a physical {@link DiskInfo}, an emulated volume above some other
     * storage medium, or a standalone container like an ASEC or OBB.
     * <p>
     * Volumes may be mounted with various flags:
     * <ul>
     * <li>{@link #MOUNT_FLAG_PRIMARY} means the volume provides primary external
     * storage, historically found at {@code /sdcard}.
     * <li>{@link #MOUNT_FLAG_VISIBLE} means the volume is visible to third-party
     * apps for direct filesystem access. The system should send out relevant
     * storage broadcasts and index any media on visible volumes. Visible volumes
     * are considered a more stable part of the device, which is why we take the
     * time to index them. In particular, transient volumes like USB OTG devices
     * <em>should not</em> be marked as visible; their contents should be surfaced
     * to apps through the Storage Access Framework.
     * </ul>
     *
     * @hide
     */
    

    Removing it solves the issue.