#!/bin/bash # Fetches what the Android 4.1 build needs beyond tools/setup_toolchain.sh: ExoPlayer 2.18.7 (Google's Maven) and # Guava (Maven Central), checked against these SHA-256s, into $TOOLS/exoplayer-2.18.7 (TOOLS default ~/android-toolchain). # 2.18.7 because it's the newest that needs only Guava (2.19 adds AndroidX Core); every 2.x runs on Android 4.1. set -euo pipefail T=${TOOLS:-$HOME/android-toolchain} D=$T/exoplayer-2.18.7 G=https://dl.google.com/dl/android/maven2/com/google/android/exoplayer M=https://repo1.maven.org/maven2/com/google/guava mkdir -p "$D" tmp=$(mktemp -d) trap 'rm -rf "$tmp"' EXIT get() { # url sha256 file if [ -f "$D/$3" ] && [ "$(shasum -a 256 "$D/$3" | cut -d' ' -f1)" = "$2" ]; then return; fi curl -fsSL -o "$tmp/$3" "$1" [ "$(shasum -a 256 "$tmp/$3" | cut -d' ' -f1)" = "$2" ] || { echo "$3: checksum mismatch"; exit 1; } mv "$tmp/$3" "$D/$3" } for m in core:2b51c5f07aa25f89e4adb7a833073e1a4adc5b87a388bd0045ebc3429b1bf42f \ common:adfef7d3cbd69dd8fcc4ce05642a886c9fbc2764826bc39a6075ba6a0c62d003 \ datasource:cbe67ad9eaf94be7b35d1a625252a79ed5c18601d19f7b4d787acfbcea009208 \ decoder:598c0b444db71770f9b89b4e444e34cb03d5ed2eb5c12fb062afb2f9b05b9a1e \ extractor:c3e34c7b07ecd3c78a75bb7185671030bea4371ac88d854000a856fc05f7eeff \ database:31f0929246fb81296345be8414e7fa080a82deb8d382eb5d875974649030619d; do a=${m%%:*}; sum=${m#*:} get "$G/exoplayer-$a/2.18.7/exoplayer-$a-2.18.7.aar" "$sum" "exoplayer-$a.aar" # an AAR is a zip: the code is classes.jar, the keep rules for apps that shrink it are proguard.txt unzip -o -q -d "$tmp/$a" "$D/exoplayer-$a.aar" cp "$tmp/$a/classes.jar" "$D/exoplayer-$a.jar" if [ -f "$tmp/$a/proguard.txt" ]; then cp "$tmp/$a/proguard.txt" "$D/exoplayer-$a.pro"; fi rm "$D/exoplayer-$a.aar" done get "$M/guava/31.0.1-android/guava-31.0.1-android.jar" 9425a423a4cb9d9db0356300722d9bd8e634cf539f29d97bb84f457cccd16eb8 guava.jar get "$M/failureaccess/1.0.1/failureaccess-1.0.1.jar" a171ee4c734dd2da837e4b16be9df4661afab72a41adaf31eb84dfdaf936ca26 failureaccess.jar ls "$D"