#!/bin/bash ############################################################################### # Copyright 2015 Google Inc. # # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. ############################################################################### # # ios_setup.sh: Sets environment variables used by other iOS scripts. # File system location where we mount the ios devices. if [[ -z "${IOS_MOUNT_POINT}" ]]; then IOS_MOUNT_POINT="/tmp/mnt_iosdevice" fi # Location on the ios device where all data are stored. This is # relative to the mount point. IOS_DOCS_DIR="Documents" # Temporary location to assemble the app into an .ipa package. IOS_PCKG_DIR="/tmp/ios_pckg" # Directory with the Skia source. SKIA_SRC_DIR=$(cd "${SCRIPT_DIR}/../../.."; pwd) # Provisioning profile - this needs to be set up on the local machine. PROVISIONING_PROFILE="" # Code Signing identity - this needs to be set up on the local machine. CODE_SIGN_IDENTITY="iPhone Developer" IOS_RESULTS_DIR="results" # BUILDTYPE is 'Debug' by default. if [[ -z "$BUILDTYPE" ]]; then BUILDTYPE="Debug" fi # Out dir is $SKIA_SRC_DIR/out by default. if [[ -z "$SKIA_OUT" ]]; then SKIA_OUT="$SKIA_SRC_DIR/out" fi # Location of XCode build products. if [[ -z "$XCODEBUILD" ]]; then XCODEBUILD="${SKIA_SRC_DIR}/xcodebuild" fi # Name of the iOS app. IOS_APP=iOSShell.ipa # Location of the compiled iOS code. IOS_OUT=${XCODEBUILD}/${BUILDTYPE}-iphoneos # Location of the compiled iOS app. IOS_APP_PATH=${IOS_OUT}/${IOS_APP} ios_uninstall_app() { ideviceinstaller -U "$IOS_BUNDLE_ID" } ios_package_app() { rm -rf $IOS_PCKG_DIR mkdir -p $IOS_PCKG_DIR/Payload # this directory must be named 'Payload' cp -rf "${IOS_OUT}/iOSShell.app" "${IOS_PCKG_DIR}/Payload/" pushd $IOS_PCKG_DIR zip -r ${IOS_APP} Payload cp ${IOS_APP} ${IOS_APP_PATH} popd } ios_install_app() { ideviceinstaller -i ${IOS_APP_PATH} } ios_rm() { local TARGET="$IOS_MOUNT_POINT/$IOS_DOCS_DIR/$1" ios_mount rm -rf "$TARGET" ios_umount } ios_mkdir() { local TARGET="$IOS_MOUNT_POINT/$IOS_DOCS_DIR/$1" ios_mount mkdir -p "$TARGET" ios_umount } ios_cat() { local TARGET="$IOS_MOUNT_POINT/$IOS_DOCS_DIR/$1" >&2 echo "target: '${TARGET}''" ios_mount RET="$( cat ${TARGET} )" ios_umount >&2 echo "Result: '${RET}'" echo -e "${RET}" } # ios_mount: mounts the iOS device for reading or writing. ios_mount() { # If this is already mounted we unmount it. if $(mount | grep --quiet "$IOS_MOUNT_POINT"); then >&2 echo "Device already mounted at: $IOS_MOUNT_POINT - Unmounting." ios_umount || true fi # Ensure there is a mount directory. if [[ ! -d "$IOS_MOUNT_POINT" ]]; then mkdir -p $IOS_MOUNT_POINT fi ifuse --container $IOS_BUNDLE_ID $IOS_MOUNT_POINT sleep 2 if [[ ! -d "${IOS_MOUNT_POINT}/${IOS_DOCS_DIR}" ]]; then exit 1 fi >&2 echo "Successfully mounted device." #find $IOS_MOUNT_POINT } # ios_umount: unmounts the ios device. ios_umount() { sudo umount $IOS_MOUNT_POINT sleep 1 } # ios_restart: restarts the iOS device. ios_restart() { ios_umount || true idevicediagnostics restart } # ios_pull(ios_src, host_dst): Copies the content of ios_src to host_dst. # The path is relative to the 'Documents' folder on the device. ios_pull() { # read input params local IOS_SRC="$IOS_MOUNT_POINT/$IOS_DOCS_DIR/$1" local HOST_DST="$2" ios_mount if [[ -d "${HOST_DST}" ]]; then cp -r "$IOS_SRC/." "$HOST_DST" else cp -r "$IOS_SRC" "$HOST_DST" fi ios_umount } # ios_push(host_src, ios_dst) ios_push() { # read input params local HOST_SRC="$1" local IOS_DST="$IOS_MOUNT_POINT/$IOS_DOCS_DIR/$2" ios_mount rm -rf $IOS_DST mkdir -p "$(dirname $IOS_DST)" cp -r -L "$HOST_SRC" "$IOS_DST" ios_umount } ios_path_exists() { local TARGET_PATH="$IOS_MOUNT_POINT/$IOS_DOCS_DIR/$1" local RET=1 ios_mount if [[ -e $TARGET_PATH ]]; then RET=0 fi ios_umount return $RET } # ANDROID_LS=`$ADB $DEVICE_SERIAL shell ls -ld $ANDROID_DST` # HOST_LS=`ls -ld $HOST_SRC` # if [ "${ANDROID_LS:0:1}" == "d" -a "${HOST_LS:0:1}" == "-" ]; # then # ANDROID_DST="${ANDROID_DST}/$(basename ${HOST_SRC})" # fi # ANDROID_LS=`$ADB $DEVICE_SERIAL shell ls -ld $ANDROID_DST` # if [ "${ANDROID_LS:0:1}" == "-" ]; then # #get the MD5 for dst and src # ANDROID_MD5=`$ADB $DEVICE_SERIAL shell md5 $ANDROID_DST` # if [ $(uname) == "Darwin" ]; then # HOST_MD5=`md5 -q $HOST_SRC` # else # HOST_MD5=`md5sum $HOST_SRC` # fi # if [ "${ANDROID_MD5:0:32}" != "${HOST_MD5:0:32}" ]; then # echo -n "$ANDROID_DST " # $ADB $DEVICE_SERIAL push $HOST_SRC $ANDROID_DST # fi # elif [ "${ANDROID_LS:0:1}" == "d" ]; then # for FILE_ITEM in `ls $HOST_SRC`; do # adb_push_if_needed "${HOST_SRC}/${FILE_ITEM}" "${ANDROID_DST}/${FILE_ITEM}" # done # else # HOST_LS=`ls -ld $HOST_SRC` # if [ "${HOST_LS:0:1}" == "d" ]; then # $ADB $DEVICE_SERIAL shell mkdir -p $ANDROID_DST # adb_push_if_needed $HOST_SRC $ANDROID_DST # else # echo -n "$ANDROID_DST " # $ADB $DEVICE_SERIAL shell mkdir -p "$(dirname "$ANDROID_DST")" # $ADB $DEVICE_SERIAL push $HOST_SRC $ANDROID_DST # fi # fi # } # setup_device "${DEVICE_ID}"