diff options
| author | Pietro Albini <pietro@pietroalbini.org> | 2019-04-12 22:07:13 +0200 |
|---|---|---|
| committer | Pietro Albini <pietro@pietroalbini.org> | 2019-04-12 22:18:48 +0200 |
| commit | 4e920f2b04d61e2e54a080423bd766c5df1a97c8 (patch) | |
| tree | c3254f6d1699fb9903c34d5e1a3c53d53b88150f /src/ci/docker/scripts/android-sdk.sh | |
| parent | ee1474acc43fbf657b0fc910c139cf63cef34dc8 (diff) | |
| download | rust-4e920f2b04d61e2e54a080423bd766c5df1a97c8.tar.gz rust-4e920f2b04d61e2e54a080423bd766c5df1a97c8.zip | |
ci: use a custom android sdk manager with pinning and mirroring
Diffstat (limited to 'src/ci/docker/scripts/android-sdk.sh')
| -rwxr-xr-x[-rw-r--r--] | src/ci/docker/scripts/android-sdk.sh | 80 |
1 files changed, 21 insertions, 59 deletions
diff --git a/src/ci/docker/scripts/android-sdk.sh b/src/ci/docker/scripts/android-sdk.sh index e78e3795c04..0b86a2f2dff 100644..100755 --- a/src/ci/docker/scripts/android-sdk.sh +++ b/src/ci/docker/scripts/android-sdk.sh @@ -2,66 +2,28 @@ set -ex export ANDROID_HOME=/android/sdk PATH=$PATH:"${ANDROID_HOME}/tools/bin" +LOCKFILE="${ANDROID_HOME}/android-sdk.lock" -download_sdk() { - mkdir -p /android - curl -fo sdk.zip "https://dl.google.com/android/repository/sdk-tools-linux-$1.zip" - unzip -q sdk.zip -d "$ANDROID_HOME" - rm -f sdk.zip -} - -download_sysimage() { - abi=$1 - api=$2 - - # See https://developer.android.com/studio/command-line/sdkmanager.html for - # usage of `sdkmanager`. - # - # The output from sdkmanager is so noisy that it will occupy all of the 4 MB - # log extremely quickly. Thus we must silence all output. - yes | sdkmanager --licenses > /dev/null - yes | sdkmanager platform-tools \ - "platforms;android-$api" \ - "system-images;android-$api;default;$abi" > /dev/null -} - -download_emulator() { - # Download a pinned version of the emulator since upgrades can cause issues - curl -fo emulator.zip "https://dl.google.com/android/repository/emulator-linux-$1.zip" - rm -rf "${ANDROID_HOME}/emulator" - unzip -q emulator.zip -d "${ANDROID_HOME}" - rm -f emulator.zip -} - -create_avd() { - abi=$1 - api=$2 +# To add a new packages to the SDK or to update an existing one you need to +# run the command: +# +# android-sdk-manager.py add-to-lockfile $LOCKFILE <package-name> +# +# Then, after every lockfile update the mirror has to be synchronized as well: +# +# android-sdk-manager.py update-mirror $LOCKFILE +# +/scripts/android-sdk-manager.py install "${LOCKFILE}" "${ANDROID_HOME}" - # See https://developer.android.com/studio/command-line/avdmanager.html for - # usage of `avdmanager`. - echo no | avdmanager create avd \ - -n "$abi-$api" \ - -k "system-images;android-$api;default;$abi" -} +details=$(cat "${LOCKFILE}" \ + | grep system-images \ + | sed 's/^system-images;android-\([0-9]\+\);default;\([a-z0-9-]\+\) /\1 \2 /g') +api="$(echo "${details}" | awk '{print($1)}')" +abi="$(echo "${details}" | awk '{print($2)}')" -download_and_create_avd() { - download_sdk $1 - download_sysimage $2 $3 - create_avd $2 $3 - download_emulator $4 -} +# See https://developer.android.com/studio/command-line/avdmanager.html for +# usage of `avdmanager`. +echo no | avdmanager create avd \ + -n "$abi-$api" \ + -k "system-images;android-$api;default;$abi" -# Usage: -# -# download_and_create_avd 4333796 armeabi-v7a 18 5264690 -# -# 4333796 => -# SDK tool version. -# Copy from https://developer.android.com/studio/index.html#command-tools -# armeabi-v7a => -# System image ABI -# 18 => -# Android API Level (18 = Android 4.3 = Jelly Bean MR2) -# 5264690 => -# Android Emulator version. -# Copy from the "build_id" in the `/android/sdk/emulator/emulator -version` output |
