Loading core/java/android/content/pm/PackageManager.java +4 −7 Original line number Diff line number Diff line Loading @@ -2870,15 +2870,12 @@ public abstract class PackageManager { * */ public PackageInfo getPackageArchiveInfo(String archiveFilePath, int flags) { PackageParser packageParser = new PackageParser(archiveFilePath); DisplayMetrics metrics = new DisplayMetrics(); metrics.setToDefaults(); final File sourceFile = new File(archiveFilePath); final PackageParser parser = new PackageParser(); final File apkFile = new File(archiveFilePath); try { PackageParser.Package pkg = packageParser.parseMonolithicPackage(sourceFile, metrics, 0); PackageParser.Package pkg = parser.parseMonolithicPackage(apkFile, 0); if ((flags & GET_SIGNATURES) != 0) { packageParser.collectCertificates(pkg, 0); parser.collectCertificates(pkg, 0); } PackageUserState state = new PackageUserState(); return PackageParser.generatePackageInfo(pkg, null, flags, 0, 0, null, state); Loading core/java/android/content/pm/PackageParser.java +320 −276 File changed.Preview size limit exceeded, changes collapsed. Show changes core/tests/coretests/src/android/content/pm/PackageManagerTests.java +2 −4 Original line number Diff line number Diff line Loading @@ -305,11 +305,9 @@ public class PackageManagerTests extends AndroidTestCase { private PackageParser.Package parsePackage(Uri packageURI) throws PackageParserException { final String archiveFilePath = packageURI.getPath(); PackageParser packageParser = new PackageParser(archiveFilePath); PackageParser packageParser = new PackageParser(); File sourceFile = new File(archiveFilePath); DisplayMetrics metrics = new DisplayMetrics(); metrics.setToDefaults(); PackageParser.Package pkg = packageParser.parseMonolithicPackage(sourceFile, metrics, 0); PackageParser.Package pkg = packageParser.parseMonolithicPackage(sourceFile, 0); packageParser = null; return pkg; } Loading packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java +7 −6 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.content.pm.PackageInfo; import android.content.pm.PackageInfoLite; import android.content.pm.PackageManager; import android.content.pm.PackageParser; import android.content.pm.PackageParser.PackageParserException; import android.content.res.ObbInfo; import android.content.res.ObbScanner; import android.net.Uri; Loading Loading @@ -157,6 +158,7 @@ public class DefaultContainerService extends IntentService { * @return Returns PackageInfoLite object containing * the package info and recommended app location. */ @Override public PackageInfoLite getMinimalPackageInfo(final String packagePath, int flags, long threshold, String abiOverride) { PackageInfoLite ret = new PackageInfoLite(); Loading @@ -167,14 +169,13 @@ public class DefaultContainerService extends IntentService { return ret; } DisplayMetrics metrics = new DisplayMetrics(); metrics.setToDefaults(); PackageParser.ApkLite pkg = PackageParser.parseApkLite(packagePath, 0); if (pkg == null) { final File apkFile = new File(packagePath); final PackageParser.ApkLite pkg; try { pkg = PackageParser.parseApkLite(apkFile, 0); } catch (PackageParserException e) { Slog.w(TAG, "Failed to parse package"); final File apkFile = new File(packagePath); if (!apkFile.exists()) { ret.recommendedInstallLocation = PackageHelper.RECOMMEND_FAILED_INVALID_URI; } else { Loading services/core/java/com/android/server/pm/PackageInstallerSession.java +12 −12 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import android.content.pm.PackageInstallerParams; import android.content.pm.PackageManager; import android.content.pm.PackageParser; import android.content.pm.PackageParser.ApkLite; import android.content.pm.PackageParser.PackageParserException; import android.content.pm.Signature; import android.os.Build; import android.os.Bundle; Loading @@ -50,14 +51,10 @@ import com.android.internal.content.NativeLibraryHelper; import com.android.internal.util.ArrayUtils; import com.android.internal.util.Preconditions; import libcore.io.IoUtils; import libcore.io.Libcore; import libcore.io.Streams; import java.io.File; import java.io.FileDescriptor; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; Loading Loading @@ -297,11 +294,12 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { // Verify that all staged packages are internally consistent for (File file : files) { final ApkLite info = PackageParser.parseApkLite(file.getAbsolutePath(), PackageParser.PARSE_GET_SIGNATURES); if (info == null) { final ApkLite info; try { info = PackageParser.parseApkLite(file, PackageParser.PARSE_GET_SIGNATURES); } catch (PackageParserException e) { throw new InstallFailedException(INSTALL_FAILED_INVALID_APK, "Failed to parse " + file); "Failed to parse " + file + ": " + e); } if (!seenSplits.add(info.splitName)) { Loading Loading @@ -356,11 +354,13 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { "Missing existing base package for " + mPackageName); } final ApkLite info = PackageParser.parseApkLite(app.sourceDir, final ApkLite info; try { info = PackageParser.parseApkLite(new File(app.sourceDir), PackageParser.PARSE_GET_SIGNATURES); if (info == null) { } catch (PackageParserException e) { throw new InstallFailedException(INSTALL_FAILED_INVALID_APK, "Failed to parse existing base " + app.sourceDir); "Failed to parse existing base " + app.sourceDir + ": " + e); } assertPackageConsistent("Existing base", info.packageName, info.versionCode, Loading Loading
core/java/android/content/pm/PackageManager.java +4 −7 Original line number Diff line number Diff line Loading @@ -2870,15 +2870,12 @@ public abstract class PackageManager { * */ public PackageInfo getPackageArchiveInfo(String archiveFilePath, int flags) { PackageParser packageParser = new PackageParser(archiveFilePath); DisplayMetrics metrics = new DisplayMetrics(); metrics.setToDefaults(); final File sourceFile = new File(archiveFilePath); final PackageParser parser = new PackageParser(); final File apkFile = new File(archiveFilePath); try { PackageParser.Package pkg = packageParser.parseMonolithicPackage(sourceFile, metrics, 0); PackageParser.Package pkg = parser.parseMonolithicPackage(apkFile, 0); if ((flags & GET_SIGNATURES) != 0) { packageParser.collectCertificates(pkg, 0); parser.collectCertificates(pkg, 0); } PackageUserState state = new PackageUserState(); return PackageParser.generatePackageInfo(pkg, null, flags, 0, 0, null, state); Loading
core/java/android/content/pm/PackageParser.java +320 −276 File changed.Preview size limit exceeded, changes collapsed. Show changes
core/tests/coretests/src/android/content/pm/PackageManagerTests.java +2 −4 Original line number Diff line number Diff line Loading @@ -305,11 +305,9 @@ public class PackageManagerTests extends AndroidTestCase { private PackageParser.Package parsePackage(Uri packageURI) throws PackageParserException { final String archiveFilePath = packageURI.getPath(); PackageParser packageParser = new PackageParser(archiveFilePath); PackageParser packageParser = new PackageParser(); File sourceFile = new File(archiveFilePath); DisplayMetrics metrics = new DisplayMetrics(); metrics.setToDefaults(); PackageParser.Package pkg = packageParser.parseMonolithicPackage(sourceFile, metrics, 0); PackageParser.Package pkg = packageParser.parseMonolithicPackage(sourceFile, 0); packageParser = null; return pkg; } Loading
packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java +7 −6 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.content.pm.PackageInfo; import android.content.pm.PackageInfoLite; import android.content.pm.PackageManager; import android.content.pm.PackageParser; import android.content.pm.PackageParser.PackageParserException; import android.content.res.ObbInfo; import android.content.res.ObbScanner; import android.net.Uri; Loading Loading @@ -157,6 +158,7 @@ public class DefaultContainerService extends IntentService { * @return Returns PackageInfoLite object containing * the package info and recommended app location. */ @Override public PackageInfoLite getMinimalPackageInfo(final String packagePath, int flags, long threshold, String abiOverride) { PackageInfoLite ret = new PackageInfoLite(); Loading @@ -167,14 +169,13 @@ public class DefaultContainerService extends IntentService { return ret; } DisplayMetrics metrics = new DisplayMetrics(); metrics.setToDefaults(); PackageParser.ApkLite pkg = PackageParser.parseApkLite(packagePath, 0); if (pkg == null) { final File apkFile = new File(packagePath); final PackageParser.ApkLite pkg; try { pkg = PackageParser.parseApkLite(apkFile, 0); } catch (PackageParserException e) { Slog.w(TAG, "Failed to parse package"); final File apkFile = new File(packagePath); if (!apkFile.exists()) { ret.recommendedInstallLocation = PackageHelper.RECOMMEND_FAILED_INVALID_URI; } else { Loading
services/core/java/com/android/server/pm/PackageInstallerSession.java +12 −12 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import android.content.pm.PackageInstallerParams; import android.content.pm.PackageManager; import android.content.pm.PackageParser; import android.content.pm.PackageParser.ApkLite; import android.content.pm.PackageParser.PackageParserException; import android.content.pm.Signature; import android.os.Build; import android.os.Bundle; Loading @@ -50,14 +51,10 @@ import com.android.internal.content.NativeLibraryHelper; import com.android.internal.util.ArrayUtils; import com.android.internal.util.Preconditions; import libcore.io.IoUtils; import libcore.io.Libcore; import libcore.io.Streams; import java.io.File; import java.io.FileDescriptor; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; Loading Loading @@ -297,11 +294,12 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { // Verify that all staged packages are internally consistent for (File file : files) { final ApkLite info = PackageParser.parseApkLite(file.getAbsolutePath(), PackageParser.PARSE_GET_SIGNATURES); if (info == null) { final ApkLite info; try { info = PackageParser.parseApkLite(file, PackageParser.PARSE_GET_SIGNATURES); } catch (PackageParserException e) { throw new InstallFailedException(INSTALL_FAILED_INVALID_APK, "Failed to parse " + file); "Failed to parse " + file + ": " + e); } if (!seenSplits.add(info.splitName)) { Loading Loading @@ -356,11 +354,13 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { "Missing existing base package for " + mPackageName); } final ApkLite info = PackageParser.parseApkLite(app.sourceDir, final ApkLite info; try { info = PackageParser.parseApkLite(new File(app.sourceDir), PackageParser.PARSE_GET_SIGNATURES); if (info == null) { } catch (PackageParserException e) { throw new InstallFailedException(INSTALL_FAILED_INVALID_APK, "Failed to parse existing base " + app.sourceDir); "Failed to parse existing base " + app.sourceDir + ": " + e); } assertPackageConsistent("Existing base", info.packageName, info.versionCode, Loading