Merge "Move dump shared libraries into the ComputerEngine" into sc-dev
This commit is contained in:
@@ -56,6 +56,7 @@ public final class DumpState {
|
|||||||
|
|
||||||
private boolean mTitlePrinted;
|
private boolean mTitlePrinted;
|
||||||
private boolean mFullPreferred;
|
private boolean mFullPreferred;
|
||||||
|
private boolean mCheckIn;
|
||||||
|
|
||||||
private String mTargetPackageName;
|
private String mTargetPackageName;
|
||||||
|
|
||||||
@@ -118,4 +119,12 @@ public final class DumpState {
|
|||||||
public void setFullPreferred(boolean fullPreferred) {
|
public void setFullPreferred(boolean fullPreferred) {
|
||||||
mFullPreferred = fullPreferred;
|
mFullPreferred = fullPreferred;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isCheckIn() {
|
||||||
|
return mCheckIn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCheckIn(boolean checkIn) {
|
||||||
|
mCheckIn = checkIn;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4403,6 +4403,7 @@ public class PackageManagerService extends IPackageManager.Stub
|
|||||||
|
|
||||||
public void dump(int type, FileDescriptor fd, PrintWriter pw, DumpState dumpState) {
|
public void dump(int type, FileDescriptor fd, PrintWriter pw, DumpState dumpState) {
|
||||||
final String packageName = dumpState.getTargetPackageName();
|
final String packageName = dumpState.getTargetPackageName();
|
||||||
|
final boolean checkin = dumpState.isCheckIn();
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case DumpState.DUMP_VERSION:
|
case DumpState.DUMP_VERSION:
|
||||||
@@ -4415,6 +4416,56 @@ public class PackageManagerService extends IPackageManager.Stub
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case DumpState.DUMP_LIBS:
|
||||||
|
{
|
||||||
|
boolean printedHeader = false;
|
||||||
|
final int numSharedLibraries = mSharedLibraries.size();
|
||||||
|
for (int index = 0; index < numSharedLibraries; index++) {
|
||||||
|
final String libName = mSharedLibraries.keyAt(index);
|
||||||
|
final WatchedLongSparseArray<SharedLibraryInfo> versionedLib =
|
||||||
|
mSharedLibraries.get(libName);
|
||||||
|
if (versionedLib == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
final int versionCount = versionedLib.size();
|
||||||
|
for (int i = 0; i < versionCount; i++) {
|
||||||
|
SharedLibraryInfo libraryInfo = versionedLib.valueAt(i);
|
||||||
|
if (!checkin) {
|
||||||
|
if (!printedHeader) {
|
||||||
|
if (dumpState.onTitlePrinted()) {
|
||||||
|
pw.println();
|
||||||
|
}
|
||||||
|
pw.println("Libraries:");
|
||||||
|
printedHeader = true;
|
||||||
|
}
|
||||||
|
pw.print(" ");
|
||||||
|
} else {
|
||||||
|
pw.print("lib,");
|
||||||
|
}
|
||||||
|
pw.print(libraryInfo.getName());
|
||||||
|
if (libraryInfo.isStatic()) {
|
||||||
|
pw.print(" version=" + libraryInfo.getLongVersion());
|
||||||
|
}
|
||||||
|
if (!checkin) {
|
||||||
|
pw.print(" -> ");
|
||||||
|
}
|
||||||
|
if (libraryInfo.getPath() != null) {
|
||||||
|
if (libraryInfo.isNative()) {
|
||||||
|
pw.print(" (so) ");
|
||||||
|
} else {
|
||||||
|
pw.print(" (jar) ");
|
||||||
|
}
|
||||||
|
pw.print(libraryInfo.getPath());
|
||||||
|
} else {
|
||||||
|
pw.print(" (apk) ");
|
||||||
|
pw.print(libraryInfo.getPackageName());
|
||||||
|
}
|
||||||
|
pw.println();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case DumpState.DUMP_PREFERRED_XML:
|
case DumpState.DUMP_PREFERRED_XML:
|
||||||
{
|
{
|
||||||
pw.flush();
|
pw.flush();
|
||||||
@@ -23704,8 +23755,6 @@ public class PackageManagerService extends IPackageManager.Stub
|
|||||||
if (!DumpUtils.checkDumpAndUsageStatsPermission(mContext, TAG, pw)) return;
|
if (!DumpUtils.checkDumpAndUsageStatsPermission(mContext, TAG, pw)) return;
|
||||||
|
|
||||||
DumpState dumpState = new DumpState();
|
DumpState dumpState = new DumpState();
|
||||||
boolean checkin = false;
|
|
||||||
|
|
||||||
ArraySet<String> permissionNames = null;
|
ArraySet<String> permissionNames = null;
|
||||||
|
|
||||||
int opti = 0;
|
int opti = 0;
|
||||||
@@ -23755,7 +23804,7 @@ public class PackageManagerService extends IPackageManager.Stub
|
|||||||
pw.println(" <package.name>: info about given package");
|
pw.println(" <package.name>: info about given package");
|
||||||
return;
|
return;
|
||||||
} else if ("--checkin".equals(opt)) {
|
} else if ("--checkin".equals(opt)) {
|
||||||
checkin = true;
|
dumpState.setCheckIn(true);
|
||||||
} else if ("--all-components".equals(opt)) {
|
} else if ("--all-components".equals(opt)) {
|
||||||
dumpState.setOptionEnabled(DumpState.OPTION_DUMP_ALL_COMPONENTS);
|
dumpState.setOptionEnabled(DumpState.OPTION_DUMP_ALL_COMPONENTS);
|
||||||
} else if ("-f".equals(opt)) {
|
} else if ("-f".equals(opt)) {
|
||||||
@@ -23909,6 +23958,7 @@ public class PackageManagerService extends IPackageManager.Stub
|
|||||||
}
|
}
|
||||||
|
|
||||||
final String packageName = dumpState.getTargetPackageName();
|
final String packageName = dumpState.getTargetPackageName();
|
||||||
|
final boolean checkin = dumpState.isCheckIn();
|
||||||
if (checkin) {
|
if (checkin) {
|
||||||
pw.println("vers,1");
|
pw.println("vers,1");
|
||||||
}
|
}
|
||||||
@@ -23997,11 +24047,7 @@ public class PackageManagerService extends IPackageManager.Stub
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (dumpState.isDumping(DumpState.DUMP_LIBS) && packageName == null) {
|
if (dumpState.isDumping(DumpState.DUMP_LIBS) && packageName == null) {
|
||||||
// TODO: Move it to ComputerEngine once LongSparseArray<SharedLibraryInfo> is copied
|
dump(DumpState.DUMP_LIBS, fd, pw, dumpState);
|
||||||
// in snapshot.
|
|
||||||
synchronized (mLock) {
|
|
||||||
dumpSharedLibrariesLPr(pw, dumpState, checkin);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dumpState.isDumping(DumpState.DUMP_FEATURES) && packageName == null) {
|
if (dumpState.isDumping(DumpState.DUMP_FEATURES) && packageName == null) {
|
||||||
@@ -24342,53 +24388,6 @@ public class PackageManagerService extends IPackageManager.Stub
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void dumpSharedLibrariesLPr(PrintWriter pw, DumpState dumpState, boolean checkin) {
|
|
||||||
boolean printedHeader = false;
|
|
||||||
final int numSharedLibraries = mSharedLibraries.size();
|
|
||||||
for (int index = 0; index < numSharedLibraries; index++) {
|
|
||||||
final String libName = mSharedLibraries.keyAt(index);
|
|
||||||
WatchedLongSparseArray<SharedLibraryInfo> versionedLib = mSharedLibraries.get(libName);
|
|
||||||
if (versionedLib == null) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
final int versionCount = versionedLib.size();
|
|
||||||
for (int i = 0; i < versionCount; i++) {
|
|
||||||
SharedLibraryInfo libraryInfo = versionedLib.valueAt(i);
|
|
||||||
if (!checkin) {
|
|
||||||
if (!printedHeader) {
|
|
||||||
if (dumpState.onTitlePrinted()) {
|
|
||||||
pw.println();
|
|
||||||
}
|
|
||||||
pw.println("Libraries:");
|
|
||||||
printedHeader = true;
|
|
||||||
}
|
|
||||||
pw.print(" ");
|
|
||||||
} else {
|
|
||||||
pw.print("lib,");
|
|
||||||
}
|
|
||||||
pw.print(libraryInfo.getName());
|
|
||||||
if (libraryInfo.isStatic()) {
|
|
||||||
pw.print(" version=" + libraryInfo.getLongVersion());
|
|
||||||
}
|
|
||||||
if (!checkin) {
|
|
||||||
pw.print(" -> ");
|
|
||||||
}
|
|
||||||
if (libraryInfo.getPath() != null) {
|
|
||||||
if (libraryInfo.isNative()) {
|
|
||||||
pw.print(" (so) ");
|
|
||||||
} else {
|
|
||||||
pw.print(" (jar) ");
|
|
||||||
}
|
|
||||||
pw.print(libraryInfo.getPath());
|
|
||||||
} else {
|
|
||||||
pw.print(" (apk) ");
|
|
||||||
pw.print(libraryInfo.getPackageName());
|
|
||||||
}
|
|
||||||
pw.println();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ------- apps on sdcard specific code -------
|
// ------- apps on sdcard specific code -------
|
||||||
static final boolean DEBUG_SD_INSTALL = false;
|
static final boolean DEBUG_SD_INSTALL = false;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user