diff --git a/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/AddonPackage.java b/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/AddonPackage.java index 4a19206d1..3c7b8c68e 100755 --- a/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/AddonPackage.java +++ b/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/AddonPackage.java @@ -126,8 +126,12 @@ public class AddonPackage extends Package { super.saveProperties(props); mVersion.saveProperties(props); - props.setProperty(PROP_NAME, mName); - props.setProperty(PROP_VENDOR, mVendor); + if (mName != null) { + props.setProperty(PROP_NAME, mName); + } + if (mVendor != null) { + props.setProperty(PROP_VENDOR, mVendor); + } } /** diff --git a/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/Package.java b/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/Package.java index 1fcd6b10c..a637fdeaf 100755 --- a/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/Package.java +++ b/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/Package.java @@ -145,9 +145,15 @@ public abstract class Package implements IDescription { */ void saveProperties(Properties props) { props.setProperty(PROP_REVISION, Integer.toString(mRevision)); - props.setProperty(PROP_LICENSE, mLicense); - props.setProperty(PROP_DESC, mDescription); - props.setProperty(PROP_DESC_URL, mDescUrl); + if (mLicense != null) { + props.setProperty(PROP_LICENSE, mLicense); + } + if (mDescription != null) { + props.setProperty(PROP_DESC, mDescription); + } + if (mDescUrl != null) { + props.setProperty(PROP_DESC_URL, mDescUrl); + } if (mSource != null) { props.setProperty(PROP_SOURCE_URL, mSource.getUrl()); diff --git a/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/PlatformPackage.java b/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/PlatformPackage.java index 324f51d73..c9a58f7f5 100755 --- a/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/PlatformPackage.java +++ b/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/PlatformPackage.java @@ -87,7 +87,9 @@ public class PlatformPackage extends Package { super.saveProperties(props); mVersion.saveProperties(props); - props.setProperty(PROP_VERSION, mVersionName); + if (mVersionName != null) { + props.setProperty(PROP_VERSION, mVersionName); + } } /** Returns the version, a string, for platform packages. */ diff --git a/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/UpdaterData.java b/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/UpdaterData.java index 321f5ca97..a9e8afae3 100755 --- a/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/UpdaterData.java +++ b/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/UpdaterData.java @@ -36,6 +36,8 @@ import com.android.sdkuilib.repository.UpdaterWindow.ISdkListener; import org.eclipse.swt.widgets.Shell; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -304,8 +306,21 @@ class UpdaterData { } catch (Throwable t) { // Display anything unexpected in the monitor. - monitor.setResult("Unexpected Error: %1$s", t.getMessage()); + String msg = t.getMessage(); + if (msg != null) { + monitor.setResult("Unexpected Error installing '%1%s: %2$s", + archive.getParentPackage().getShortDescription(), msg); + } else { + // no error info? get the stack call to display it + // At least that'll give us a better bug report. + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + t.printStackTrace(new PrintStream(baos)); + // and display it + monitor.setResult("Unexpected Error installing '%1$s\n%2$s", + archive.getParentPackage().getShortDescription(), + baos.toString()); + } } finally { // Always move the progress bar to the desired position.