blob: d4b0ff326a27d2b5f0148bcc7e97cd9d77197730 [file] [log] [blame]
Aurimas Liutikasc1250fc2021-02-04 16:08:34 -08001#!/bin/bash
Aurimas Liutikas65920d32023-02-14 18:38:24 -08002
3function echoAndDo() {
4 echo "$@"
5 eval "$@"
6}
7
Julia McClellanff03ac12024-09-30 09:21:02 -04008# Substitute for `sed -i` because different versions of sed differ in how to supply the argument for -i.
9function sedInPlace() {
10 TEMP_FILE=".sedOutput.tmp"
11 sed "$1" $2 > $TEMP_FILE
12 cat $TEMP_FILE > $2
13 rm $TEMP_FILE
14}
15
Jeff Gastonb5572962023-09-07 16:49:51 -040016# Versions that the user should update when running this script
Aurimas Liutikas65920d32023-02-14 18:38:24 -080017echo Getting Studio version and link
Louis Pullen-Freilich9a5d9082025-01-08 06:34:49 -080018AGP_VERSION=${1:-8.9.0-alpha01}
19STUDIO_VERSION_STRING=${2:-"Android Studio Meerkat | 2024.3.1 Canary 1"}
Jeff Gastonb5572962023-09-07 16:49:51 -040020
21# Get studio version number from version name
Aurimas Liutikas65920d32023-02-14 18:38:24 -080022STUDIO_IFRAME_LINK=`curl "https://developer.android.com/studio/archive.html" | grep "<iframe " | sed "s/.* src=\"\([^\"]*\)\".*/\1/g"`
23echo iframe link $STUDIO_IFRAME_LINK
24STUDIO_IFRAME_REDIRECT=`curl -s $STUDIO_IFRAME_LINK | grep href | sed 's/.*href="\([^"]*\)".*/\1/g'`
25echo iframe redirect $STUDIO_IFRAME_REDIRECT
26STUDIO_LINK=`curl -s $STUDIO_IFRAME_REDIRECT | grep -C30 "$STUDIO_VERSION_STRING" | grep Linux | tail -n 1 | sed 's/.*a href="\(.*\).*"/\1/g' | sed 's/>.*//'`
27echo STUDIO_LINK: $STUDIO_LINK
28if [ "$STUDIO_LINK" == "" ]; then
29 echo "Error: STUDIO_LINK must not be empty. Open this script and look for parsing errors. Does studio version '$STUDIO_VERSION_STRING' exist?"
30 exit 1
31fi
Aurimas Liutikase54847d2021-05-19 10:58:12 -070032STUDIO_VERSION=`echo $STUDIO_LINK | sed "s/.*ide-zips\/\(.*\)\/android-studio-.*/\1/g"`
Aurimas Liutikasc1250fc2021-02-04 16:08:34 -080033
34# Update AGP
Aurimas Liutikas4e9ba5f2022-01-13 16:15:21 -080035ARTIFACTS_TO_DOWNLOAD="com.android.tools.build:gradle:$AGP_VERSION,"
36ARTIFACTS_TO_DOWNLOAD+="androidx.databinding:viewbinding:$AGP_VERSION,"
Fred Sladkey2875ccf2023-11-06 16:01:31 -050037ARTIFACTS_TO_DOWNLOAD+="com.android.kotlin.multiplatform.library:com.android.kotlin.multiplatform.library.gradle.plugin:$AGP_VERSION,"
Fred Sladkey1e38ee32024-07-30 13:55:01 -040038ARTIFACTS_TO_DOWNLOAD+="com.android.settings:com.android.settings.gradle.plugin:$AGP_VERSION,"
Aurimas Liutikasc1250fc2021-02-04 16:08:34 -080039AAPT2_VERSIONS=`curl "https://dl.google.com/dl/android/maven2/com/android/tools/build/group-index.xml" | grep aapt2-proto | sed 's/.*versions="\(.*\)"\/>/\1/g'`
40AAPT2_VERSION=`echo $AAPT2_VERSIONS | sed "s/.*\($AGP_VERSION-[0-9]*\).*/\1/g"`
Aurimas Liutikas4e9ba5f2022-01-13 16:15:21 -080041ARTIFACTS_TO_DOWNLOAD+="com.android.tools.build:aapt2:$AAPT2_VERSION:linux,"
42ARTIFACTS_TO_DOWNLOAD+="com.android.tools.build:aapt2:$AAPT2_VERSION:osx,"
43ARTIFACTS_TO_DOWNLOAD+="com.android.tools.build:aapt2:$AAPT2_VERSION,"
Aurimas Liutikasc1250fc2021-02-04 16:08:34 -080044LINT_VERSIONS=`curl "https://dl.google.com/dl/android/maven2/com/android/tools/lint/group-index.xml" | grep lint | sed 's/.*versions="\(.*\)"\/>/\1/g'`
Julia McClellanff03ac12024-09-30 09:21:02 -040045LINT_MINOR_VERSION=`echo $AGP_VERSION | sed -r 's/[0-9]+\.(.*)/\1/g'`
46LINT_VERSION=`echo $LINT_VERSIONS | sed -r "s/.*[,| ]([0-9]+\.$LINT_MINOR_VERSION).*/\1/g"`
Aurimas Liutikas4e9ba5f2022-01-13 16:15:21 -080047ARTIFACTS_TO_DOWNLOAD+="com.android.tools.lint:lint:$LINT_VERSION,"
48ARTIFACTS_TO_DOWNLOAD+="com.android.tools.lint:lint-tests:$LINT_VERSION,"
49ARTIFACTS_TO_DOWNLOAD+="com.android.tools.lint:lint-gradle:$LINT_VERSION,"
Aurimas Liutikas39f22262022-11-03 09:00:24 -070050ARTIFACTS_TO_DOWNLOAD+="com.android.tools:ninepatch:$LINT_VERSION,"
Aurimas Liutikasc1250fc2021-02-04 16:08:34 -080051
Aurimas Liutikas65920d32023-02-14 18:38:24 -080052# Update libs.versions.toml
53echo Updating dependency versions
Julia McClellan5a3e7122024-10-16 11:16:35 -040054sedInPlace "s/androidGradlePlugin = \".*/androidGradlePlugin = \"$AGP_VERSION\"/g" gradle/libs.versions.toml
Julia McClellanff03ac12024-09-30 09:21:02 -040055sedInPlace "s/androidLint = \".*/androidLint = \"$LINT_VERSION\"/g" gradle/libs.versions.toml
Julia McClellan5a3e7122024-10-16 11:16:35 -040056sedInPlace "s/androidStudio = \".*/androidStudio = \"$STUDIO_VERSION\"/g" gradle/libs.versions.toml
Dustin Lam1ecd1f22021-07-15 15:29:45 -070057
Julia McClellanff03ac12024-09-30 09:21:02 -040058# update settings.gradle -- don't match the line with :$agpOverride
59sedInPlace "s/com.android.settings:com.android.settings.gradle.plugin:[^$][0-9a-z\.\-]*/com.android.settings:com.android.settings.gradle.plugin:$AGP_VERSION/g" settings.gradle
Fred Sladkey1e38ee32024-07-30 13:55:01 -040060
Dustin Lam1ecd1f22021-07-15 15:29:45 -070061# Pull all UTP artifacts for ADT version
62ADT_VERSION=${3:-$LINT_VERSION}
Aurimas Liutikasb0470e52022-01-31 15:09:55 -080063while read line
Dustin Lam1ecd1f22021-07-15 15:29:45 -070064 do
Julia McClellanff03ac12024-09-30 09:21:02 -040065 ARTIFACT=`echo $line | sed -r 's/<([[:lower:]-]+).*/\1/g'`
Aurimas Liutikas4e9ba5f2022-01-13 16:15:21 -080066 ARTIFACTS_TO_DOWNLOAD+="com.android.tools.utp:$ARTIFACT:$ADT_VERSION,"
Aurimas Liutikasb0470e52022-01-31 15:09:55 -080067 done < <(curl -sL "https://dl.google.com/android/maven2/com/android/tools/utp/group-index.xml" \
68 | tail -n +3 \
Julia McClellanff03ac12024-09-30 09:21:02 -040069 | sed '$ d') # Remove the last line
Dustin Lam1ecd1f22021-07-15 15:29:45 -070070
Aurimas Liutikas36de1fe2023-11-29 15:12:02 -080071ATP_VERSION=${4:-0.0.9-alpha02}
Aurimas Liutikas4e9ba5f2022-01-13 16:15:21 -080072ARTIFACTS_TO_DOWNLOAD+="com.google.testing.platform:android-test-plugin:$ATP_VERSION,"
73ARTIFACTS_TO_DOWNLOAD+="com.google.testing.platform:launcher:$ATP_VERSION,"
74ARTIFACTS_TO_DOWNLOAD+="com.google.testing.platform:android-driver-instrumentation:$ATP_VERSION,"
75ARTIFACTS_TO_DOWNLOAD+="com.google.testing.platform:core:$ATP_VERSION"
Dustin Lam1ecd1f22021-07-15 15:29:45 -070076
Aurimas Liutikas4e9ba5f2022-01-13 16:15:21 -080077# Download all the artifacts
Aurimas Liutikas65920d32023-02-14 18:38:24 -080078echoAndDo ./development/importMaven/importMaven.sh "$ARTIFACTS_TO_DOWNLOAD"