summaryrefslogtreecommitdiff
path: root/cmds/pm
diff options
context:
space:
mode:
authorShunta Sato <Shunta.Sato@sonymobile.com>2016-10-11 17:04:16 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-10-11 17:04:16 +0000
commit852638dad613c8cbeee6e7a52a46968a75b4e423 (patch)
treea84819211476415a07bea85d6c70fd7824abce3d /cmds/pm
parent04afb2480992c211162d5ac4ea78cec06e83052c (diff)
parent4549426d6e83ab317adcdd85b71d839b7305ef22 (diff)
Fix: "adb install -s" adaptation for session based install am: 4f26cb5a36 am: 55bcb9f422
am: 4549426d6e Change-Id: I400fc32717172cca401e3ccdae9a6b17687390b6
Diffstat (limited to 'cmds/pm')
-rw-r--r--cmds/pm/src/com/android/commands/pm/Pm.java22
1 files changed, 21 insertions, 1 deletions
diff --git a/cmds/pm/src/com/android/commands/pm/Pm.java b/cmds/pm/src/com/android/commands/pm/Pm.java
index ac8ee8d38c3f..aba53dcdca4d 100644
--- a/cmds/pm/src/com/android/commands/pm/Pm.java
+++ b/cmds/pm/src/com/android/commands/pm/Pm.java
@@ -41,6 +41,10 @@ import android.content.pm.PackageInstaller;
import android.content.pm.PackageInstaller.SessionInfo;
import android.content.pm.PackageInstaller.SessionParams;
import android.content.pm.PackageManager;
+import android.content.pm.PackageParser;
+import android.content.pm.PackageParser.ApkLite;
+import android.content.pm.PackageParser.PackageLite;
+import android.content.pm.PackageParser.PackageParserException;
import android.content.pm.UserInfo;
import android.net.Uri;
import android.os.Binder;
@@ -398,11 +402,27 @@ public final class Pm {
*/
private int runInstall() throws RemoteException {
final InstallParams params = makeInstallParams();
+ final String inPath = nextArg();
+ if (params.sessionParams.sizeBytes < 0 && inPath != null) {
+ File file = new File(inPath);
+ if (file.isFile()) {
+ try {
+ ApkLite baseApk = PackageParser.parseApkLite(file, 0);
+ PackageLite pkgLite = new PackageLite(null, baseApk, null, null, null);
+ params.sessionParams.setSize(
+ PackageHelper.calculateInstalledSize(pkgLite, false,
+ params.sessionParams.abiOverride));
+ } catch (PackageParserException | IOException e) {
+ System.err.println("Error: Failed to parse APK file : " + e);
+ return 1;
+ }
+ }
+ }
+
final int sessionId = doCreateSession(params.sessionParams,
params.installerPackageName, params.userId);
try {
- final String inPath = nextArg();
if (inPath == null && params.sessionParams.sizeBytes == 0) {
System.err.println("Error: must either specify a package size or an APK file");
return 1;