add option to launch or not an emulator. Also fix bug in
DeviceBuildInfoInjector.

Change-Id: I086f2d03105812c3aa83dfa1d79fa264038336d8
diff --git a/src/com/android/tradefed/targetprep/DeviceBuildInfoInjector.java b/src/com/android/tradefed/targetprep/DeviceBuildInfoInjector.java
index f187b6e..b0e9e27 100644
--- a/src/com/android/tradefed/targetprep/DeviceBuildInfoInjector.java
+++ b/src/com/android/tradefed/targetprep/DeviceBuildInfoInjector.java
@@ -50,19 +50,30 @@
     @Override
     public void setUp(ITestDevice device, IBuildInfo buildInfo) throws TargetSetupError,
             BuildError, DeviceNotAvailableException {
-        DeviceBuildDescriptor.injectDeviceAttributes(device, buildInfo);
         if (mOverrideDeviceBuildId != null) {
             buildInfo.addBuildAttribute(DeviceBuildDescriptor.DEVICE_BUILD_ID,
                     mOverrideDeviceBuildId);
+        } else {
+            buildInfo.addBuildAttribute(DeviceBuildDescriptor.DEVICE_BUILD_ID, device.getBuildId());
         }
         if (mOverrideDeviceBuildAlias != null) {
             buildInfo.addBuildAttribute(DeviceBuildDescriptor.DEVICE_BUILD_ALIAS,
                     mOverrideDeviceBuildAlias);
+        } else {
+            buildInfo.addBuildAttribute(DeviceBuildDescriptor.DEVICE_BUILD_ALIAS,
+                    device.getBuildAlias());
         }
         if (mOverrideDeviceBuildFlavor != null){
             buildInfo.addBuildAttribute(DeviceBuildDescriptor.DEVICE_BUILD_FLAVOR,
                     mOverrideDeviceBuildFlavor);
+        } else {
+            String buildFlavor = String.format("%s-%s", device.getProperty("ro.product.name"),
+                    device.getProperty("ro.build.type"));
+            buildInfo.addBuildAttribute(DeviceBuildDescriptor.DEVICE_BUILD_FLAVOR, buildFlavor);
         }
-        DeviceBuildDescriptor.injectDeviceAttributes(device, buildInfo);
+        buildInfo.addBuildAttribute(DeviceBuildDescriptor.DEVICE_DESC,
+                DeviceBuildDescriptor.generateDeviceDesc(device));
+        buildInfo.addBuildAttribute(DeviceBuildDescriptor.DEVICE_PRODUCT,
+                DeviceBuildDescriptor.generateDeviceProduct(device));
     }
 }
diff --git a/src/com/android/tradefed/targetprep/LocalSdkAvdPreparer.java b/src/com/android/tradefed/targetprep/LocalSdkAvdPreparer.java
index 3779c6e..a72c599 100644
--- a/src/com/android/tradefed/targetprep/LocalSdkAvdPreparer.java
+++ b/src/com/android/tradefed/targetprep/LocalSdkAvdPreparer.java
@@ -54,6 +54,10 @@
             DeviceNotAvailableException, BuildError {
         mSdkBuildInfo.setSdkDir(mLocalSdkPath);
         mSdkBuildInfo.setAdtDir(null);
-        launchEmulatorForAvd(mSdkBuildInfo, device, createAvd(mSdkBuildInfo));
+        // Note: If we want to launch the emulator, we need to pass the --new-emulator flag
+        // defined in DeviceSelectionOptions, which will create a stub emulator.
+        if (device.getIDevice().isEmulator()) {
+            launchEmulatorForAvd(mSdkBuildInfo, device, createAvd(mSdkBuildInfo));
+        }
     }
 }