Skip to content

Commit

Permalink
create AVD from script
Browse files Browse the repository at this point in the history
  • Loading branch information
yasserfaraazkhan committed Aug 27, 2024
1 parent 5bfd426 commit 3b7cfe9
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 24 deletions.
7 changes: 7 additions & 0 deletions .github/workflows/test-android-detox.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,13 @@ jobs:
- name: Accept Android SDK Licenses
run: yes | $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager --licenses

- name: Install SDK Tools
run: |
yes | sdkmanager --install "emulator" "platform-tools" "platforms;android-31" "system-images;android-31;default;x86_64" "build-tools;31.0.0"
- name: Set up Android SDK path
run: echo "$ANDROID_HOME/emulator:$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$PATH" >> $GITHUB_PATH

- name: Create AVD
run : |
cd detox
Expand Down
58 changes: 34 additions & 24 deletions detox/create_android_emulator.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,30 +10,40 @@ set -o pipefail
SDK_VERSION=31
NAME="detox_pixel_4_xl_api_${SDK_VERSION}"

# Check if the AVD already exists
if emulator -list-avds | grep -q $NAME; then
echo "'${NAME}' Android virtual device already exists."
echo "'${NAME}' Android virtual device already exists. Deleting it now..."
avdmanager delete avd -n $NAME
echo "'${NAME}' has been deleted."
fi

# Define the correct CPU architecture and system image path
CPU_ARCH_FAMILY=''
CPU_ARCH=''
if [[ $(uname -p) == 'arm' ]]; then
CPU_ARCH_FAMILY=arm64-v8a
CPU_ARCH=arm64
else
CPU_ARCH_FAMILY=''
CPU_ARCH=''
if [[ $(uname -p) == 'arm' ]]; then
CPU_ARCH_FAMILY=arm64-v8a
CPU_ARCH=arm64
else
CPU_ARCH_FAMILY=x86_64
CPU_ARCH=x86_64
fi

# Create virtual device in a relative "detox_pixel_4_xl_api_${SDK_VERSION}" folder
avdmanager create avd -n $NAME -k "system-images;android-${SDK_VERSION};default;${CPU_ARCH_FAMILY}" -p $NAME -d 'pixel'

# Copy predefined config and skin
cp -r android_emulator/ $NAME/
sed -i -e "s|AvdId = change_avd_id|AvdId = ${NAME}|g" $NAME/config.ini
sed -i -e "s|avd.ini.displayname = change_avd_displayname|avd.ini.displayname = Detox Pixel 4 XL API ${SDK_VERSION}|g" $NAME/config.ini
sed -i -e "s|abi.type = change_type|abi.type = ${CPU_ARCH_FAMILY}|g" $NAME/config.ini
sed -i -e "s|hw.cpu.arch = change_cpu_arch|hw.cpu.arch = ${CPU_ARCH}|g" $NAME/config.ini
sed -i -e "s|image.sysdir.1 = change_to_image_sysdir/|image.sysdir.1 = system-images/android-${SDK_VERSION}/default/${CPU_ARCH_FAMILY}/|g" $NAME/config.ini
sed -i -e "s|skin.path = change_to_absolute_path/pixel_4_xl_skin|skin.path = $(pwd)/${NAME}/pixel_4_xl_skin|g" $NAME/config.ini

echo "Android virtual device successfully created: ${NAME}"
CPU_ARCH_FAMILY=x86_64
CPU_ARCH=x86_64
fi
SYSTEM_IMAGE="system-images;android-${SDK_VERSION};google_apis;${CPU_ARCH_FAMILY}"

# Install the system image if it's not already installed
sdkmanager --install "$SYSTEM_IMAGE"

# Create virtual device in a relative "detox_pixel_4_xl_api_${SDK_VERSION}" folder
avdmanager create avd -n $NAME -k "$SYSTEM_IMAGE" -p $NAME -d 'pixel'

# Copy predefined config and skin
mkdir -p android_emulator/

cp -r android_emulator/ $NAME/
sed -i -e "s|AvdId = change_avd_id|AvdId = ${NAME}|g" $NAME/config.ini
sed -i -e "s|avd.ini.displayname = change_avd_displayname|avd.ini.displayname = Detox Pixel 4 XL API ${SDK_VERSION}|g" $NAME/config.ini
sed -i -e "s|abi.type = change_type|abi.type = ${CPU_ARCH_FAMILY}|g" $NAME/config.ini
sed -i -e "s|hw.cpu.arch = change_cpu_arch|hw.cpu.arch = ${CPU_ARCH}|g" $NAME/config.ini
sed -i -e "s|image.sysdir.1 = change_to_image_sysdir/|image.sysdir.1 = system-images/android-${SDK_VERSION}/google_apis/${CPU_ARCH_FAMILY}/|g" $NAME/config.ini
sed -i -e "s|skin.path = change_to_absolute_path/pixel_4_xl_skin|skin.path = $(pwd)/${NAME}/pixel_4_xl_skin|g" $NAME/config.ini

echo "Android virtual device successfully created: ${NAME}"

0 comments on commit 3b7cfe9

Please sign in to comment.