1*b32fbb63SXin Li#!/bin/bash 2*b32fbb63SXin Li 3*b32fbb63SXin Li# Copyright (C) 2021 The Android Open Source Project 4*b32fbb63SXin Li# 5*b32fbb63SXin Li# Licensed under the Apache License, Version 2.0 (the "License"); 6*b32fbb63SXin Li# you may not use this file except in compliance with the License. 7*b32fbb63SXin Li# You may obtain a copy of the License at 8*b32fbb63SXin Li# 9*b32fbb63SXin Li# http://www.apache.org/licenses/LICENSE-2.0 10*b32fbb63SXin Li# 11*b32fbb63SXin Li# Unless required by applicable law or agreed to in writing, software 12*b32fbb63SXin Li# distributed under the License is distributed on an "AS IS" BASIS, 13*b32fbb63SXin Li# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*b32fbb63SXin Li# See the License for the specific language governing permissions and 15*b32fbb63SXin Li# limitations under the License. 16*b32fbb63SXin Li 17*b32fbb63SXin Lireadme() { 18*b32fbb63SXin Li echo ''' 19*b32fbb63SXin LiAdd an AVD image to Android SDK dir. So you can use team in Android Studio AVD manager. e.g. 20*b32fbb63SXin LiOEM_AVD_ZIP="$HOME/Downloads/sdk-repo-linux-system-images-eng.USER.zip" \ 21*b32fbb63SXin Li VARIANT="avd_car" \ 22*b32fbb63SXin Li API_LEVEL=30 \ 23*b32fbb63SXin Li ./add_avd_img.sh 24*b32fbb63SXin Li''' 25*b32fbb63SXin Li} 26*b32fbb63SXin Li 27*b32fbb63SXin Liif [[ -z $VARIANT || -z $API_LEVEL || -z $OEM_AVD_ZIP ]]; then 28*b32fbb63SXin Li readme 29*b32fbb63SXin Li exit 30*b32fbb63SXin Lifi 31*b32fbb63SXin Li 32*b32fbb63SXin LiMY_NAME=$0 33*b32fbb63SXin LiSCRIPT_NAME=${MY_NAME##*/} 34*b32fbb63SXin LiSCRIPT_DIR=${MY_NAME%/$SCRIPT_NAME} 35*b32fbb63SXin Liecho Running from $SCRIPT_DIR 36*b32fbb63SXin Li 37*b32fbb63SXin Li# set up for Linux or macOS 38*b32fbb63SXin LiOS="$(uname -s)" 39*b32fbb63SXin Liecho "Running on $OS" 40*b32fbb63SXin Liif [[ $OS == "Linux" ]]; then 41*b32fbb63SXin Li export ANDROID_SDK_DIR="$HOME/Android/Sdk" 42*b32fbb63SXin Li SED_I_CMD="sed -i " 43*b32fbb63SXin Lielif [[ $OS == "Darwin" ]]; then 44*b32fbb63SXin Li export ANDROID_SDK_DIR="$HOME/Library/Android/sdk" 45*b32fbb63SXin Li SED_I_CMD="sed -i ''" 46*b32fbb63SXin Lielse 47*b32fbb63SXin Li echo "ERROR: this does not work on $OS" 48*b32fbb63SXin Li exit 49*b32fbb63SXin Lifi 50*b32fbb63SXin Liecho "ANDROID_SDK_DIR=$ANDROID_SDK_DIR" 51*b32fbb63SXin Li 52*b32fbb63SXin LiPKG_XML_TEMPLATE="$SCRIPT_DIR/resource/package_template.xml" 53*b32fbb63SXin Liif [[ ! -e $PKG_XML_TEMPLATE ]]; then 54*b32fbb63SXin Li echo "Make sure there is package.xml template at: $PKG_XML_TEMPLATE." 55*b32fbb63SXin Li exit 56*b32fbb63SXin Lifi 57*b32fbb63SXin Liecho "PKG_XML_TEMPLATE=$PKG_XML_TEMPLATE" 58*b32fbb63SXin Li 59*b32fbb63SXin LiSYS_IMG_DIR="$ANDROID_SDK_DIR/system-images" 60*b32fbb63SXin Liif [[ ! -d $SYS_IMG_DIR ]]; then 61*b32fbb63SXin Li echo "ERROR: can not find the AVD system images dir: $SYS_IMG_DIR" 62*b32fbb63SXin Li echo "Try to reinstall Android Studio & SDK as https://developer.android.com/studio" 63*b32fbb63SXin Lifi 64*b32fbb63SXin Li 65*b32fbb63SXin Li# expected system-images folder format: android-apiLevel/variant/arch/ 66*b32fbb63SXin LiAVD_DIR="$ANDROID_SDK_DIR/system-images/android-$API_LEVEL/$VARIANT" 67*b32fbb63SXin Liif [[ -d $AVD_DIR ]]; then 68*b32fbb63SXin Li echo "NOTE: $AVD_DIR exists already. Delete it if to replace: rm -r $AVD_DIR" 69*b32fbb63SXin Lielse 70*b32fbb63SXin Li mkdir -p $AVD_DIR 71*b32fbb63SXin Li unzip $OEM_AVD_ZIP -d $AVD_DIR 72*b32fbb63SXin Lifi 73*b32fbb63SXin Li 74*b32fbb63SXin LiABI=$(ls $AVD_DIR) 75*b32fbb63SXin Liif [[ $ABI != "x86" && $ABI != "x86_64" && $ABI != "arm64" && $ABI != "arm64-v8a" ]]; then 76*b32fbb63SXin Li echo "ERROR: AVD image zip file format incorrect as $AVD_DIR should contain x86, x86_64, arm64 or arm64-v8a as: https://source.android.com/devices/automotive/start/avd#pack-an-avd-image-zip-file " 77*b32fbb63SXin Li exit 78*b32fbb63SXin Lifi 79*b32fbb63SXin Liecho "ABI=$ABI" 80*b32fbb63SXin Li 81*b32fbb63SXin LiPKG_XML_FILE="$AVD_DIR/$ABI/package.xml" 82*b32fbb63SXin Liif [[ -e $PKG_XML_FILE ]]; then 83*b32fbb63SXin Li echo "Delete $PKG_XML_FILE for this setup." 84*b32fbb63SXin Li rm $PKG_XML_FILE 85*b32fbb63SXin Lifi 86*b32fbb63SXin Li 87*b32fbb63SXin Liecho "Generate $PKG_XML_FILE accorindly" 88*b32fbb63SXin Lised "s/Pkg.Path/system-images;android-$API_LEVEL;$VARIANT;$ABI/" $PKG_XML_TEMPLATE > $PKG_XML_FILE 89*b32fbb63SXin Li$SED_I_CMD "s/AndroidVersion.ApiLevel/$API_LEVEL/" $PKG_XML_FILE 90*b32fbb63SXin Li$SED_I_CMD "s/SystemImage.TagId/android-automotive/" $PKG_XML_FILE 91*b32fbb63SXin Li$SED_I_CMD "s/SystemImage.TagDisplay/$VARIANT/" $PKG_XML_FILE 92*b32fbb63SXin Li$SED_I_CMD "s/SystemImage.Abi/$ABI/" $PKG_XML_FILE 93*b32fbb63SXin Li$SED_I_CMD "s/Addon.VendorId/$VARIANT/" $PKG_XML_FILE 94*b32fbb63SXin Li$SED_I_CMD "s/Addon.VendorDisplay/$VARIANT/" $PKG_XML_FILE 95*b32fbb63SXin Li$SED_I_CMD "s/Display.Name/$VARIANT/" $PKG_XML_FILE 96*b32fbb63SXin Li 97*b32fbb63SXin Liecho 98*b32fbb63SXin Liecho "Restart Android Studio & select [System Image] in [Virtual Device Configuration], [AVD Manager]" 99*b32fbb63SXin Liecho "ADDED: Hardware Category: Automotive, API Level: $API_LEVEL, ABI: $ABI, Target: $VARIANT" 100*b32fbb63SXin Liecho 101