#!/bin/bash # Copyright (C) 2020 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. echo pack_avd_img.sh packs AVD images you built to be used on other hosts. echo It copies necessary files from ANDROID_PRODUCT_OUT to OUT_DIR. if [[ -z $ANDROID_PRODUCT_OUT ]]; then echo "err: please set ANDROID_PRODUCT_OUT='/android/out/target/product/generic_x86_64'" exit fi if [[ -z $ANDROID_BUILD_TOP ]]; then echo "err: please set ANDROID_BUILD_TOP='/android'" exit fi if [[ -z $OUT_DIR ]]; then echo "err: please set OUT_DIR='/my/out/dir/x86_64'" exit fi echo Packing AVD images from $ANDROID_PRODUCT_OUT to $OUT_DIR if [[ ! -d $OUT_DIR ]]; then mkdir $OUT_DIR fi echo System, qemu verion cp $ANDROID_PRODUCT_OUT/system-qemu.img $OUT_DIR/system.img echo Vendor, qemu verion cp $ANDROID_PRODUCT_OUT/vendor-qemu.img $OUT_DIR/vendor.img if [[ -f $ANDROID_PRODUCT_OUT/kernel-ranchu-64 ]]; then echo Kernel: 64-bit, prebuilt cp $ANDROID_PRODUCT_OUT/kernel-ranchu-64 $OUT_DIR/kernel-ranchu-64 else echo Kernel: 64-bit for 32-bit userspaces, prebuilt cp $ANDROID_PRODUCT_OUT/kernel-ranchu $OUT_DIR/kernel-ranchu fi echo Ramdisk, prebuilt cp $ANDROID_PRODUCT_OUT/ramdisk-qemu.img $OUT_DIR/ramdisk.img echo Encryptionkey, prebuilt cp $ANDROID_PRODUCT_OUT/encryptionkey.img $OUT_DIR/encryptionkey.img echo Userdata, prebuilt # take prebuilt userdata.img #Ref:https://cs.android.com/android/platform/superproject/+/master:development/build/sdk.atree?q=userdata.img&ss=android%2Fplatform%2Fsuperproject:development%2Fbuild%2F cp $ANDROID_BUILD_TOP/device/generic/goldfish/data/etc/userdata.img $OUT_DIR/userdata.img echo User data #Todo: will this replace the need of userdata.img? cp -r $ANDROID_PRODUCT_OUT/data $OUT_DIR/data echo build properties cp $ANDROID_PRODUCT_OUT/system/build.prop $OUT_DIR/build.prop echo Verified Boot Parameters cp $ANDROID_PRODUCT_OUT/VerifiedBootParams.textproto $OUT_DIR/VerifiedBootParams.textproto echo Default AVD config.ini cp $ANDROID_PRODUCT_OUT/config.ini $OUT_DIR/config.ini echo Android Emulator Adviced Feature settings cp $ANDROID_PRODUCT_OUT/advancedFeatures.ini $OUT_DIR/advancedFeatures.ini echo echo In $OUT_DIR: ls -l $OUT_DIR if [[ -n $AVD_IMAGE_ZIP ]]; then rm $AVD_IMAGE_ZIP echo Zipping $OUT_DIR to $AVD_IMAGE_ZIP # to perserve ABI in the zip, assuming OUT_DIR always ends with ABI # e.g. /path/to/x86_64 ABI=${OUT_DIR##*/} # = "x86_64" PATH_TO_IMG_DIR=${OUT_DIR%/$ABI} # = "/path/to" cd $PATH_TO_IMG_DIR zip -r $AVD_IMAGE_ZIP $ABI cd - unzip -l $AVD_IMAGE_ZIP fi