diff options
| author | Nicolas Geoffray <ngeoffray@google.com> | 2018-11-15 07:28:24 -0800 |
|---|---|---|
| committer | android-build-merger <android-build-merger@google.com> | 2018-11-15 07:28:24 -0800 |
| commit | bd1945bced6bbb4f8ce342b2bd7c1ed63b82a3f2 (patch) | |
| tree | ffa1882824c7cd0385cd4317fef44d3d6e1cb22c /core/java/android | |
| parent | 20da56b8ce3616d4a6dd3735115b7995bd5dc53f (diff) | |
| parent | 11717b19503365bc445fef68fae76502a081127e (diff) | |
Merge "Attach SharedLibraryInfo to a Package." am: 711941c64d
am: 11717b1950
Change-Id: Ib5aec670cb61734297c911bf651ea56dafc81e19
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/content/pm/PackageParser.java | 8 | ||||
| -rw-r--r-- | core/java/android/content/pm/SharedLibraryInfo.java | 37 |
2 files changed, 42 insertions, 3 deletions
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index 7b076f6881cc..7aea261a48f1 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -6317,6 +6317,7 @@ public class PackageParser { public ArrayList<String> usesOptionalLibraries = null; @UnsupportedAppUsage public String[] usesLibraryFiles = null; + public ArrayList<SharedLibraryInfo> usesLibraryInfos = null; public ArrayList<ActivityIntentInfo> preferredActivityFilters = null; @@ -6846,6 +6847,8 @@ public class PackageParser { internStringArrayList(usesOptionalLibraries); usesLibraryFiles = dest.readStringArray(); + usesLibraryInfos = dest.createTypedArrayList(SharedLibraryInfo.CREATOR); + final int libCount = dest.readInt(); if (libCount > 0) { usesStaticLibraries = new ArrayList<>(libCount); @@ -6996,6 +6999,7 @@ public class PackageParser { dest.writeStringList(usesLibraries); dest.writeStringList(usesOptionalLibraries); dest.writeStringArray(usesLibraryFiles); + dest.writeTypedList(usesLibraryInfos); if (ArrayUtils.isEmpty(usesStaticLibraries)) { dest.writeInt(-1); @@ -7456,6 +7460,10 @@ public class PackageParser { && p.usesLibraryFiles != null) { return true; } + if ((flags & PackageManager.GET_SHARED_LIBRARY_FILES) != 0 + && p.usesLibraryInfos != null) { + return true; + } if (p.staticSharedLibName != null) { return true; } diff --git a/core/java/android/content/pm/SharedLibraryInfo.java b/core/java/android/content/pm/SharedLibraryInfo.java index 33bc9515409f..a8bbeab03f0a 100644 --- a/core/java/android/content/pm/SharedLibraryInfo.java +++ b/core/java/android/content/pm/SharedLibraryInfo.java @@ -19,6 +19,7 @@ package android.content.pm; import android.annotation.IntDef; import android.annotation.IntRange; import android.annotation.NonNull; +import android.annotation.Nullable; import android.os.Parcel; import android.os.Parcelable; @@ -69,6 +70,8 @@ public final class SharedLibraryInfo implements Parcelable { */ public static final int VERSION_UNDEFINED = -1; + private final String mPath; + private final String mPackageName; private final String mName; private final long mVersion; @@ -87,8 +90,10 @@ public final class SharedLibraryInfo implements Parcelable { * * @hide */ - public SharedLibraryInfo(String name, long version, int type, + public SharedLibraryInfo(String path, String packageName, String name, long version, int type, VersionedPackage declaringPackage, List<VersionedPackage> dependentPackages) { + mPath = path; + mPackageName = packageName; mName = name; mVersion = version; mType = type; @@ -97,8 +102,8 @@ public final class SharedLibraryInfo implements Parcelable { } private SharedLibraryInfo(Parcel parcel) { - this(parcel.readString(), parcel.readLong(), parcel.readInt(), - parcel.readParcelable(null), parcel.readArrayList(null)); + this(parcel.readString(), parcel.readString(), parcel.readString(), parcel.readLong(), + parcel.readInt(), parcel.readParcelable(null), parcel.readArrayList(null)); } /** @@ -121,6 +126,30 @@ public final class SharedLibraryInfo implements Parcelable { } /** + * If the shared library is a jar file, returns the path of that jar. Null otherwise. + * Only libraries with TYPE_BUILTIN are in jar files. + * + * @return The path. + * + * @hide + */ + public @Nullable String getPath() { + return mPath; + } + + /** + * If the shared library is an apk, returns the package name. Null otherwise. + * Only libraries with TYPE_DYNAMIC or TYPE_STATIC are in apks. + * + * @return The package name. + * + * @hide + */ + public @Nullable String getPackageName() { + return mPackageName; + } + + /** * @deprecated Use {@link #getLongVersion()} instead. */ @Deprecated @@ -196,6 +225,8 @@ public final class SharedLibraryInfo implements Parcelable { @Override public void writeToParcel(Parcel parcel, int flags) { + parcel.writeString(mPath); + parcel.writeString(mPackageName); parcel.writeString(mName); parcel.writeLong(mVersion); parcel.writeInt(mType); |
