summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorNicolas Geoffray <ngeoffray@google.com>2018-11-15 07:28:24 -0800
committerandroid-build-merger <android-build-merger@google.com>2018-11-15 07:28:24 -0800
commitbd1945bced6bbb4f8ce342b2bd7c1ed63b82a3f2 (patch)
treeffa1882824c7cd0385cd4317fef44d3d6e1cb22c /core/java/android
parent20da56b8ce3616d4a6dd3735115b7995bd5dc53f (diff)
parent11717b19503365bc445fef68fae76502a081127e (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.java8
-rw-r--r--core/java/android/content/pm/SharedLibraryInfo.java37
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);