use \'cmd\' command for install-multiple

am: 7549a460b1

Change-Id: Ie156783ef10ca96652febc262c137ba25d7a4838
This commit is contained in:
Todd Kennedy 2016-07-22 20:55:44 +00:00 committed by android-build-merger
commit 4af32c615a

View file

@ -1468,6 +1468,16 @@ static bool _is_valid_ack_reply_fd(const int ack_reply_fd) {
#endif
}
static bool _use_legacy_install() {
FeatureSet features;
std::string error;
if (!adb_get_feature_set(&features, &error)) {
fprintf(stderr, "error: %s\n", error.c_str());
return true;
}
return !CanUseFeature(features, kFeatureCmd);
}
int adb_commandline(int argc, const char **argv) {
int no_daemon = 0;
int is_daemon = 0;
@ -1862,17 +1872,10 @@ int adb_commandline(int argc, const char **argv) {
}
else if (!strcmp(argv[0], "install")) {
if (argc < 2) return usage();
FeatureSet features;
std::string error;
if (!adb_get_feature_set(&features, &error)) {
fprintf(stderr, "error: %s\n", error.c_str());
return 1;
if (_use_legacy_install()) {
return install_app_legacy(transport_type, serial, argc, argv);
}
if (CanUseFeature(features, kFeatureCmd)) {
return install_app(transport_type, serial, argc, argv);
}
return install_app_legacy(transport_type, serial, argc, argv);
return install_app(transport_type, serial, argc, argv);
}
else if (!strcmp(argv[0], "install-multiple")) {
if (argc < 2) return usage();
@ -1880,17 +1883,10 @@ int adb_commandline(int argc, const char **argv) {
}
else if (!strcmp(argv[0], "uninstall")) {
if (argc < 2) return usage();
FeatureSet features;
std::string error;
if (!adb_get_feature_set(&features, &error)) {
fprintf(stderr, "error: %s\n", error.c_str());
return 1;
if (_use_legacy_install()) {
return uninstall_app_legacy(transport_type, serial, argc, argv);
}
if (CanUseFeature(features, kFeatureCmd)) {
return uninstall_app(transport_type, serial, argc, argv);
}
return uninstall_app_legacy(transport_type, serial, argc, argv);
return uninstall_app(transport_type, serial, argc, argv);
}
else if (!strcmp(argv[0], "sync")) {
std::string src;
@ -2104,7 +2100,6 @@ static int install_multiple_app(TransportType transport, const char* serial, int
int i;
struct stat sb;
uint64_t total_size = 0;
// Find all APK arguments starting at end.
// All other arguments passed through verbatim.
int first_apk = -1;
@ -2129,7 +2124,14 @@ static int install_multiple_app(TransportType transport, const char* serial, int
return 1;
}
std::string cmd = android::base::StringPrintf("exec:pm install-create -S %" PRIu64, total_size);
std::string install_cmd;
if (_use_legacy_install()) {
install_cmd = "exec:pm";
} else {
install_cmd = "exec:cmd package";
}
std::string cmd = android::base::StringPrintf("%s install-create -S %" PRIu64, install_cmd.c_str(), total_size);
for (i = 1; i < first_apk; i++) {
cmd += " " + escape_arg(argv[i]);
}
@ -2171,8 +2173,8 @@ static int install_multiple_app(TransportType transport, const char* serial, int
}
std::string cmd = android::base::StringPrintf(
"exec:pm install-write -S %" PRIu64 " %d %d_%s -",
static_cast<uint64_t>(sb.st_size), session_id, i, adb_basename(file).c_str());
"%s install-write -S %" PRIu64 " %d %d_%s -",
install_cmd.c_str(), static_cast<uint64_t>(sb.st_size), session_id, i, adb_basename(file).c_str());
int localFd = adb_open(file, O_RDONLY);
if (localFd < 0) {
@ -2207,8 +2209,8 @@ static int install_multiple_app(TransportType transport, const char* serial, int
finalize_session:
// Commit session if we streamed everything okay; otherwise abandon
std::string service =
android::base::StringPrintf("exec:pm install-%s %d",
success ? "commit" : "abandon", session_id);
android::base::StringPrintf("%s install-%s %d",
install_cmd.c_str(), success ? "commit" : "abandon", session_id);
fd = adb_connect(service, &error);
if (fd < 0) {
fprintf(stderr, "Connect error for finalize: %s\n", error.c_str());