123 lines
3.4 KiB
Bash
Executable File
123 lines
3.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Copyright (C) 2021 The Android Open Source Project
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
readme() {
|
|
echo '''
|
|
Change forceColdBoot for all AVD config.ini files.
|
|
If TAG_ID of AVD is empty, it will change all AVDs. e.g.
|
|
FORCE_COLD_BOOT="yes" AVD_ROOT_DIR="$HOME/.android/avd" TAG_ID="android-automotive" ./set_avds_force_cold_boot.sh
|
|
'''
|
|
}
|
|
|
|
# set up for Linux or macOS
|
|
OS="$(uname -s)"
|
|
echo "Running on $OS"
|
|
if [[ $OS == "Linux" ]]; then
|
|
SED_I_CMD="sed -i "
|
|
elif [[ $OS == "Darwin" ]]; then
|
|
SED_I_CMD="sed -i ''"
|
|
else
|
|
echo "ERROR: this does not work on $OS"
|
|
exit
|
|
fi
|
|
|
|
MY_NAME=$0
|
|
SCRIPT_NAME=${MY_NAME##*/}
|
|
SCRIPT_DIR=${MY_NAME%/$SCRIPT_NAME}
|
|
echo Running from $SCRIPT_DIR
|
|
|
|
# Export VAR with the value of the key in a file as:
|
|
# getValue "VAR" "KEY" "config.ini FILE"
|
|
# e.g. getValue "MY_AVD_ID" "AvdId" "$avd_dir/config.ini"
|
|
getValue() {
|
|
VAR=$1
|
|
KEY=$2
|
|
FILE=$3
|
|
LINE=$(cat $FILE | grep $KEY)
|
|
VALUE=${LINE##*=}
|
|
export "${VAR}=$VALUE"
|
|
echo "${VAR}=$VALUE"
|
|
}
|
|
|
|
|
|
# Set Cold Boot or Quick/Fast Boot for an AVD as:
|
|
# setForceColdBoot "ForceColdBoot" "ForceFastBoot" "config.ini FILE"
|
|
# e.g. setForceColdBoot "yes" "no" "$avd_dir/config.ini"
|
|
setForceColdBoot() {
|
|
forceColdBoot=$1
|
|
forceFastBoot=$2
|
|
avdConfig=$3
|
|
|
|
echo "CHANGE: fastboot.forceColdBoot=$forceColdBoot & fastboot.forceFastBoot=$forceFastBoot in $avdConfig"
|
|
$SED_I_CMD '/^fastboot.forceColdBoot/d' $avdConfig
|
|
$SED_I_CMD '/^fastboot.forceFastBoot/d' $avdConfig
|
|
echo "fastboot.forceColdBoot=$forceColdBoot" >> $avdConfig
|
|
echo "fastboot.forceFastBoot=$forceFastBoot" >> $avdConfig
|
|
cat $avdConfig | grep "fastboot.forceColdBoot"
|
|
cat $avdConfig | grep "fastboot.forceFastBoot"
|
|
}
|
|
|
|
# Set Cold Boot or Quick/Fast Boot for an AVD as:
|
|
# setAllAVDsForceColdBoot "ForceColdBoot" "ForceFastBoot" "AVD/ROOT/DIR" "TAG.ID"
|
|
# e.g. setAllAVDsForceColdBoot "yes" "no" "$HOME/.android/avd" "android-automotive"
|
|
setAllAVDsForceColdBoot() {
|
|
forceColdBoot=$1
|
|
forceFastBoot=$2
|
|
avdRootDir=$3
|
|
avdTagId=$4
|
|
|
|
for file in $(ls "$avdRootDir"); do
|
|
avd_dir="$avdRootDir/$file"
|
|
if [[ $file == *.avd ]]; then
|
|
# Filter AVD type by TAG_ID
|
|
config_file="$avd_dir/config.ini"
|
|
getValue "myAvdId" "AvdId" $config_file
|
|
if [[ -n $avdTagId ]]; then
|
|
getValue "myAvdTagId" "tag.id" $config_file
|
|
if [[ $myAvdTagId != $avdTagId ]]; then
|
|
echo "SKIP: $myAvdId is $myAvdTagId rather $avdTagId"
|
|
echo
|
|
continue
|
|
fi
|
|
fi
|
|
setForceColdBoot $forceColdBoot $forceFastBoot $config_file
|
|
echo
|
|
fi
|
|
done
|
|
}
|
|
|
|
if [[ -z $AVD_ROOT_DIR ]]; then
|
|
AVD_ROOT_DIR="$HOME/.android/avd"
|
|
fi
|
|
echo "AVD_ROOT_DIR=$AVD_ROOT_DIR"
|
|
|
|
if [[ -z $FORCE_COLD_BOOT ]]; then
|
|
FORCE_COLD_BOOT="yes"
|
|
fi
|
|
echo "FORCE_COLD_BOOT=$FORCE_COLD_BOOT"
|
|
|
|
case "$FORCE_COLD_BOOT" in
|
|
yes)
|
|
setAllAVDsForceColdBoot "yes" "no" $AVD_ROOT_DIR $TAG_ID
|
|
;;
|
|
no)
|
|
setAllAVDsForceColdBoot "no" "yes" $AVD_ROOT_DIR $TAG_ID
|
|
;;
|
|
*)
|
|
readme
|
|
;;
|
|
esac
|