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 LiChange all AVD configuration for bigger RAM, heap & data-disk sizes. So it can perform better. 20*b32fbb63SXin LiIf TAG_ID of AVD is empty, it will change all AVDs. e.g. 21*b32fbb63SXin Li 22*b32fbb63SXin LiRAM=4096 HEAP=576 DATA_DISK=6000 AVD_ROOT_DIR="$HOME/.android/avd" TAG_ID="android-automotive" ./patch_all_avds.sh 23*b32fbb63SXin Li''' 24*b32fbb63SXin Li} 25*b32fbb63SXin Li 26*b32fbb63SXin Li# set up for Linux or macOS 27*b32fbb63SXin LiOS="$(uname -s)" 28*b32fbb63SXin Liecho "Running on $OS" 29*b32fbb63SXin Liif [[ $OS == "Linux" ]]; then 30*b32fbb63SXin Li SED_I_CMD="sed -i " 31*b32fbb63SXin Lielif [[ $OS == "Darwin" ]]; then 32*b32fbb63SXin Li SED_I_CMD="sed -i ''" 33*b32fbb63SXin Lielse 34*b32fbb63SXin Li echo "ERROR: this does not work on $OS" 35*b32fbb63SXin Li exit 36*b32fbb63SXin Lifi 37*b32fbb63SXin Li 38*b32fbb63SXin LiMY_NAME=$0 39*b32fbb63SXin LiSCRIPT_NAME=${MY_NAME##*/} 40*b32fbb63SXin LiSCRIPT_DIR=${MY_NAME%/$SCRIPT_NAME} 41*b32fbb63SXin Liecho Running from $SCRIPT_DIR 42*b32fbb63SXin Li 43*b32fbb63SXin Li# Export VAR with the value of the key in a file as: 44*b32fbb63SXin Li# getValue "VAR" "KEY" "config.ini FILE" 45*b32fbb63SXin Li# e.g. getValue "MY_AVD_ID" "AvdId" "$avd_dir/config.ini" 46*b32fbb63SXin LigetValue() { 47*b32fbb63SXin Li VAR=$1 48*b32fbb63SXin Li KEY=$2 49*b32fbb63SXin Li FILE=$3 50*b32fbb63SXin Li LINE=$(cat $FILE | grep $KEY) 51*b32fbb63SXin Li VALUE=${LINE##*=} 52*b32fbb63SXin Li export "${VAR}=$VALUE" 53*b32fbb63SXin Li echo "${VAR}=$VALUE" 54*b32fbb63SXin Li} 55*b32fbb63SXin Li 56*b32fbb63SXin Liif [[ -z $AVD_ROOT_DIR ]]; then 57*b32fbb63SXin Li AVD_ROOT_DIR="$HOME/.android/avd" 58*b32fbb63SXin Lifi 59*b32fbb63SXin Liecho "AVD_ROOT_DIR=$AVD_ROOT_DIR" 60*b32fbb63SXin Li 61*b32fbb63SXin Liif [[ -z $RAM ]]; then 62*b32fbb63SXin Li RAM=4096 63*b32fbb63SXin Lifi 64*b32fbb63SXin Liecho "RAM=$RAM" 65*b32fbb63SXin Li 66*b32fbb63SXin Liif [[ -z $HEAP ]]; then 67*b32fbb63SXin Li HEAP=576 68*b32fbb63SXin Lifi 69*b32fbb63SXin Liecho "HEAP=$HEAP" 70*b32fbb63SXin Li 71*b32fbb63SXin Liif [[ -z $DATA_DISK ]]; then 72*b32fbb63SXin Li DATA_DISK=6000 73*b32fbb63SXin Lifi 74*b32fbb63SXin Liecho "DATA_DISK=$DATA_DISK" 75*b32fbb63SXin Li 76*b32fbb63SXin Lifor file in $(ls "$AVD_ROOT_DIR"); do 77*b32fbb63SXin Li avd_dir="$AVD_ROOT_DIR/$file" 78*b32fbb63SXin Li if [[ $file == *.avd ]]; then 79*b32fbb63SXin Li # Filter AVD type by TAG_ID 80*b32fbb63SXin Li config_file="$avd_dir/config.ini" 81*b32fbb63SXin Li getValue "MY_AVD_ID" "AvdId" $config_file 82*b32fbb63SXin Li if [[ -n $TAG_ID ]]; then 83*b32fbb63SXin Li getValue "MY_TAG_ID" "tag.id" $config_file 84*b32fbb63SXin Li if [[ $TAG_ID != $MY_TAG_ID ]]; then 85*b32fbb63SXin Li echo "SKIP: $MY_AVD_ID is $MY_TAG_ID rather $TAG_ID " 86*b32fbb63SXin Li echo 87*b32fbb63SXin Li continue 88*b32fbb63SXin Li fi 89*b32fbb63SXin Li fi 90*b32fbb63SXin Li RAM=$RAM HEAP=$HEAP DATA_DISK=$DATA_DISK AVD_DIR=$avd_dir $SCRIPT_DIR/patch_avd.sh 91*b32fbb63SXin Li echo 92*b32fbb63SXin Li fi 93*b32fbb63SXin Lidone