Skip to content

Commit ac4f28a

Browse files
committed
download system image for wear
1 parent e45c578 commit ac4f28a

File tree

1 file changed

+46
-7
lines changed

1 file changed

+46
-7
lines changed

src/processing/mode/android/SDKDownloader.java

Lines changed: 46 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)