Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit af9aa6d6 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "SDK libraries."

parents 38c72568 8d0ec8fa
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -13223,6 +13223,7 @@ package android.content.pm {
    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.SharedLibraryInfo> CREATOR;
    field public static final int TYPE_BUILTIN = 0; // 0x0
    field public static final int TYPE_DYNAMIC = 1; // 0x1
    field public static final int TYPE_SDK = 3; // 0x3
    field public static final int TYPE_STATIC = 2; // 0x2
    field public static final int VERSION_UNDEFINED = -1; // 0xffffffff
  }
+5 −5
Original line number Diff line number Diff line
@@ -697,7 +697,7 @@ public abstract class PackageManager {
            MATCH_DISABLED_COMPONENTS,
            MATCH_DISABLED_UNTIL_USED_COMPONENTS,
            MATCH_INSTANT,
            MATCH_STATIC_SHARED_LIBRARIES,
            MATCH_STATIC_SHARED_AND_SDK_LIBRARIES,
            GET_DISABLED_UNTIL_USED_COMPONENTS,
            GET_UNINSTALLED_PACKAGES,
            MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS,
@@ -721,7 +721,7 @@ public abstract class PackageManager {
            MATCH_SYSTEM_ONLY,
            MATCH_UNINSTALLED_PACKAGES,
            MATCH_INSTANT,
            MATCH_STATIC_SHARED_LIBRARIES,
            MATCH_STATIC_SHARED_AND_SDK_LIBRARIES,
            GET_DISABLED_COMPONENTS,
            GET_DISABLED_UNTIL_USED_COMPONENTS,
            GET_UNINSTALLED_PACKAGES,
@@ -1038,14 +1038,14 @@ public abstract class PackageManager {
    public static final int MATCH_EXPLICITLY_VISIBLE_ONLY = 0x02000000;

    /**
     * Internal {@link PackageInfo} flag: include static shared libraries.
     * Apps that depend on static shared libs can always access the version
     * Internal {@link PackageInfo} flag: include static shared and SDK libraries.
     * Apps that depend on static shared/SDK libs can always access the version
     * of the lib they depend on. System/shell/root can access all shared
     * libs regardless of dependency but need to explicitly ask for them
     * via this flag.
     * @hide
     */
    public static final int MATCH_STATIC_SHARED_LIBRARIES = 0x04000000;
    public static final int MATCH_STATIC_SHARED_AND_SDK_LIBRARIES = 0x04000000;

    /**
     * {@link PackageInfo} flag: return the signing certificates associated with
+17 −0
Original line number Diff line number Diff line
@@ -69,6 +69,13 @@ public final class SharedLibraryInfo implements Parcelable {
     */
    public static final int TYPE_STATIC = 2;

    /**
     * SDK library type: this library is <strong>not</strong> backwards
     * -compatible, can be updated and updates can be uninstalled. Clients
     * depend on a specific version of the library.
     */
    public static final int TYPE_SDK = 3;

    /**
     * Constant for referring to an undefined version.
     */
@@ -288,6 +295,13 @@ public final class SharedLibraryInfo implements Parcelable {
        return mType == TYPE_STATIC;
    }

    /**
     * @hide
     */
    public boolean isSdk() {
        return mType == TYPE_SDK;
    }

    /**
     * Gets the package that declares the library.
     *
@@ -351,6 +365,9 @@ public final class SharedLibraryInfo implements Parcelable {
            case TYPE_STATIC: {
                return "static";
            }
            case TYPE_SDK: {
                return "sdk";
            }
            default: {
                return "unknown";
            }
+10 −4
Original line number Diff line number Diff line
@@ -103,11 +103,11 @@ public interface ParsingPackage extends ParsingPackageRead {

    ParsingPackage addUsesOptionalNativeLibrary(String libraryName);

    ParsingPackage addUsesStaticLibrary(String libraryName);
    ParsingPackage addUsesSdkLibrary(String libraryName, long versionMajor,
            String[] certSha256Digests);

    ParsingPackage addUsesStaticLibraryCertDigests(String[] certSha256Digests);

    ParsingPackage addUsesStaticLibraryVersion(long version);
    ParsingPackage addUsesStaticLibrary(String libraryName, long version,
            String[] certSha256Digests);

    ParsingPackage addQueriesIntent(Intent intent);

@@ -212,6 +212,12 @@ public interface ParsingPackage extends ParsingPackageRead {

    ParsingPackage setRestoreAnyVersion(boolean restoreAnyVersion);

    ParsingPackage setSdkLibName(String sdkLibName);

    ParsingPackage setSdkLibVersionMajor(int sdkLibVersionMajor);

    ParsingPackage setSdkLibrary(boolean sdkLibrary);

    ParsingPackage setSplitHasCode(int splitIndex, boolean splitHasCode);

    ParsingPackage setStaticSharedLibrary(boolean staticSharedLibrary);
+105 −15
Original line number Diff line number Diff line
@@ -177,6 +177,10 @@ public class ParsingPackageImpl implements ParsingPackage, ParsingPackageHidden,
    @DataClass.ParcelWith(ForInternedStringValueMap.class)
    private Map<String, String> overlayables = emptyMap();

    @Nullable
    @DataClass.ParcelWith(ForInternedString.class)
    private String sdkLibName;
    private int sdkLibVersionMajor;
    @Nullable
    @DataClass.ParcelWith(ForInternedString.class)
    private String staticSharedLibName;
@@ -203,10 +207,17 @@ public class ParsingPackageImpl implements ParsingPackage, ParsingPackageHidden,
    private List<String> usesStaticLibraries = emptyList();
    @Nullable
    private long[] usesStaticLibrariesVersions;

    @Nullable
    private String[][] usesStaticLibrariesCertDigests;

    @NonNull
    @DataClass.ParcelWith(ForInternedStringList.class)
    private List<String> usesSdkLibraries = emptyList();
    @Nullable
    private long[] usesSdkLibrariesVersionsMajor;
    @Nullable
    private String[][] usesSdkLibrariesCertDigests;

    @Nullable
    @DataClass.ParcelWith(ForInternedString.class)
    private String sharedUserId;
@@ -518,6 +529,7 @@ public class ParsingPackageImpl implements ParsingPackage, ParsingPackageHidden,
        private static final long REQUEST_FOREGROUND_SERVICE_EXEMPTION = 1L << 46;
        private static final long ATTRIBUTIONS_ARE_USER_VISIBLE = 1L << 47;
        private static final long RESET_ENABLED_SETTINGS_ON_APP_DATA_CLEARED = 1L << 48;
        private static final long SDK_LIBRARY = 1L << 49;
    }

    private ParsingPackageImpl setBoolean(@Booleans.Values long flag, boolean value) {
@@ -828,21 +840,24 @@ public class ParsingPackageImpl implements ParsingPackage, ParsingPackageHidden,
    }

    @Override
    public ParsingPackageImpl addUsesStaticLibrary(String libraryName) {
        this.usesStaticLibraries = CollectionUtils.add(this.usesStaticLibraries,
    public ParsingPackageImpl addUsesSdkLibrary(String libraryName, long versionMajor,
            String[] certSha256Digests) {
        this.usesSdkLibraries = CollectionUtils.add(this.usesSdkLibraries,
                TextUtils.safeIntern(libraryName));
        this.usesSdkLibrariesVersionsMajor = ArrayUtils.appendLong(
                this.usesSdkLibrariesVersionsMajor, versionMajor, true);
        this.usesSdkLibrariesCertDigests = ArrayUtils.appendElement(String[].class,
                this.usesSdkLibrariesCertDigests, certSha256Digests, true);
        return this;
    }

    @Override
    public ParsingPackageImpl addUsesStaticLibraryVersion(long version) {
    public ParsingPackageImpl addUsesStaticLibrary(String libraryName, long version,
            String[] certSha256Digests) {
        this.usesStaticLibraries = CollectionUtils.add(this.usesStaticLibraries,
                TextUtils.safeIntern(libraryName));
        this.usesStaticLibrariesVersions = ArrayUtils.appendLong(this.usesStaticLibrariesVersions,
                version, true);
        return this;
    }

    @Override
    public ParsingPackageImpl addUsesStaticLibraryCertDigests(String[] certSha256Digests) {
        this.usesStaticLibrariesCertDigests = ArrayUtils.appendElement(String[].class,
                this.usesStaticLibrariesCertDigests, certSha256Digests, true);
        return this;
@@ -1136,6 +1151,8 @@ public class ParsingPackageImpl implements ParsingPackage, ParsingPackageHidden,
        dest.writeString(this.overlayCategory);
        dest.writeInt(this.overlayPriority);
        sForInternedStringValueMap.parcel(this.overlayables, dest, flags);
        sForInternedString.parcel(this.sdkLibName, dest, flags);
        dest.writeInt(this.sdkLibVersionMajor);
        sForInternedString.parcel(this.staticSharedLibName, dest, flags);
        dest.writeLong(this.staticSharedLibVersion);
        sForInternedStringList.parcel(this.libraryNames, dest, flags);
@@ -1143,9 +1160,9 @@ public class ParsingPackageImpl implements ParsingPackage, ParsingPackageHidden,
        sForInternedStringList.parcel(this.usesOptionalLibraries, dest, flags);
        sForInternedStringList.parcel(this.usesNativeLibraries, dest, flags);
        sForInternedStringList.parcel(this.usesOptionalNativeLibraries, dest, flags);

        sForInternedStringList.parcel(this.usesStaticLibraries, dest, flags);
        dest.writeLongArray(this.usesStaticLibrariesVersions);

        if (this.usesStaticLibrariesCertDigests == null) {
            dest.writeInt(-1);
        } else {
@@ -1155,6 +1172,17 @@ public class ParsingPackageImpl implements ParsingPackage, ParsingPackageHidden,
            }
        }

        sForInternedStringList.parcel(this.usesSdkLibraries, dest, flags);
        dest.writeLongArray(this.usesSdkLibrariesVersionsMajor);
        if (this.usesSdkLibrariesCertDigests == null) {
            dest.writeInt(-1);
        } else {
            dest.writeInt(this.usesSdkLibrariesCertDigests.length);
            for (int index = 0; index < this.usesSdkLibrariesCertDigests.length; index++) {
                dest.writeStringArray(this.usesSdkLibrariesCertDigests[index]);
            }
        }

        sForInternedString.parcel(this.sharedUserId, dest, flags);
        dest.writeInt(this.sharedUserLabel);
        dest.writeTypedList(this.configPreferences);
@@ -1259,6 +1287,8 @@ public class ParsingPackageImpl implements ParsingPackage, ParsingPackageHidden,
        this.overlayCategory = in.readString();
        this.overlayPriority = in.readInt();
        this.overlayables = sForInternedStringValueMap.unparcel(in);
        this.sdkLibName = sForInternedString.unparcel(in);
        this.sdkLibVersionMajor = in.readInt();
        this.staticSharedLibName = sForInternedString.unparcel(in);
        this.staticSharedLibVersion = in.readLong();
        this.libraryNames = sForInternedStringList.unparcel(in);
@@ -1266,14 +1296,29 @@ public class ParsingPackageImpl implements ParsingPackage, ParsingPackageHidden,
        this.usesOptionalLibraries = sForInternedStringList.unparcel(in);
        this.usesNativeLibraries = sForInternedStringList.unparcel(in);
        this.usesOptionalNativeLibraries = sForInternedStringList.unparcel(in);

        this.usesStaticLibraries = sForInternedStringList.unparcel(in);
        this.usesStaticLibrariesVersions = in.createLongArray();

        {
            int digestsSize = in.readInt();
            if (digestsSize >= 0) {
                this.usesStaticLibrariesCertDigests = new String[digestsSize][];
                for (int index = 0; index < digestsSize; index++) {
                this.usesStaticLibrariesCertDigests[index] = sForInternedStringArray.unparcel(in);
                    this.usesStaticLibrariesCertDigests[index] = sForInternedStringArray.unparcel(
                            in);
                }
            }
        }

        this.usesSdkLibraries = sForInternedStringList.unparcel(in);
        this.usesSdkLibrariesVersionsMajor = in.createLongArray();
        {
            int digestsSize = in.readInt();
            if (digestsSize >= 0) {
                this.usesSdkLibrariesCertDigests = new String[digestsSize][];
                for (int index = 0; index < digestsSize; index++) {
                    this.usesSdkLibrariesCertDigests[index] = sForInternedStringArray.unparcel(in);
                }
            }
        }

@@ -1477,6 +1522,17 @@ public class ParsingPackageImpl implements ParsingPackage, ParsingPackageHidden,
        return overlayables;
    }

    @Nullable
    @Override
    public String getSdkLibName() {
        return sdkLibName;
    }

    @Override
    public int getSdkLibVersionMajor() {
        return sdkLibVersionMajor;
    }

    @Nullable
    @Override
    public String getStaticSharedLibName() {
@@ -1536,6 +1592,18 @@ public class ParsingPackageImpl implements ParsingPackage, ParsingPackageHidden,
        return usesStaticLibrariesCertDigests;
    }

    @NonNull
    @Override
    public List<String> getUsesSdkLibraries() { return usesSdkLibraries; }

    @Nullable
    @Override
    public long[] getUsesSdkLibrariesVersionsMajor() { return usesSdkLibrariesVersionsMajor; }

    @Nullable
    @Override
    public String[][] getUsesSdkLibrariesCertDigests() { return usesSdkLibrariesCertDigests; }

    @Nullable
    @Override
    public String getSharedUserId() {
@@ -2082,6 +2150,11 @@ public class ParsingPackageImpl implements ParsingPackage, ParsingPackageHidden,
        return getBoolean(Booleans.STATIC_SHARED_LIBRARY);
    }

    @Override
    public boolean isSdkLibrary() {
        return getBoolean(Booleans.SDK_LIBRARY);
    }

    @Override
    public boolean isOverlay() {
        return getBoolean(Booleans.OVERLAY);
@@ -2557,6 +2630,23 @@ public class ParsingPackageImpl implements ParsingPackage, ParsingPackageHidden,
        return this;
    }

    @Override
    public ParsingPackageImpl setSdkLibName(String sdkLibName) {
        this.sdkLibName = TextUtils.safeIntern(sdkLibName);
        return this;
    }

    @Override
    public ParsingPackageImpl setSdkLibVersionMajor(int sdkLibVersionMajor) {
        this.sdkLibVersionMajor = sdkLibVersionMajor;
        return this;
    }

    @Override
    public ParsingPackageImpl setSdkLibrary(boolean value) {
        return setBoolean(Booleans.SDK_LIBRARY, value);
    }

    @Override
    public ParsingPackageImpl setStaticSharedLibrary(boolean value) {
        return setBoolean(Booleans.STATIC_SHARED_LIBRARY, value);
Loading