diff --git a/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/avd/AvdManager.java b/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/avd/AvdManager.java
index 925f321..36b3b7f 100644
--- a/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/avd/AvdManager.java
+++ b/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/avd/AvdManager.java
@@ -1044,7 +1044,13 @@
         }
 
         if (configIniFile != null) {
-            properties = SdkManager.parsePropertyFile(configIniFile, log);
+            if (!configIniFile.isFile()) {
+                if (log != null) {
+                    log.warning("Missing file '%1$s'.",  configIniFile.getPath());
+                }
+            } else {
+                properties = SdkManager.parsePropertyFile(configIniFile, log);
+            }
         }
 
         // get name
diff --git a/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/widgets/AvdStartDialog.java b/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/widgets/AvdStartDialog.java
index ffb8587..3d669f6 100644
--- a/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/widgets/AvdStartDialog.java
+++ b/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/widgets/AvdStartDialog.java
@@ -120,7 +120,7 @@
         l.setText("Skin:");
 
         l = new Label(parent, SWT.NONE);
-        l.setText(mSkinDisplay);
+        l.setText(mSkinDisplay == null ? "None" : mSkinDisplay);
         l.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
 
         l = new Label(parent, SWT.NONE);
@@ -417,27 +417,29 @@
         Map<String, String> prop = mAvd.getProperties();
         String skinName = prop.get(AvdManager.AVD_INI_SKIN_NAME);
 
-        Matcher m = AvdManager.NUMERIC_SKIN_SIZE.matcher(skinName);
-        if (m.matches()) {
-            mSize1 = Integer.parseInt(m.group(1));
-            mSize2 = Integer.parseInt(m.group(2));
-            mSkinDisplay = skinName;
-            mEnableScaling = true;
-        } else {
-            // The resolution is inside the layout file of the skin.
-            mEnableScaling = false; // default to false for now.
+        if (skinName != null) {
+            Matcher m = AvdManager.NUMERIC_SKIN_SIZE.matcher(skinName);
+            if (m != null && m.matches()) {
+                mSize1 = Integer.parseInt(m.group(1));
+                mSize2 = Integer.parseInt(m.group(2));
+                mSkinDisplay = skinName;
+                mEnableScaling = true;
+            }
+        }
 
-            // path to the skin layout file.
-            File skinFolder = new File(mSdkLocation, prop.get(AvdManager.AVD_INI_SKIN_PATH));
-            if (skinFolder.isDirectory()) {
-                File layoutFile = new File(skinFolder, "layout");
-                if (layoutFile.isFile()) {
-                    if (parseLayoutFile(layoutFile)) {
-                        mSkinDisplay = String.format("%1$s (%2$dx%3$d)", skinName, mSize1, mSize2);
-                        mEnableScaling = true;
-                    } else {
-                        mSkinDisplay = skinName;
-                    }
+        // The resolution is inside the layout file of the skin.
+        mEnableScaling = false; // default to false for now.
+
+        // path to the skin layout file.
+        File skinFolder = new File(mSdkLocation, prop.get(AvdManager.AVD_INI_SKIN_PATH));
+        if (skinFolder.isDirectory()) {
+            File layoutFile = new File(skinFolder, "layout");
+            if (layoutFile.isFile()) {
+                if (parseLayoutFile(layoutFile)) {
+                    mSkinDisplay = String.format("%1$s (%2$dx%3$d)", skinName, mSize1, mSize2);
+                    mEnableScaling = true;
+                } else {
+                    mSkinDisplay = skinName;
                 }
             }
         }
