microg/GmsCore · error · RuntimeException

is not an Parcelable

Error message

 is not an Parcelable

What it means

Guard in SafeParcelReflectionUtil.getCreator(Field): the field's type (or array component type) does not implement Parcelable, so no CREATOR can be resolved for it. The offending class name is embedded in the message; it indicates a field-type/classpath mismatch against the Parcelable contract.

Source

Thrown at play-services-basement/src/main/java/org/microg/safeparcel/SafeParcelReflectionUtil.java:115

                    SafeParcelReader.skip(parcel, header);
                }
            }
        }
        if (parcel.dataPosition() > end) {
            throw new RuntimeException("Overread allowed size end=" + end);
        }
    }

    @SuppressWarnings("unchecked")
    private static Parcelable.Creator<Parcelable> getCreator(Field field) {
        Class<?> clazz = field.getType();
        if (clazz.isArray()) {
            clazz = clazz.getComponentType();
        }
        if (clazz != null && Parcelable.class.isAssignableFrom(clazz)) {
            return getCreator((Class<? extends Parcelable>) clazz);
        }
        throw new RuntimeException(clazz + " is not an Parcelable");
    }

    @SuppressWarnings("unchecked")
    public static Parcelable.Creator<Parcelable> getCreator(Class<? extends Parcelable> clazz) {
        try {
            Field creatorField = clazz.getDeclaredField("CREATOR");
            creatorField.setAccessible(true);
            return (Parcelable.Creator<Parcelable>) creatorField.get(null);
        } catch (NoSuchFieldException e) {
            throw new RuntimeException(clazz + " is an Parcelable without CREATOR");
        } catch (IllegalAccessException e) {
            throw new RuntimeException("CREATOR in " + clazz + " is not accessible");
        }
    }

    @SuppressWarnings("deprecation")
    private static Class<?> getSubClass(Field field) {
        SafeParceled safeParceled = field.getAnnotation(SafeParceled.class);

View on GitHub (pinned to 157c9d86ac)

Solutions

  1. Make the field's type implement Parcelable (or change the field type)
  2. Ensure the expected Parcelable subclass is on the classpath
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at play-services-basement/src/main/java/org/microg/safeparcel/SafeParcelReflectionUtil.java:115 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of microg/GmsCore@157c9d86ac (2026-09-06). Data as JSON: /api/errors/dec4e62d6be0625c. Report an issue: GitHub.