@@ -54,8 +54,10 @@ public class SDKDownloader extends JDialog implements PropertyChangeListener {
5454 private static final String URL_USB_DRIVER = "https://dl-ssl.google.com//android/repository/latest_usb_driver_windows.zip" ;
5555 private static final String URL_SYS_IMAGES = "https://dl-ssl.google.com/android/repository/sys-img/android/sys-img.xml" ;
5656 private static final String URL_SYS_IMAGES_FOLDER = "http://dl-ssl.google.com/android/repository/sys-img/android/" ;
57- private static final String SYSTEM_IMAGE = "Intel x86 Atom System Image" ;
58- // private static final String URL_SYS_IMAGES_WEAR = "https://dl-ssl.google.com/android/repository/sys-img/android-wear/sys-img.xml";
57+ private static final String URL_SYS_IMAGES_WEAR = "https://dl-ssl.google.com/android/repository/sys-img/android-wear/sys-img.xml" ;
58+ private static final String URL_SYS_IMAGES_WEAR_FOLDER = "https://dl-ssl.google.com/android/repository/sys-img/android-wear" ;
59+ private static final String SYSTEM_IMAGE = "Intel x86 Atom System Image" ;
60+ private static final String SYSTEM_IMAGE_WEAR = "Android Wear Intel x86 Atom System Image" ;
5961
6062 private static final String PROPERTY_CHANGE_EVENT_TOTAL = "total" ;
6163 private static final String PROPERTY_CHANGE_EVENT_DOWNLOADED = "downloaded" ;
@@ -74,8 +76,10 @@ public class SDKDownloader extends JDialog implements PropertyChangeListener {
7476
7577 class SDKUrlHolder {
7678 public String platformVersion ;
77- public String platformToolsUrl , buildToolsUrl , platformUrl , sysImgUrl , sysImgTag , toolsUrl ;
78- public String platformToolsFilename , buildToolsFilename , platformFilename , sysImgFilename , toolsFilename ;
79+ public String platformToolsUrl , buildToolsUrl , platformUrl , toolsUrl ;
80+ public String sysImgUrl , sysImgTag , sysImgWearUrl , sysImgWearTag ;
81+ public String platformToolsFilename , buildToolsFilename , platformFilename , toolsFilename ;
82+ public String sysImgFilename , sysImgWearFilename ;
7983 public int totalSize = 0 ;
8084 }
8185
@@ -111,7 +115,8 @@ protected Object doInBackground() throws Exception {
111115 if (!tempFolder .exists ()) tempFolder .mkdir ();
112116
113117 try {
114- SDKUrlHolder downloadUrls = getDownloadUrls (URL_REPOSITORY , URL_SYS_IMAGES , Platform .getName ());
118+ SDKUrlHolder downloadUrls = getDownloadUrls (URL_REPOSITORY ,
119+ URL_SYS_IMAGES , URL_SYS_IMAGES_WEAR , Platform .getName ());
115120 firePropertyChange (PROPERTY_CHANGE_EVENT_TOTAL , 0 , downloadUrls .totalSize );
116121 totalSize = downloadUrls .totalSize ;
117122
@@ -137,7 +142,15 @@ protected Object doInBackground() throws Exception {
137142 if (!tmp .exists ()) tmp .mkdir ();
138143 File sysImgFinalFolder = new File (tmp , downloadUrls .sysImgTag );
139144 if (!sysImgFinalFolder .exists ()) sysImgFinalFolder .mkdir ();
140- downloadAndUnpack (downloadUrls .sysImgUrl , downloadedSysImg , sysImgFinalFolder , false );
145+ downloadAndUnpack (downloadUrls .sysImgUrl , downloadedSysImg , sysImgFinalFolder , false );
146+
147+ // wear system images
148+ File downloadedSysImgWear = new File (tempFolder , downloadUrls .sysImgWearFilename );
149+ tmp = new File (sysImgFolder , "android-" + AndroidBuild .target_sdk );
150+ if (!tmp .exists ()) tmp .mkdir ();
151+ File sysImgWearFinalFolder = new File (tmp , downloadUrls .sysImgWearTag );
152+ if (!sysImgWearFinalFolder .exists ()) sysImgWearFinalFolder .mkdir ();
153+ downloadAndUnpack (downloadUrls .sysImgUrl , downloadedSysImgWear , sysImgWearFinalFolder , false );
141154
142155 // usb driver
143156 if (Platform .isWindows ()) {
@@ -223,7 +236,8 @@ private void downloadAndUnpack(String urlString, File saveTo,
223236 }
224237
225238 private SDKUrlHolder getDownloadUrls (String repositoryUrl ,
226- String repositorySysImgUrlString , String requiredHostOs )
239+ String repositorySysImgUrlString , String repositorySysImgWearUrlString ,
240+ String requiredHostOs )
227241 throws ParserConfigurationException , IOException , SAXException {
228242 SDKUrlHolder urlHolder = new SDKUrlHolder ();
229243
@@ -322,6 +336,31 @@ private SDKUrlHolder getDownloadUrls(String repositoryUrl,
322336 }
323337 }
324338
339+ // system image
340+ Document docSysImgWear = db .parse (new URL (repositorySysImgWearUrlString ).openStream ());
341+ NodeList sysImgWearList = docSysImgWear .getElementsByTagName ("sdk:system-image" );
342+ for (int i = 0 ; i < sysImgWearList .getLength (); i ++) {
343+ Node img = sysImgWearList .item (i );
344+ NodeList level = ((Element ) img ).getElementsByTagName ("sdk:api-level" );
345+ NodeList desc = ((Element ) img ).getElementsByTagName ("sdk:description" );
346+ NodeList codename = ((Element ) img ).getElementsByTagName ("sdk:codename" );
347+ // Only considering nodes without a codename, which correspond to the platform
348+ // pre-releases.
349+ if (level .item (0 ).getTextContent ().equals (AndroidBuild .target_sdk ) &&
350+ desc .item (0 ).getTextContent ().equals (SYSTEM_IMAGE_WEAR ) &&
351+ codename .item (0 ) == null ) {
352+ NodeList tag = ((Element ) img ).getElementsByTagName ("sdk:tag-id" );
353+ urlHolder .sysImgWearTag = tag .item (0 ).getTextContent ();
354+ archiveListItem = ((Element ) img ).getElementsByTagName ("sdk:archives" ).item (0 );
355+ Node archiveItem = ((Element ) archiveListItem ).getElementsByTagName ("sdk:archive" ).item (0 );
356+ urlHolder .sysImgWearFilename = ((Element ) archiveItem ).getElementsByTagName ("sdk:url" ).item (0 ).getTextContent ();
357+ urlHolder .sysImgWearUrl = URL_SYS_IMAGES_WEAR_FOLDER + urlHolder .sysImgFilename ;
358+ urlHolder .totalSize += Integer .parseInt (((Element ) archiveItem ).getElementsByTagName ("sdk:size" ).item (0 ).getTextContent ());
359+ break ;
360+ }
361+ }
362+
363+
325364 return urlHolder ;
326365 }
327366 }
0 commit comments