Mobile/Fennec/Android/mach bootstrap SDK dependencies

From MozillaWiki
< Mobile‎ | Fennec‎ | Android
Jump to: navigation, search

mcomella's understanding of the Android SDK dependencies:

Background

  • Google distributes the Android SDK through their `android` tool.
  • In order to be in compliance with their license, we need to allow users accept or decline their license before downloading/installing the SDK.

The problem

Google often updates the format of the SDK tool and its dependencies, breaking our build! e.g. bug 1275401

Our solution

Since we're required to allow users to accept their license, we wrote a wrapper around the SDK tool [1]. It parses the output of `android list sdk --no-ui --extended`, which lists available packages & updates for the SDK, and we pass the packages we'd like back to the command to download them.

[1]: It's unclear if we could have them accept the license from the tool and download the dependencies ourselves via URLs, which could simplify this.

Its problems

  • The output format of the SDK tool has changed in the past so our parsing fails
  • The parser only prints the a limited number of tools so if our desired version gets bumped off the list, we'll be unable to download it. I believe subsequent runs will continue to show this same number so if install packages the first time, taking them off the list, you may be able to install failed packages on a second run from the packages that are added to fill the void.

Alternatives

Jake Wharton made the sdk-manager-plugin for Gradle. We could incorporate this but it could get tricky if we are maintaining both our moz.build & Gradle build systems as we'd have to send everyone through the plugin for sdk updates.

nalexander was experimenting with this when I last checked – I don't know what the status of these experiments are.