#!/bin/bash function replace() { echo replacing $1 rm $V -rf "$UNZIPPED_BASE_DIR"/$1 cp $V -rf "$UNZIPPED_IMAGE_DIR"/$1 "$UNZIPPED_BASE_DIR"/$1 } V="" Q="-q" if [ "$1" == "-v" ]; then V="-v" Q="" shift fi NOZIP="" if [ "$1" == "-nozip" ]; then NOZIP="1" shift fi BASE="$1" IMAGES="$2" OUTPUT="$3" if [[ -z "$BASE" || -z "$IMAGES" || -z "$OUTPUT" ]] ; then echo "usage: combine_sdks.sh [-v] [-nozip] BASE IMAGES OUTPUT" echo echo " BASE and IMAGES should be sdk zip files. The system image files," echo " emulator and other runtime files will be copied from IMAGES and" echo " everything else will be copied from BASE. All of this will be" echo " bundled into OUTPUT and zipped up again (unless -nozip is specified)." echo exit 1 fi TMP=$(mktemp -d) TMP_ZIP=tmp.zip # determine executable extension case `uname -s` in *_NT-*) # for Windows EXE=.exe ;; *) EXE= ;; esac BASE_DIR="$TMP"/base IMAGES_DIR="$TMP"/images OUTPUT_TMP_ZIP="$BASE_DIR/$TMP_ZIP" unzip $Q "$BASE" -d "$BASE_DIR" unzip $Q "$IMAGES" -d "$IMAGES_DIR" UNZIPPED_BASE_DIR=$(echo "$BASE_DIR"/*) UNZIPPED_IMAGE_DIR=$(echo "$IMAGES_DIR"/*) # # The commands to copy over the files that we want # # replace tools/emulator # at this time we do not want the exe from SDK1.x replace tools/lib/images replace tools/lib/res replace tools/lib/fonts replace tools/lib/layoutlib.jar replace docs replace android.jar for i in widgets categories broadcast_actions service_actions; do replace tools/lib/$i.txt done if [ -d "$UNZIPPED_BASE_DIR"/usb_driver ]; then replace usb_driver fi # # end # if [ -z "$NOZIP" ]; then pushd "$BASE_DIR" &> /dev/null # rename the directory to the leaf minus the .zip of OUTPUT LEAF=$(echo "$OUTPUT" | sed -e "s:.*\.zip/::" | sed -e "s:.zip$::") mv * "$LEAF" # zip it zip $V -qr "$TMP_ZIP" "$LEAF" popd &> /dev/null cp $V "$OUTPUT_TMP_ZIP" "$OUTPUT" echo "Combined SDK available at $OUTPUT" else OUT_DIR="${OUTPUT//.zip/}" mv $V "$BASE_DIR"/* "$OUT_DIR" echo "Unzipped combined SDK available at $OUT_DIR" fi rm $V -rf "$TMP"