diff --git a/tools/sdkmanager/app/src/com/android/sdkmanager/Main.java b/tools/sdkmanager/app/src/com/android/sdkmanager/Main.java index fc9a2bee8..35d9bb165 100644 --- a/tools/sdkmanager/app/src/com/android/sdkmanager/Main.java +++ b/tools/sdkmanager/app/src/com/android/sdkmanager/Main.java @@ -454,16 +454,18 @@ class Main { // display some extra values. Map properties = info.getProperties(); - String skin = properties.get(AvdManager.AVD_INI_SKIN_NAME); - if (skin != null) { - mSdkLog.printf(" Skin: %s\n", skin); - } - String sdcard = properties.get(AvdManager.AVD_INI_SDCARD_SIZE); - if (sdcard == null) { - sdcard = properties.get(AvdManager.AVD_INI_SDCARD_PATH); - } - if (sdcard != null) { - mSdkLog.printf(" Sdcard: %s\n", sdcard); + if (properties != null) { + String skin = properties.get(AvdManager.AVD_INI_SKIN_NAME); + if (skin != null) { + mSdkLog.printf(" Skin: %s\n", skin); + } + String sdcard = properties.get(AvdManager.AVD_INI_SDCARD_SIZE); + if (sdcard == null) { + sdcard = properties.get(AvdManager.AVD_INI_SDCARD_PATH); + } + if (sdcard != null) { + mSdkLog.printf(" Sdcard: %s\n", sdcard); + } } } @@ -508,7 +510,7 @@ class Main { } try { - boolean removePrevious = false; + boolean removePrevious = mSdkCommandLine.getFlagForce(); AvdManager avdManager = new AvdManager(mSdkManager, mSdkLog); String avdName = mSdkCommandLine.getParamName(); @@ -522,8 +524,7 @@ class Main { AvdInfo info = avdManager.getAvd(avdName, false /*validAvdOnly*/); if (info != null) { - if (mSdkCommandLine.getFlagForce()) { - removePrevious = true; + if (removePrevious) { mSdkLog.warning( "Android Virtual Device '%s' already exists and will be replaced.", avdName); diff --git a/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/avd/AvdManager.java b/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/avd/AvdManager.java index 1936f8a02..23b2f26b6 100644 --- a/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/avd/AvdManager.java +++ b/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/avd/AvdManager.java @@ -185,7 +185,7 @@ public final class AvdManager { * @param targetHash the target hash * @param target The target. Can be null, if the target was not resolved. * @param properties The property map. Can be null. - * @param error The error describing why this AVD is invalid. Cannot be null. + * @param status The {@link AvdStatus} of this AVD. Cannot be null. */ public AvdInfo(String name, String path, String targetHash, IAndroidTarget target, Map properties, AvdStatus status) { @@ -193,7 +193,7 @@ public final class AvdManager { mPath = path; mTargetHash = targetHash; mTarget = target; - mProperties = Collections.unmodifiableMap(properties); + mProperties = properties == null ? null : Collections.unmodifiableMap(properties); mStatus = status; } @@ -214,7 +214,7 @@ public final class AvdManager { return mTargetHash; } - /** Returns the target of the AVD, or null if it has not been resolved */ + /** Returns the target of the AVD, or null if it has not been resolved. */ public IAndroidTarget getTarget() { return mTarget; } @@ -257,7 +257,7 @@ public final class AvdManager { } /** - * Returns a map of properties for the AVD. + * Returns an unmodifiable map of properties for the AVD. This can be null. */ public Map getProperties() { return mProperties; @@ -1173,7 +1173,9 @@ public final class AvdManager { // create a new map Map properties = new HashMap(); - properties.putAll(oldProperties); + if (oldProperties != null) { + properties.putAll(oldProperties); + } AvdStatus status;