Merge "Make shared library dependencies explicit in SharedLibraryInfo" am: 550b5e68c1
am: a835f23f47
Change-Id: I63fc21a422d00a38f15116c06af9b1342d36f773
This commit is contained in:
@@ -25,6 +25,7 @@ import android.os.Parcelable;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
@@ -78,6 +79,7 @@ public final class SharedLibraryInfo implements Parcelable {
|
||||
private final @Type int mType;
|
||||
private final VersionedPackage mDeclaringPackage;
|
||||
private final List<VersionedPackage> mDependentPackages;
|
||||
private List<SharedLibraryInfo> mDependencies;
|
||||
|
||||
/**
|
||||
* Creates a new instance.
|
||||
@@ -91,7 +93,8 @@ public final class SharedLibraryInfo implements Parcelable {
|
||||
* @hide
|
||||
*/
|
||||
public SharedLibraryInfo(String path, String packageName, String name, long version, int type,
|
||||
VersionedPackage declaringPackage, List<VersionedPackage> dependentPackages) {
|
||||
VersionedPackage declaringPackage, List<VersionedPackage> dependentPackages,
|
||||
List<SharedLibraryInfo> dependencies) {
|
||||
mPath = path;
|
||||
mPackageName = packageName;
|
||||
mName = name;
|
||||
@@ -99,11 +102,13 @@ public final class SharedLibraryInfo implements Parcelable {
|
||||
mType = type;
|
||||
mDeclaringPackage = declaringPackage;
|
||||
mDependentPackages = dependentPackages;
|
||||
mDependencies = dependencies;
|
||||
}
|
||||
|
||||
private SharedLibraryInfo(Parcel parcel) {
|
||||
this(parcel.readString(), parcel.readString(), parcel.readString(), parcel.readLong(),
|
||||
parcel.readInt(), parcel.readParcelable(null), parcel.readArrayList(null));
|
||||
parcel.readInt(), parcel.readParcelable(null), parcel.readArrayList(null),
|
||||
parcel.createTypedArrayList(SharedLibraryInfo.CREATOR));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -149,6 +154,47 @@ public final class SharedLibraryInfo implements Parcelable {
|
||||
return mPackageName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a library dependency to that library. Note that this
|
||||
* should be called under the package manager lock.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public void addDependency(@Nullable SharedLibraryInfo info) {
|
||||
if (info == null) {
|
||||
// For convenience of the caller, allow null to be passed.
|
||||
// This can happen when we create the dependencies of builtin
|
||||
// libraries.
|
||||
return;
|
||||
}
|
||||
if (mDependencies == null) {
|
||||
mDependencies = new ArrayList<>();
|
||||
}
|
||||
mDependencies.add(info);
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear all dependencies.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public void clearDependencies() {
|
||||
mDependencies = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the libraries this library directly depends on. Note that
|
||||
* the package manager prevents recursive dependencies when installing
|
||||
* a package.
|
||||
*
|
||||
* @return The dependencies.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public @Nullable List<SharedLibraryInfo> getDependencies() {
|
||||
return mDependencies;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Use {@link #getLongVersion()} instead.
|
||||
*/
|
||||
@@ -232,6 +278,7 @@ public final class SharedLibraryInfo implements Parcelable {
|
||||
parcel.writeInt(mType);
|
||||
parcel.writeParcelable(mDeclaringPackage, flags);
|
||||
parcel.writeList(mDependentPackages);
|
||||
parcel.writeTypedList(mDependencies);
|
||||
}
|
||||
|
||||
private static String typeToString(int type) {
|
||||
|
||||
@@ -22,15 +22,15 @@ package android.content.pm;
|
||||
*/
|
||||
public class SharedLibraryNames {
|
||||
|
||||
static final String ANDROID_HIDL_BASE = "android.hidl.base-V1.0-java";
|
||||
public static final String ANDROID_HIDL_BASE = "android.hidl.base-V1.0-java";
|
||||
|
||||
static final String ANDROID_HIDL_MANAGER = "android.hidl.manager-V1.0-java";
|
||||
public static final String ANDROID_HIDL_MANAGER = "android.hidl.manager-V1.0-java";
|
||||
|
||||
static final String ANDROID_TEST_BASE = "android.test.base";
|
||||
public static final String ANDROID_TEST_BASE = "android.test.base";
|
||||
|
||||
static final String ANDROID_TEST_MOCK = "android.test.mock";
|
||||
public static final String ANDROID_TEST_MOCK = "android.test.mock";
|
||||
|
||||
static final String ANDROID_TEST_RUNNER = "android.test.runner";
|
||||
public static final String ANDROID_TEST_RUNNER = "android.test.runner";
|
||||
|
||||
static final String ORG_APACHE_HTTP_LEGACY = "org.apache.http.legacy";
|
||||
public static final String ORG_APACHE_HTTP_LEGACY = "org.apache.http.legacy";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user