Loading core/java/android/app/ApplicationPackageManager.java +27 −1 Original line number Diff line number Diff line Loading @@ -130,7 +130,6 @@ import android.util.Slog; import android.util.Xml; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.Immutable; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.os.SomeArgs; import com.android.internal.pm.RoSystemFeatures; Loading Loading @@ -1020,6 +1019,33 @@ public class ApplicationPackageManager extends PackageManager { } } @Override public void setPageSizeAppCompatFlagsSettingsOverride(String packageName, boolean enabled) { try { mPM.setPageSizeAppCompatFlagsSettingsOverride(packageName, enabled); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } @Override public boolean isPageSizeCompatEnabled(String packageName) { try { return mPM.isPageSizeCompatEnabled(packageName); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } @Override public String getPageSizeCompatWarningMessage(String packageName) { try { return mPM.getPageSizeCompatWarningMessage(packageName); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } private static List<byte[]> encodeCertificates(List<Certificate> certs) throws CertificateEncodingException { if (certs == null) { Loading core/java/android/content/pm/ApplicationInfo.java +104 −1 Original line number Diff line number Diff line Loading @@ -1449,6 +1449,97 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { } } /** * Use this to report any errors during alignment checks * * @hide */ public static final int PAGE_SIZE_APP_COMPAT_FLAG_ERROR = -1; /** * Initial value for mPageSizeAppCompatFlags * * @hide */ public static final int PAGE_SIZE_APP_COMPAT_FLAG_UNDEFINED = 0; /** * if set, extract libs forcefully for 16 KB device and show warning dialog. * * @hide */ public static final int PAGE_SIZE_APP_COMPAT_FLAG_UNCOMPRESSED_LIBS_NOT_ALIGNED = 1 << 1; /** * if set, load 4 KB aligned ELFs on 16 KB device in compat mode and show warning dialog. * * @hide */ public static final int PAGE_SIZE_APP_COMPAT_FLAG_ELF_NOT_ALIGNED = 1 << 2; /** * Run in 16 KB app compat mode. This flag will be set explicitly through settings. If set, 16 * KB app compat warning dialogs will still show up. * * @hide */ public static final int PAGE_SIZE_APP_COMPAT_FLAG_SETTINGS_OVERRIDE_ENABLED = 1 << 3; /** * Disable 16 KB app compat mode through settings. It should only affect ELF loading as app is * already installed. * * @hide */ public static final int PAGE_SIZE_APP_COMPAT_FLAG_SETTINGS_OVERRIDE_DISABLED = 1 << 4; /** * Run in 16 KB app compat mode. This flag will be set explicitly through manifest. If set, hide * the 16 KB app compat warning dialogs. This has the highest priority to enable compat mode. * * @hide */ public static final int PAGE_SIZE_APP_COMPAT_FLAG_MANIFEST_OVERRIDE_ENABLED = 1 << 5; /** * Disable 16 KB app compat mode. This has the highest priority to disable compat mode. * * @hide */ public static final int PAGE_SIZE_APP_COMPAT_FLAG_MANIFEST_OVERRIDE_DISABLED = 1 << 6; /** * Max value for page size app compat * * @hide */ public static final int PAGE_SIZE_APP_COMPAT_FLAG_MAX = 1 << 7; /** * 16 KB app compat status for the app. App can have native shared libs which are not page * aligned, LOAD segments inside the shared libs have to be page aligned. Apps can specify the * override in manifest file as well. */ private @PageSizeAppCompatFlags int mPageSizeAppCompatFlags = ApplicationInfo.PAGE_SIZE_APP_COMPAT_FLAG_UNDEFINED; /** {@hide} */ @IntDef( prefix = {"PAGE_SIZE_APP_COMPAT_FLAG_"}, value = { PAGE_SIZE_APP_COMPAT_FLAG_ERROR, PAGE_SIZE_APP_COMPAT_FLAG_UNDEFINED, PAGE_SIZE_APP_COMPAT_FLAG_UNCOMPRESSED_LIBS_NOT_ALIGNED, PAGE_SIZE_APP_COMPAT_FLAG_ELF_NOT_ALIGNED, PAGE_SIZE_APP_COMPAT_FLAG_MANIFEST_OVERRIDE_ENABLED, PAGE_SIZE_APP_COMPAT_FLAG_MANIFEST_OVERRIDE_DISABLED, PAGE_SIZE_APP_COMPAT_FLAG_SETTINGS_OVERRIDE_ENABLED, PAGE_SIZE_APP_COMPAT_FLAG_SETTINGS_OVERRIDE_DISABLED, PAGE_SIZE_APP_COMPAT_FLAG_MAX, }) @Retention(RetentionPolicy.SOURCE) public @interface PageSizeAppCompatFlags {} /** @hide */ public String classLoaderName; Loading Loading @@ -1777,7 +1868,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { pw.println(prefix + "enableOnBackInvokedCallback=" + isOnBackInvokedCallbackEnabled()); pw.println(prefix + "allowCrossUidActivitySwitchFromBelow=" + allowCrossUidActivitySwitchFromBelow); pw.println(prefix + "mPageSizeAppCompatFlags=" + mPageSizeAppCompatFlags); } pw.println(prefix + "createTimestamp=" + createTimestamp); if (mKnownActivityEmbeddingCerts != null) { Loading Loading @@ -1897,6 +1988,10 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { } proto.write(ApplicationInfoProto.Detail.ALLOW_CROSS_UID_ACTIVITY_SWITCH_FROM_BELOW, allowCrossUidActivitySwitchFromBelow); proto.write(ApplicationInfoProto.Detail.ENABLE_PAGE_SIZE_APP_COMPAT, mPageSizeAppCompatFlags); proto.end(detailToken); } if (!ArrayUtils.isEmpty(mKnownActivityEmbeddingCerts)) { Loading Loading @@ -2024,6 +2119,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { localeConfigRes = orig.localeConfigRes; allowCrossUidActivitySwitchFromBelow = orig.allowCrossUidActivitySwitchFromBelow; createTimestamp = SystemClock.uptimeMillis(); mPageSizeAppCompatFlags = orig.mPageSizeAppCompatFlags; } public String toString() { Loading Loading @@ -2128,6 +2224,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { } dest.writeInt(localeConfigRes); dest.writeInt(allowCrossUidActivitySwitchFromBelow ? 1 : 0); dest.writeInt(mPageSizeAppCompatFlags); sForStringSet.parcel(mKnownActivityEmbeddingCerts, dest, flags); } Loading Loading @@ -2228,6 +2325,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { } localeConfigRes = source.readInt(); allowCrossUidActivitySwitchFromBelow = source.readInt() != 0; mPageSizeAppCompatFlags = source.readInt(); mKnownActivityEmbeddingCerts = sForStringSet.unparcel(source); if (mKnownActivityEmbeddingCerts.isEmpty()) { Loading Loading @@ -2765,6 +2863,11 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { requestRawExternalStorageAccess = value; } /** {@hide} */ public void setPageSizeAppCompatFlags(@PageSizeAppCompatFlags int value) { mPageSizeAppCompatFlags |= value; } /** * Replaces {@link #mAppClassNamesByProcess}. This takes over the ownership of the passed map. * Do not modify the argument at the callsite. Loading core/java/android/content/pm/IPackageManager.aidl +6 −0 Original line number Diff line number Diff line Loading @@ -848,4 +848,10 @@ interface IPackageManager { int getAppMetadataSource(String packageName, int userId); ComponentName getDomainVerificationAgent(int userId); void setPageSizeAppCompatFlagsSettingsOverride(in String packageName, boolean enabled); boolean isPageSizeCompatEnabled(in String packageName); String getPageSizeCompatWarningMessage(in String packageName); } core/java/android/content/pm/PackageManager.java +35 −1 Original line number Diff line number Diff line Loading @@ -804,7 +804,6 @@ public abstract class PackageManager { @Deprecated private void __metadata() {} //@formatter:on // End of generated code Loading Loading @@ -11007,6 +11006,41 @@ public abstract class PackageManager { throw new UnsupportedOperationException("setHarmfulAppWarning not implemented in subclass"); } /** * Set the page compat mode override for given package * * @hide */ @FlaggedApi(android.content.pm.Flags.FLAG_APP_COMPAT_OPTION_16KB) public void setPageSizeAppCompatFlagsSettingsOverride(@NonNull String packageName, boolean enabled) { throw new UnsupportedOperationException( "setPageSizeAppCompatFlagsSettingsOverride not implemented in subclass"); } /** * Check whether page size app compat mode is enabled for given package * * @hide */ @FlaggedApi(android.content.pm.Flags.FLAG_APP_COMPAT_OPTION_16KB) public boolean isPageSizeCompatEnabled(@NonNull String packageName) { throw new UnsupportedOperationException( "isPageSizeCompatEnabled not implemented in subclass"); } /** * Get the page size app compat warning dialog to show at app launch time * * @hide */ @Nullable @FlaggedApi(android.content.pm.Flags.FLAG_APP_COMPAT_OPTION_16KB) public String getPageSizeCompatWarningMessage(@NonNull String packageName) { throw new UnsupportedOperationException( "getPageSizeCompatWarningMessage not implemented in subclass"); } /** * Returns the harmful app warning string for the given app, or null if there is none set. * Loading core/java/com/android/internal/pm/parsing/pkg/PackageImpl.java +19 −0 Original line number Diff line number Diff line Loading @@ -392,6 +392,10 @@ public class PackageImpl implements ParsedPackage, AndroidPackageInternal, private int memtagMode; @ApplicationInfo.NativeHeapZeroInitialized private int nativeHeapZeroInitialized; @ApplicationInfo.PageSizeAppCompatFlags private int mPageSizeAppCompatFlags = ApplicationInfo.PAGE_SIZE_APP_COMPAT_FLAG_UNDEFINED; @Nullable @DataClass.ParcelWith(Parcelling.BuiltIn.ForBoolean.class) private Boolean requestRawExternalStorageAccess; Loading Loading @@ -1118,6 +1122,12 @@ public class PackageImpl implements ParsedPackage, AndroidPackageInternal, return nativeHeapZeroInitialized; } @ApplicationInfo.PageSizeAppCompatFlags @Override public int getPageSizeAppCompatFlags() { return mPageSizeAppCompatFlags; } @Override public int getNetworkSecurityConfigResourceId() { return networkSecurityConfigRes; Loading Loading @@ -2220,6 +2230,12 @@ public class PackageImpl implements ParsedPackage, AndroidPackageInternal, return this; } @Override public PackageImpl setPageSizeAppCompatFlags(@ApplicationInfo.PageSizeAppCompatFlags int flag) { mPageSizeAppCompatFlags = flag; return this; } @Override public PackageImpl setNetworkSecurityConfigResourceId(int value) { networkSecurityConfigRes = value; Loading Loading @@ -2703,6 +2719,7 @@ public class PackageImpl implements ParsedPackage, AndroidPackageInternal, appInfo.setKnownActivityEmbeddingCerts(mKnownActivityEmbeddingCerts); } appInfo.allowCrossUidActivitySwitchFromBelow = mAllowCrossUidActivitySwitchFromBelow; appInfo.setPageSizeAppCompatFlags(mPageSizeAppCompatFlags); return appInfo; } Loading Loading @@ -3305,6 +3322,7 @@ public class PackageImpl implements ParsedPackage, AndroidPackageInternal, dest.writeInt(this.mIntentMatchingFlags); dest.writeIntArray(this.mAlternateLauncherIconResIds); dest.writeIntArray(this.mAlternateLauncherLabelResIds); dest.writeInt(this.mPageSizeAppCompatFlags); } private void writeFeatureFlagState(@NonNull Parcel dest) { Loading Loading @@ -3499,6 +3517,7 @@ public class PackageImpl implements ParsedPackage, AndroidPackageInternal, this.mIntentMatchingFlags = in.readInt(); this.mAlternateLauncherIconResIds = in.createIntArray(); this.mAlternateLauncherLabelResIds = in.createIntArray(); this.mPageSizeAppCompatFlags = in.readInt(); assignDerivedFields(); assignDerivedFields2(); Loading Loading
core/java/android/app/ApplicationPackageManager.java +27 −1 Original line number Diff line number Diff line Loading @@ -130,7 +130,6 @@ import android.util.Slog; import android.util.Xml; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.Immutable; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.os.SomeArgs; import com.android.internal.pm.RoSystemFeatures; Loading Loading @@ -1020,6 +1019,33 @@ public class ApplicationPackageManager extends PackageManager { } } @Override public void setPageSizeAppCompatFlagsSettingsOverride(String packageName, boolean enabled) { try { mPM.setPageSizeAppCompatFlagsSettingsOverride(packageName, enabled); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } @Override public boolean isPageSizeCompatEnabled(String packageName) { try { return mPM.isPageSizeCompatEnabled(packageName); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } @Override public String getPageSizeCompatWarningMessage(String packageName) { try { return mPM.getPageSizeCompatWarningMessage(packageName); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } private static List<byte[]> encodeCertificates(List<Certificate> certs) throws CertificateEncodingException { if (certs == null) { Loading
core/java/android/content/pm/ApplicationInfo.java +104 −1 Original line number Diff line number Diff line Loading @@ -1449,6 +1449,97 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { } } /** * Use this to report any errors during alignment checks * * @hide */ public static final int PAGE_SIZE_APP_COMPAT_FLAG_ERROR = -1; /** * Initial value for mPageSizeAppCompatFlags * * @hide */ public static final int PAGE_SIZE_APP_COMPAT_FLAG_UNDEFINED = 0; /** * if set, extract libs forcefully for 16 KB device and show warning dialog. * * @hide */ public static final int PAGE_SIZE_APP_COMPAT_FLAG_UNCOMPRESSED_LIBS_NOT_ALIGNED = 1 << 1; /** * if set, load 4 KB aligned ELFs on 16 KB device in compat mode and show warning dialog. * * @hide */ public static final int PAGE_SIZE_APP_COMPAT_FLAG_ELF_NOT_ALIGNED = 1 << 2; /** * Run in 16 KB app compat mode. This flag will be set explicitly through settings. If set, 16 * KB app compat warning dialogs will still show up. * * @hide */ public static final int PAGE_SIZE_APP_COMPAT_FLAG_SETTINGS_OVERRIDE_ENABLED = 1 << 3; /** * Disable 16 KB app compat mode through settings. It should only affect ELF loading as app is * already installed. * * @hide */ public static final int PAGE_SIZE_APP_COMPAT_FLAG_SETTINGS_OVERRIDE_DISABLED = 1 << 4; /** * Run in 16 KB app compat mode. This flag will be set explicitly through manifest. If set, hide * the 16 KB app compat warning dialogs. This has the highest priority to enable compat mode. * * @hide */ public static final int PAGE_SIZE_APP_COMPAT_FLAG_MANIFEST_OVERRIDE_ENABLED = 1 << 5; /** * Disable 16 KB app compat mode. This has the highest priority to disable compat mode. * * @hide */ public static final int PAGE_SIZE_APP_COMPAT_FLAG_MANIFEST_OVERRIDE_DISABLED = 1 << 6; /** * Max value for page size app compat * * @hide */ public static final int PAGE_SIZE_APP_COMPAT_FLAG_MAX = 1 << 7; /** * 16 KB app compat status for the app. App can have native shared libs which are not page * aligned, LOAD segments inside the shared libs have to be page aligned. Apps can specify the * override in manifest file as well. */ private @PageSizeAppCompatFlags int mPageSizeAppCompatFlags = ApplicationInfo.PAGE_SIZE_APP_COMPAT_FLAG_UNDEFINED; /** {@hide} */ @IntDef( prefix = {"PAGE_SIZE_APP_COMPAT_FLAG_"}, value = { PAGE_SIZE_APP_COMPAT_FLAG_ERROR, PAGE_SIZE_APP_COMPAT_FLAG_UNDEFINED, PAGE_SIZE_APP_COMPAT_FLAG_UNCOMPRESSED_LIBS_NOT_ALIGNED, PAGE_SIZE_APP_COMPAT_FLAG_ELF_NOT_ALIGNED, PAGE_SIZE_APP_COMPAT_FLAG_MANIFEST_OVERRIDE_ENABLED, PAGE_SIZE_APP_COMPAT_FLAG_MANIFEST_OVERRIDE_DISABLED, PAGE_SIZE_APP_COMPAT_FLAG_SETTINGS_OVERRIDE_ENABLED, PAGE_SIZE_APP_COMPAT_FLAG_SETTINGS_OVERRIDE_DISABLED, PAGE_SIZE_APP_COMPAT_FLAG_MAX, }) @Retention(RetentionPolicy.SOURCE) public @interface PageSizeAppCompatFlags {} /** @hide */ public String classLoaderName; Loading Loading @@ -1777,7 +1868,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { pw.println(prefix + "enableOnBackInvokedCallback=" + isOnBackInvokedCallbackEnabled()); pw.println(prefix + "allowCrossUidActivitySwitchFromBelow=" + allowCrossUidActivitySwitchFromBelow); pw.println(prefix + "mPageSizeAppCompatFlags=" + mPageSizeAppCompatFlags); } pw.println(prefix + "createTimestamp=" + createTimestamp); if (mKnownActivityEmbeddingCerts != null) { Loading Loading @@ -1897,6 +1988,10 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { } proto.write(ApplicationInfoProto.Detail.ALLOW_CROSS_UID_ACTIVITY_SWITCH_FROM_BELOW, allowCrossUidActivitySwitchFromBelow); proto.write(ApplicationInfoProto.Detail.ENABLE_PAGE_SIZE_APP_COMPAT, mPageSizeAppCompatFlags); proto.end(detailToken); } if (!ArrayUtils.isEmpty(mKnownActivityEmbeddingCerts)) { Loading Loading @@ -2024,6 +2119,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { localeConfigRes = orig.localeConfigRes; allowCrossUidActivitySwitchFromBelow = orig.allowCrossUidActivitySwitchFromBelow; createTimestamp = SystemClock.uptimeMillis(); mPageSizeAppCompatFlags = orig.mPageSizeAppCompatFlags; } public String toString() { Loading Loading @@ -2128,6 +2224,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { } dest.writeInt(localeConfigRes); dest.writeInt(allowCrossUidActivitySwitchFromBelow ? 1 : 0); dest.writeInt(mPageSizeAppCompatFlags); sForStringSet.parcel(mKnownActivityEmbeddingCerts, dest, flags); } Loading Loading @@ -2228,6 +2325,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { } localeConfigRes = source.readInt(); allowCrossUidActivitySwitchFromBelow = source.readInt() != 0; mPageSizeAppCompatFlags = source.readInt(); mKnownActivityEmbeddingCerts = sForStringSet.unparcel(source); if (mKnownActivityEmbeddingCerts.isEmpty()) { Loading Loading @@ -2765,6 +2863,11 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { requestRawExternalStorageAccess = value; } /** {@hide} */ public void setPageSizeAppCompatFlags(@PageSizeAppCompatFlags int value) { mPageSizeAppCompatFlags |= value; } /** * Replaces {@link #mAppClassNamesByProcess}. This takes over the ownership of the passed map. * Do not modify the argument at the callsite. Loading
core/java/android/content/pm/IPackageManager.aidl +6 −0 Original line number Diff line number Diff line Loading @@ -848,4 +848,10 @@ interface IPackageManager { int getAppMetadataSource(String packageName, int userId); ComponentName getDomainVerificationAgent(int userId); void setPageSizeAppCompatFlagsSettingsOverride(in String packageName, boolean enabled); boolean isPageSizeCompatEnabled(in String packageName); String getPageSizeCompatWarningMessage(in String packageName); }
core/java/android/content/pm/PackageManager.java +35 −1 Original line number Diff line number Diff line Loading @@ -804,7 +804,6 @@ public abstract class PackageManager { @Deprecated private void __metadata() {} //@formatter:on // End of generated code Loading Loading @@ -11007,6 +11006,41 @@ public abstract class PackageManager { throw new UnsupportedOperationException("setHarmfulAppWarning not implemented in subclass"); } /** * Set the page compat mode override for given package * * @hide */ @FlaggedApi(android.content.pm.Flags.FLAG_APP_COMPAT_OPTION_16KB) public void setPageSizeAppCompatFlagsSettingsOverride(@NonNull String packageName, boolean enabled) { throw new UnsupportedOperationException( "setPageSizeAppCompatFlagsSettingsOverride not implemented in subclass"); } /** * Check whether page size app compat mode is enabled for given package * * @hide */ @FlaggedApi(android.content.pm.Flags.FLAG_APP_COMPAT_OPTION_16KB) public boolean isPageSizeCompatEnabled(@NonNull String packageName) { throw new UnsupportedOperationException( "isPageSizeCompatEnabled not implemented in subclass"); } /** * Get the page size app compat warning dialog to show at app launch time * * @hide */ @Nullable @FlaggedApi(android.content.pm.Flags.FLAG_APP_COMPAT_OPTION_16KB) public String getPageSizeCompatWarningMessage(@NonNull String packageName) { throw new UnsupportedOperationException( "getPageSizeCompatWarningMessage not implemented in subclass"); } /** * Returns the harmful app warning string for the given app, or null if there is none set. * Loading
core/java/com/android/internal/pm/parsing/pkg/PackageImpl.java +19 −0 Original line number Diff line number Diff line Loading @@ -392,6 +392,10 @@ public class PackageImpl implements ParsedPackage, AndroidPackageInternal, private int memtagMode; @ApplicationInfo.NativeHeapZeroInitialized private int nativeHeapZeroInitialized; @ApplicationInfo.PageSizeAppCompatFlags private int mPageSizeAppCompatFlags = ApplicationInfo.PAGE_SIZE_APP_COMPAT_FLAG_UNDEFINED; @Nullable @DataClass.ParcelWith(Parcelling.BuiltIn.ForBoolean.class) private Boolean requestRawExternalStorageAccess; Loading Loading @@ -1118,6 +1122,12 @@ public class PackageImpl implements ParsedPackage, AndroidPackageInternal, return nativeHeapZeroInitialized; } @ApplicationInfo.PageSizeAppCompatFlags @Override public int getPageSizeAppCompatFlags() { return mPageSizeAppCompatFlags; } @Override public int getNetworkSecurityConfigResourceId() { return networkSecurityConfigRes; Loading Loading @@ -2220,6 +2230,12 @@ public class PackageImpl implements ParsedPackage, AndroidPackageInternal, return this; } @Override public PackageImpl setPageSizeAppCompatFlags(@ApplicationInfo.PageSizeAppCompatFlags int flag) { mPageSizeAppCompatFlags = flag; return this; } @Override public PackageImpl setNetworkSecurityConfigResourceId(int value) { networkSecurityConfigRes = value; Loading Loading @@ -2703,6 +2719,7 @@ public class PackageImpl implements ParsedPackage, AndroidPackageInternal, appInfo.setKnownActivityEmbeddingCerts(mKnownActivityEmbeddingCerts); } appInfo.allowCrossUidActivitySwitchFromBelow = mAllowCrossUidActivitySwitchFromBelow; appInfo.setPageSizeAppCompatFlags(mPageSizeAppCompatFlags); return appInfo; } Loading Loading @@ -3305,6 +3322,7 @@ public class PackageImpl implements ParsedPackage, AndroidPackageInternal, dest.writeInt(this.mIntentMatchingFlags); dest.writeIntArray(this.mAlternateLauncherIconResIds); dest.writeIntArray(this.mAlternateLauncherLabelResIds); dest.writeInt(this.mPageSizeAppCompatFlags); } private void writeFeatureFlagState(@NonNull Parcel dest) { Loading Loading @@ -3499,6 +3517,7 @@ public class PackageImpl implements ParsedPackage, AndroidPackageInternal, this.mIntentMatchingFlags = in.readInt(); this.mAlternateLauncherIconResIds = in.createIntArray(); this.mAlternateLauncherLabelResIds = in.createIntArray(); this.mPageSizeAppCompatFlags = in.readInt(); assignDerivedFields(); assignDerivedFields2(); Loading