From ee2dd3f0882c9c3962749020c6cfa9c651d85763 Mon Sep 17 00:00:00 2001 From: Ambrose Chua Date: Thu, 27 Jul 2023 13:48:46 +0800 Subject: [PATCH] Add Android SDK and Flutter SDK installation scripts --- .local/bin/install_android_sdk | 56 ++++++++++++++++++++++++++++++++++ .local/bin/install_flutter_sdk | 29 ++++++++++++++++++ .zshrc | 17 +++++++++++ 3 files changed, 102 insertions(+) create mode 100755 .local/bin/install_android_sdk create mode 100755 .local/bin/install_flutter_sdk diff --git a/.local/bin/install_android_sdk b/.local/bin/install_android_sdk new file mode 100755 index 0000000..0f98375 --- /dev/null +++ b/.local/bin/install_android_sdk @@ -0,0 +1,56 @@ +#!/bin/sh + +set -eu + +android_sdk_path="$HOME/.android/sdk" +jdk_path="$HOME/.android/jdk" + +install_jdk() { + version=20.0.2 + major_version=20 + build=9 + case "$(uname -s)" in + Darwin) os=mac;; + *) os=linux;; + esac + wget \ + --output-document /tmp/openjdk.tar.gz \ + https://github.com/adoptium/temurin${major_version}-binaries/releases/download/jdk-${version}%2B${build}/OpenJDK${major_version}U-jdk_x64_${os}_hotspot_${version}_${build}.tar.gz + mkdir -p /tmp/openjdk + tar -x \ + --gunzip \ + --directory /tmp/openjdk \ + --file /tmp/openjdk.tar.gz + rm -rf "$jdk_path" + mv /tmp/openjdk/jdk-${version}+${build} "$jdk_path" + rm -r /tmp/openjdk.tar.gz /tmp/openjdk +} + +install_android_sdk() { + sdkmanager_version=7.0 + version=9477386 + case "$(uname -s)" in + Darwin) os=mac;; + *) os=linux;; + esac + mkdir -p "$android_sdk_path/cmdline-tools" + wget \ + --output-document /tmp/commandlinetools.zip \ + https://dl.google.com/android/repository/commandlinetools-${os}-${version}_latest.zip + unzip -q /tmp/commandlinetools.zip -d /tmp/commandlinetools + rm -rf "$android_sdk_path/cmdline-tools/$sdkmanager_version" + mv /tmp/commandlinetools/cmdline-tools "$android_sdk_path/cmdline-tools/$sdkmanager_version" + rm -r /tmp/commandlinetools.zip /tmp/commandlinetools + + ln -s "$android_sdk_path/cmdline-tools/$sdkmanager_version" "$android_sdk_path/cmdline-tools/latest" + "$android_sdk_path/cmdline-tools/latest/bin/sdkmanager" --licenses + "$android_sdk_path/cmdline-tools/latest/bin/sdkmanager" tools + "$android_sdk_path/cmdline-tools/latest/bin/sdkmanager" platform-tools +} + +install_jdk +export PATH="$jdk_path/bin:$PATH" +install_android_sdk + +echo "To install platforms, run:" +echo ' sdkmanager "build-tools;33.0.2" "platforms;android-33"' diff --git a/.local/bin/install_flutter_sdk b/.local/bin/install_flutter_sdk new file mode 100755 index 0000000..0a6a7c8 --- /dev/null +++ b/.local/bin/install_flutter_sdk @@ -0,0 +1,29 @@ +#!/bin/sh + +set -eu + +flutter_path="$HOME/flutter" + +install_flutter_sdk() { + version=3.10.6 + channel=stable + case "$(uname -s)" in + Darwin) os=macos;; + *) os=linux;; + esac + wget \ + --output-document /tmp/flutter.tar.xz \ + https://storage.googleapis.com/flutter_infra_release/releases/${channel}/${os}/flutter_${os}_${version}-${channel}.tar.xz + mkdir -p /tmp/flutter + tar -x \ + --xz \ + --directory /tmp/flutter \ + --file /tmp/flutter.tar.xz + rm -rf "$flutter_path" + mv /tmp/flutter/flutter "$flutter_path" + rm -r /tmp/flutter.tar.xz /tmp/flutter + + "$flutter_path/bin/flutter" precache +} + +install_flutter_sdk diff --git a/.zshrc b/.zshrc index 85c7eaa..a7177e0 100644 --- a/.zshrc +++ b/.zshrc @@ -127,8 +127,25 @@ setup_g() { export PATH="$HOME/go/bin:$PATH" GOPATH="$HOME/go" GOROOT="$HOME/.go" # g-install: do NOT edit, see https://github.com/stefanmaric/g } [[ -f "$HOME/go/bin/g" ]] && setup_g +setup_android_sdk() { + # See ~/.local/bin/install_android_sdk + export ANDROID_SDK_ROOT="$HOME/.android/sdk" + export PATH="$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$ANDROID_SDK_ROOT/platform-tools:$PATH" + if [[ -d "$HOME/.android/jdk" ]]; then + export JAVA_HOME="$HOME/.android/jdk" + export PATH="$JAVA_HOME/bin:$PATH" + fi +} +[[ -d "$HOME/.android/sdk" ]] && setup_android_sdk setup_flutter() { + # See ~/.local/bin/install_android_sdk export PATH="$HOME/flutter/bin:$HOME/.pub-cache/bin:$PATH" + if ! which google-chrome >/dev/null 2>/dev/null; then + if which flatpak >/dev/null 2>/dev/null; then + flatpak_exports="$(flatpak --installations)/exports" + export CHROME_EXECUTABLE="$flatpak_exports/bin/com.google.Chrome" + fi + fi } [[ -d "$HOME/flutter/bin" ]] && setup_flutter setup_cargo() {