mirror of
https://github.com/apache/cordova-android.git
synced 2025-02-22 00:32:55 +08:00
Proper modularization of bash scripts for [CB-3627], but not solved yet. wait_for_emulator does not work atm
This commit is contained in:
parent
e86d811fc0
commit
add107583f
@ -16,8 +16,24 @@
|
|||||||
# specific language governing permissions and limitations
|
# specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
set -e
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
PROJECT_PATH=$( cd "$DIR/.." && pwd )
|
||||||
|
|
||||||
CORDOVA_PATH=$( cd "$( dirname "$0" )" && pwd )
|
if [[ "$#" -eq 1 ]] ; then
|
||||||
|
if [[ $1 == "--debug" ]] ; then
|
||||||
bash "$CORDOVA_PATH"/lib/cordova build "$@"
|
$DIR/clean
|
||||||
|
ant debug -f "$PROJECT_PATH"/build.xml
|
||||||
|
elif [[ $1 == "--release" ]] ; then
|
||||||
|
$DIR/clean
|
||||||
|
ant release -f "$PROJECT_PATH"/build.xml
|
||||||
|
elif [[ $1 == "--nobuild" ]] ; then
|
||||||
|
echo "Skipping build..."
|
||||||
|
else
|
||||||
|
echo "Error : Build command '$1' not recognized."
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Warning : [ --debug | --release | --nobuild ] not specified, defaulting to --debug"
|
||||||
|
$DIR/clean
|
||||||
|
ant debug -f "$PROJECT_PATH"/build.xml
|
||||||
|
fi
|
||||||
|
@ -16,8 +16,7 @@
|
|||||||
# specific language governing permissions and limitations
|
# specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
set -e
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
PROJECT_PATH=$( cd "$DIR/.." && pwd )
|
||||||
CORDOVA_PATH=$( cd "$( dirname "$0" )" && pwd )
|
echo "Cleaning project..."
|
||||||
|
ant -f "$PROJECT_PATH/build.xml" clean
|
||||||
bash "$CORDOVA_PATH"/lib/cordova clean "$@"
|
|
||||||
|
@ -1,386 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# Licensed to the Apache Software Foundation (ASF) under one
|
|
||||||
# or more contributor license agreements. See the NOTICE file
|
|
||||||
# distributed with this work for additional information
|
|
||||||
# regarding copyright ownership. The ASF licenses this file
|
|
||||||
# to you 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.
|
|
||||||
|
|
||||||
PROJECT_PATH=$( cd "$( dirname "$0" )/../.." && pwd )
|
|
||||||
|
|
||||||
function list_devices {
|
|
||||||
IFS=$'\n'
|
|
||||||
devices=`adb devices | awk '/List of devices attached/ { while(getline > 0) { print }}' | grep 'device' | grep -v 'emulator'`
|
|
||||||
device_list=($devices)
|
|
||||||
if [[ ${#device_list[@]} > 0 ]] ; then
|
|
||||||
for i in ${devices[@]}
|
|
||||||
do
|
|
||||||
# remove space and 'device'
|
|
||||||
echo ${i/[^a-zA-Z0-9._]device/}
|
|
||||||
done
|
|
||||||
else
|
|
||||||
echo "No devices found."
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function list_started_emulators {
|
|
||||||
IFS=$'\n'
|
|
||||||
devices=`adb devices | awk '/List of devices attached/ { while(getline > 0) { print }}' | grep 'device' | grep 'emulator'`
|
|
||||||
emulator_list=($devices)
|
|
||||||
if [[ ${#emulator_list[@]} > 0 ]] ; then
|
|
||||||
for i in ${emulator_list[@]}
|
|
||||||
do
|
|
||||||
# remove space and 'device'
|
|
||||||
echo ${i/[^a-zA-Z0-9._]device/}
|
|
||||||
done
|
|
||||||
else
|
|
||||||
echo "No started emulators found, you can start an emulator by using the command"
|
|
||||||
echo " 'cordova/lib/start-emulator'"
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function list_emulator_images {
|
|
||||||
emulator_images=`android list avds | grep "Name:" | cut -f 2 -d ":"`
|
|
||||||
emulator_list=($emulator_images)
|
|
||||||
if [[ ${#emulator_list[@]} > 0 ]] ; then
|
|
||||||
for i in ${emulator_list[@]}
|
|
||||||
do
|
|
||||||
echo ${i/[^a-zA-Z0-9._]/}
|
|
||||||
done
|
|
||||||
else
|
|
||||||
echo "No emulators found, if you would like to create an emulator follow the instructions"
|
|
||||||
echo " provided here : http://developer.android.com/tools/devices/index.html"
|
|
||||||
echo " Or run 'android create avd --name <name> --target <targetID>' in on the command line."
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function start_emulator {
|
|
||||||
emulator_images=`android list avds | grep "Name:" | cut -f 2 -d ":"`
|
|
||||||
# if target emulator is provided
|
|
||||||
if [[ "$#" -eq 1 ]] ; then
|
|
||||||
# check that it exists
|
|
||||||
if [[ $emulator_images =~ $1 ]] ; then
|
|
||||||
#xterm -e emulator -avd $1 &
|
|
||||||
emulator -avd $1 1> /dev/null 2>&1 &
|
|
||||||
else
|
|
||||||
echo "Could not find the provided emulator, make sure the emulator exists"
|
|
||||||
echo " by checking 'cordova/lib/list-emulator-images'"
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
# start first emulator
|
|
||||||
read -ra emulator_list <<< "$emulator_images"
|
|
||||||
if [[ ${#emulator_list[@]} > 0 ]] ; then
|
|
||||||
#xterm -e emulator -avd ${emulator_list[0]} &
|
|
||||||
emulator -avd ${emulator_list[0]/[^a-zA-Z0-9._-]/} 1> /dev/null 2>&1 &
|
|
||||||
else
|
|
||||||
echo "No emulators found, if you would like to create an emulator follow the instructions"
|
|
||||||
echo " provided here : http://developer.android.com/tools/devices/index.html"
|
|
||||||
echo " Or run 'android create avd --name <name> --target <targetID>' in on the command line."
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_device {
|
|
||||||
IFS=$'\n'
|
|
||||||
devices=`adb devices | awk '/List of devices attached/ { while(getline > 0) { print }}' | grep 'device' | grep -v 'emulator'`
|
|
||||||
device_list=($devices)
|
|
||||||
if [[ ${#device_list[@]} > 0 ]] ; then
|
|
||||||
apks=`find $PROJECT_PATH/bin -type f -maxdepth 1 | egrep '\.apk$'`
|
|
||||||
apk_list=($apks)
|
|
||||||
if [[ ${#apk_list[@]} > 0 ]] ; then
|
|
||||||
local target
|
|
||||||
# handle target emulator
|
|
||||||
if [[ "$#" -eq 1 ]] ; then
|
|
||||||
# deploy to given target
|
|
||||||
target=${1/--target=/}
|
|
||||||
else
|
|
||||||
# delete trailing space and 'device' after device ID
|
|
||||||
target=${device_list[0]/[^a-zA-Z0-9._]device/}
|
|
||||||
fi
|
|
||||||
echo "Installing ${apk_list[0]} onto device $target..."
|
|
||||||
adb -s $target install -r ${apk_list[0]};
|
|
||||||
echo "Launching application..."
|
|
||||||
local launch_str=$(java -jar "$PROJECT_PATH"/cordova/appinfo.jar "$PROJECT_PATH"/AndroidManifest.xml)
|
|
||||||
adb -s $target shell am start -W -a android.intent.action.MAIN -n $launch_str
|
|
||||||
else
|
|
||||||
echo "Application package not found, could not install to device"
|
|
||||||
echo " make sure your application is built before deploying."
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "No devices found to deploy to. Please make sure your device is connected"
|
|
||||||
echo " and you can view it using the 'cordova/lib/list-devices' command."
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_emulator {
|
|
||||||
IFS=$'\n'
|
|
||||||
# check that there is an emulator to deploy to
|
|
||||||
emulator_string=`adb devices | awk '/List of devices attached/ { while(getline > 0) { print }}' | grep 'emulator'`
|
|
||||||
emulator_list=($emulator_string)
|
|
||||||
if [[ ${#emulator_list[@]} > 0 ]] ; then
|
|
||||||
apks=`find $PROJECT_PATH/bin -type f -maxdepth 1 | egrep '\.apk$'`
|
|
||||||
apk_list=($apks)
|
|
||||||
if [[ ${#apk_list[@]} > 0 ]] ; then
|
|
||||||
local target
|
|
||||||
# handle target emulator
|
|
||||||
if [[ "$#" -eq 1 ]] ; then
|
|
||||||
# deploy to given target
|
|
||||||
target=${1/--target=/}
|
|
||||||
else
|
|
||||||
# delete trailing space and 'device' after emulator ID
|
|
||||||
target=${emulator_list[0]/[^a-zA-Z0-9._]device/}
|
|
||||||
fi
|
|
||||||
echo "Installing ${apk_list[0]} onto $target..."
|
|
||||||
adb -s $target install -r ${apk_list[0]};
|
|
||||||
echo "Launching application..."
|
|
||||||
local launch_str=$(java -jar "$PROJECT_PATH"/cordova/appinfo.jar "$PROJECT_PATH"/AndroidManifest.xml)
|
|
||||||
adb -s $target shell am start -W -a android.intent.action.MAIN -n $launch_str
|
|
||||||
|
|
||||||
else
|
|
||||||
echo "Application package not found, could not install to device"
|
|
||||||
echo " make sure your application is built before deploying."
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "No emulators found to deploy to. Please make sure your emulator is started"
|
|
||||||
echo " and you can view it using the 'cordova/lib/list-started-emulators' command."
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# cleans the project
|
|
||||||
function clean {
|
|
||||||
echo "Cleaning project..."
|
|
||||||
ant clean
|
|
||||||
}
|
|
||||||
|
|
||||||
# has to be used independently and not in conjunction with other commands
|
|
||||||
function log {
|
|
||||||
# filter out nativeGetEnabledTags spam from latest sdk bug.
|
|
||||||
adb logcat | grep -v nativeGetEnabledTags
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function build {
|
|
||||||
if [[ "$#" -eq 1 ]] ; then
|
|
||||||
if [[ $1 == "--debug" ]] ; then
|
|
||||||
clean
|
|
||||||
ant debug -f "$PROJECT_PATH"/build.xml
|
|
||||||
elif [[ $1 == "--release" ]] ; then
|
|
||||||
clean
|
|
||||||
ant release -f "$PROJECT_PATH"/build.xml
|
|
||||||
elif [[ $1 == "--nobuild" ]] ; then
|
|
||||||
echo "Skipping build..."
|
|
||||||
else
|
|
||||||
echo "Error : Build command '$1' not recognized."
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "Warning : [ --debug | --release | --nobuild ] not specified, defaulting to --debug"
|
|
||||||
clean
|
|
||||||
ant debug -f "$PROJECT_PATH"/build.xml
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function wait_for_emulator {
|
|
||||||
emulator_string=`adb devices | awk '/List of devices attached/ { while(getline > 0) { print }}' | grep 'device' | grep 'emulator'`
|
|
||||||
old_started=($emulator_string)
|
|
||||||
local new_started
|
|
||||||
local new_emulator_name
|
|
||||||
local i="0"
|
|
||||||
echo -n "Waiting for emulator..."
|
|
||||||
while [ $i -lt 300 ]
|
|
||||||
do
|
|
||||||
emulator_string=`adb devices | awk '/List of devices attached/ { while(getline > 0) { print }}' | grep 'device' | grep 'emulator'`
|
|
||||||
new_started=($emulator_string)
|
|
||||||
if [[ ${#new_started[@]} > ${#old_started[@]} && -z "$new_emulator_name" ]] ; then
|
|
||||||
# get the name of the started emulator
|
|
||||||
local count="0"
|
|
||||||
if [[ ${#old_started[@]} == 0 ]] ; then
|
|
||||||
new_emulator_name=${new_started[$count]/[^a-zA-Z0-9._]device/}
|
|
||||||
else
|
|
||||||
for count in {0...${#old_started[@]}}
|
|
||||||
do
|
|
||||||
if [[ ! ${new_started[$count]} == ${old_started[$count]} ]] ; then
|
|
||||||
new_emulator_name=${new_started[$count]/[^a-zA-Z0-9._]device/}
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if [[ -z "$new_emulator_name" ]] ; then
|
|
||||||
count=$[count+1]
|
|
||||||
new_emulator_name=${new_started[$count]/[^a-zA-Z0-9._]device/}
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
elif [[ "$new_emulator_name" ]] ; then
|
|
||||||
boot_anim=`adb -s $new_emulator_name shell getprop init.svc.bootanim`
|
|
||||||
if [[ $boot_anim =~ "stopped" ]] ; then
|
|
||||||
break
|
|
||||||
else
|
|
||||||
sleep 1
|
|
||||||
i=$[i+1]
|
|
||||||
echo -n "."
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
sleep 1
|
|
||||||
i=$[i+1]
|
|
||||||
echo -n "."
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
# Device timeout: emulator has not started in time
|
|
||||||
if [ $i -eq 300 ]
|
|
||||||
then
|
|
||||||
echo "emulator timeout!"
|
|
||||||
exit 69
|
|
||||||
else
|
|
||||||
echo "connected!"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function run {
|
|
||||||
IFS=$'\n'
|
|
||||||
if [[ "$#" -eq 2 ]] ; then
|
|
||||||
build $2
|
|
||||||
if [[ $1 == "--device" ]] ; then
|
|
||||||
install_device
|
|
||||||
elif [[ $1 == "--emulator" ]] ; then
|
|
||||||
install_emulator
|
|
||||||
elif [[ $1 =~ "--target=" ]]; then
|
|
||||||
install_device $1
|
|
||||||
else
|
|
||||||
echo "Error : '$1' is not recognized as an install option"
|
|
||||||
fi
|
|
||||||
elif [[ "$#" -eq 1 ]] ; then
|
|
||||||
if [[ $1 == "--debug" || $1 == "--release" || $1 == "--nobuild" ]] ; then
|
|
||||||
build $1
|
|
||||||
elif [[ $1 == "--device" ]] ; then
|
|
||||||
install_device
|
|
||||||
elif [[ $1 == "--emulator" ]] ; then
|
|
||||||
install_emulator
|
|
||||||
elif [[ $1 =~ "--target=" ]]; then
|
|
||||||
install_device $1
|
|
||||||
else
|
|
||||||
echo "Error : '$1' is not recognized as an install option"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "Warning : [ --device | --emulate | --target=<targetID> ] not specified, using defaults."
|
|
||||||
build
|
|
||||||
devices=`adb devices | awk '/List of devices attached/ { while(getline > 0) { print }}' | grep 'device' | grep -v 'emulator'`
|
|
||||||
device_list=($devices)
|
|
||||||
emulator_string=`adb devices | awk '/List of devices attached/ { while(getline > 0) { print }}' | grep 'device' | grep 'emulator'`
|
|
||||||
emulator_list=($emulator_string)
|
|
||||||
if [[ ${#device_list[@]} > 0 ]] ; then
|
|
||||||
install_device
|
|
||||||
elif [[ ${#emulator_list[@]} > 0 ]] ; then
|
|
||||||
install_emulator
|
|
||||||
else
|
|
||||||
emulator_images=`android list avds | grep "Name:" | cut -f 2 -d ":"`
|
|
||||||
echo $emulator_images
|
|
||||||
emulator_image_list=($emulator_images)
|
|
||||||
if [[ ${#emulator_image_list[@]} > 0 ]] ; then
|
|
||||||
echo "Starting emulator : ${emulator_image_list[0]}"
|
|
||||||
emulator -avd ${emulator_image_list[0]/[^.\w]/} 1> /dev/null 2>&1 &
|
|
||||||
wait_for_emulator
|
|
||||||
install_emulator
|
|
||||||
else
|
|
||||||
# TODO : look for emulator images and start one if it's availible
|
|
||||||
echo "Error : there are no availible devices or emulators to deploy to."
|
|
||||||
echo " create an emulator or connect your device to run this command."
|
|
||||||
echo "If you would like to create an emulator follow the instructions"
|
|
||||||
echo " provided here : http://developer.android.com/tools/devices/index.html"
|
|
||||||
echo " Or run 'android create avd --name <name> --target <targetID>' in on the command line."
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# parse command line arguments
|
|
||||||
|
|
||||||
if [[ $# > 3 ]] ; then
|
|
||||||
echo "Error : too many arguments."
|
|
||||||
exit 2
|
|
||||||
elif [[ $# == 3 ]] ; then
|
|
||||||
if [[ $1 == "run" ]] ; then
|
|
||||||
run $2 $3
|
|
||||||
else
|
|
||||||
echo "Error : too many arguments for '$1'"
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
elif [[ $# == 2 ]] ; then
|
|
||||||
if [[ $1 == "run" ]] ; then
|
|
||||||
if [[ $2 == "--emulator" || $2 == "--device" || $2 =~ "--target=" ]] ; then
|
|
||||||
run $2 ''
|
|
||||||
elif [[ $2 == "--debug" || $2 == "--release" || $2 == "--nobuild" ]] ; then
|
|
||||||
run '' $2
|
|
||||||
else
|
|
||||||
echo "Error : '$2' is not recognized as a run option."
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
elif [[ $1 == "build" ]] ; then
|
|
||||||
build $2
|
|
||||||
elif [[ $1 == "start-emulator" ]] ; then
|
|
||||||
start_emulator $2
|
|
||||||
elif [[ $1 == "install-device" ]] ; then
|
|
||||||
if [[ $2 =~ "--target=" ]] ; then
|
|
||||||
install_device $2
|
|
||||||
else
|
|
||||||
echo "Error : '$2' is not recognized as an install option"
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
elif [[ $1 == "install-emulator" ]] ; then
|
|
||||||
if [[ $2 =~ "--target=" ]] ; then
|
|
||||||
install_emulator $2
|
|
||||||
else
|
|
||||||
echo "Error : '$2' is not recognized as an install option"
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "Error : '$1' is not recognized as an option that takes arguments"
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
elif [[ $# == 1 ]] ; then
|
|
||||||
if [[ $1 == "run" ]] ; then
|
|
||||||
run
|
|
||||||
elif [[ $1 == "build" ]]; then
|
|
||||||
build
|
|
||||||
elif [[ $1 == "clean" ]]; then
|
|
||||||
clean
|
|
||||||
elif [[ $1 == "log" ]]; then
|
|
||||||
log
|
|
||||||
elif [[ $1 == "list-devices" ]]; then
|
|
||||||
list_devices
|
|
||||||
elif [[ $1 == "list-emulator-images" ]]; then
|
|
||||||
list_emulator_images
|
|
||||||
elif [[ $1 == "list-started-emulators" ]]; then
|
|
||||||
list_started_emulators
|
|
||||||
elif [[ $1 == "install-device" ]]; then
|
|
||||||
install_device
|
|
||||||
elif [[ $1 == "install-emulator" ]]; then
|
|
||||||
install_emulator
|
|
||||||
elif [[ $1 == "start-emulator" ]]; then
|
|
||||||
start_emulator
|
|
||||||
else
|
|
||||||
echo "Error : '$1' is not recognized as a tooling command."
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "Error : No command recieved, exiting..."
|
|
||||||
exit 2
|
|
||||||
fi
|
|
@ -16,8 +16,34 @@
|
|||||||
# specific language governing permissions and limitations
|
# specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
set -e
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
PROJECT_PATH=$( cd "$DIR/../.." && pwd )
|
||||||
|
device_list=$("$DIR/list-devices")
|
||||||
|
if [ $? != 0 ]; then
|
||||||
|
echo "No devices found to deploy to. Please make sure your device is connected"
|
||||||
|
echo " and you can view it using the 'cordova/lib/list-devices' command."
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
CORDOVA_LIB_PATH=$( cd "$( dirname "$0" )" && pwd )
|
apks=`find $PROJECT_PATH/bin -type f -maxdepth 1 | egrep '\.apk$'`
|
||||||
|
apk_list=($apks)
|
||||||
bash "$CORDOVA_LIB_PATH"/cordova install-device "$@"
|
if [[ ${#apk_list[@]} > 0 ]] ; then
|
||||||
|
# handle target
|
||||||
|
read -ra device_array <<< "$device_list"
|
||||||
|
if [[ "$#" -eq 1 ]] ; then
|
||||||
|
# deploy to given target
|
||||||
|
target=${1/--target=/}
|
||||||
|
else
|
||||||
|
# delete trailing space and 'device' after device ID
|
||||||
|
target=${device_array[0]}
|
||||||
|
fi
|
||||||
|
echo "Installing ${apk_list[0]} onto device $target..."
|
||||||
|
adb -s $target install -r ${apk_list[0]};
|
||||||
|
echo "Launching application..."
|
||||||
|
launch_str=$(java -jar "$PROJECT_PATH"/cordova/appinfo.jar "$PROJECT_PATH"/AndroidManifest.xml)
|
||||||
|
adb -s $target shell am start -W -a android.intent.action.MAIN -n $launch_str
|
||||||
|
else
|
||||||
|
echo "Application package not found, could not install to device"
|
||||||
|
echo " make sure your application is built before deploying."
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
@ -16,8 +16,35 @@
|
|||||||
# specific language governing permissions and limitations
|
# specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
set -e
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
PROJECT_PATH=$( cd "$DIR/../.." && pwd )
|
||||||
|
emulator_list=$("$DIR/list-started-emulators")
|
||||||
|
if [ $? != 0 ]; then
|
||||||
|
echo "No emulators found to deploy to. Please make sure your emulator is started"
|
||||||
|
echo " You can view it using the 'cordova/lib/list-started-emulators' command."
|
||||||
|
echo " You can view created emulator images using the 'cordova/lib/list-emulator-images' command."
|
||||||
|
echo " You can start an emulator image using the 'cordova/lib/start-emulator' command."
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
CORDOVA_LIB_PATH=$( cd "$( dirname "$0" )" && pwd )
|
apks=`find $PROJECT_PATH/bin -type f -maxdepth 1 | egrep '\.apk$'`
|
||||||
|
apk_list=($apks)
|
||||||
bash "$CORDOVA_LIB_PATH"/cordova install-emulator "$@"
|
if [[ ${#apk_list[@]} > 0 ]] ; then
|
||||||
|
# handle target emulator
|
||||||
|
if [[ "$#" -eq 1 ]] ; then
|
||||||
|
# deploy to given target
|
||||||
|
target=${1/--target=/}
|
||||||
|
else
|
||||||
|
# delete trailing space and 'device' after emulator ID
|
||||||
|
target=${emulator_list[0]}
|
||||||
|
fi
|
||||||
|
echo "Installing ${apk_list[0]} onto emulator $target..."
|
||||||
|
adb -s $target install -r ${apk_list[0]};
|
||||||
|
echo "Launching application..."
|
||||||
|
launch_str=$(java -jar "$PROJECT_PATH"/cordova/appinfo.jar "$PROJECT_PATH"/AndroidManifest.xml)
|
||||||
|
adb -s $target shell am start -W -a android.intent.action.MAIN -n $launch_str
|
||||||
|
else
|
||||||
|
echo "Application package not found, could not install to device"
|
||||||
|
echo " make sure your application is built before deploying."
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
@ -16,8 +16,15 @@
|
|||||||
# specific language governing permissions and limitations
|
# specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
set -e
|
devices=`adb devices | awk '/List of devices attached/ { while(getline > 0) { print }}' | grep 'device' | grep -v 'emulator' | awk '{ print $1; }'`
|
||||||
|
device_list=($devices)
|
||||||
CORDOVA_LIB_PATH=$( cd "$( dirname "$0" )" && pwd )
|
if [[ ${#device_list[@]} > 0 ]] ; then
|
||||||
|
for i in ${devices[@]}
|
||||||
bash "$CORDOVA_LIB_PATH"/cordova list-devices
|
do
|
||||||
|
echo $i
|
||||||
|
done
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
echo "No devices found."
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
@ -16,8 +16,17 @@
|
|||||||
# specific language governing permissions and limitations
|
# specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
set -e
|
emulator_images=`android list avds | grep "Name:" | cut -f 2 -d ":"`
|
||||||
|
emulator_list=($emulator_images)
|
||||||
CORDOVA_LIB_PATH=$( cd "$( dirname "$0" )" && pwd )
|
if [[ ${#emulator_list[@]} > 0 ]] ; then
|
||||||
|
for i in ${emulator_list[@]}
|
||||||
bash "$CORDOVA_LIB_PATH"/cordova list-emulator-images
|
do
|
||||||
|
echo $i
|
||||||
|
done
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
echo "No emulators found, if you would like to create an emulator follow the instructions"
|
||||||
|
echo " provided here : http://developer.android.com/tools/devices/index.html"
|
||||||
|
echo " Or run 'android create avd --name <name> --target <targetID>' in on the command line."
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
@ -16,8 +16,17 @@
|
|||||||
# specific language governing permissions and limitations
|
# specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
set -e
|
devices=`adb devices | awk '/List of devices attached/ { while(getline > 0) { print $1;}}' | grep 'emulator'`
|
||||||
|
read -ra emulator_list <<< "$devices"
|
||||||
CORDOVA_LIB_PATH=$( cd "$( dirname "$0" )" && pwd )
|
if [[ ${#emulator_list[@]} > 0 ]] ; then
|
||||||
|
for i in ${emulator_list[@]}
|
||||||
bash "$CORDOVA_LIB_PATH"/cordova list-started-emulators
|
do
|
||||||
|
# remove space and 'device'
|
||||||
|
echo $i
|
||||||
|
done
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
echo "No started emulators found, you can start an emulator by using the command"
|
||||||
|
echo " 'cordova/lib/start-emulator'"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
@ -16,8 +16,30 @@
|
|||||||
# specific language governing permissions and limitations
|
# specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
set -e
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
PROJECT_PATH=$( cd "$( dirname "$0" )/../.." && pwd )
|
||||||
|
emulator_images=$("$DIR/list-emulator-images")
|
||||||
|
if [ $? != 0 ]; then
|
||||||
|
echo "No emulators found, if you would like to create an emulator follow the instructions"
|
||||||
|
echo " provided here : http://developer.android.com/tools/devices/index.html"
|
||||||
|
echo " Or run 'android create avd --name <name> --target <targetID>' in on the command line."
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
CORDOVA_LIB_PATH=$( cd "$( dirname "$0" )" && pwd )
|
# if target emulator is provided
|
||||||
|
if [[ "$#" -eq 1 ]] ; then
|
||||||
bash "$CORDOVA_LIB_PATH"/cordova start-emulator "$@"
|
# check that it exists
|
||||||
|
if [[ $emulator_images =~ $1 ]] ; then
|
||||||
|
#xterm -e emulator -avd $1 &
|
||||||
|
emulator -avd $1 1> /dev/null 2>&1 &
|
||||||
|
else
|
||||||
|
echo "Could not find the provided emulator '$1', make sure the emulator exists"
|
||||||
|
echo " by checking 'cordova/lib/list-emulator-images'"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# start first emulator
|
||||||
|
read -ra emulator_list <<< "$emulator_images"
|
||||||
|
#xterm -e emulator -avd ${emulator_list[0]} &
|
||||||
|
emulator -avd ${emulator_list[0]} 1> /dev/null 2>&1 &
|
||||||
|
fi
|
||||||
|
@ -16,8 +16,5 @@
|
|||||||
# specific language governing permissions and limitations
|
# specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
set -e
|
# filter out nativeGetEnabledTags spam from latest sdk bug.
|
||||||
|
adb logcat | grep -v nativeGetEnabledTags
|
||||||
CORDOVA_PATH=$( cd "$( dirname "$0" )/.." && pwd )
|
|
||||||
|
|
||||||
bash "$CORDOVA_PATH"/cordova/lib/cordova log "$@"
|
|
||||||
|
@ -16,8 +16,109 @@
|
|||||||
# specific language governing permissions and limitations
|
# specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
set -e
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
PROJECT_PATH=$( cd "$DIR/.." && pwd )
|
||||||
|
|
||||||
CORDOVA_PATH=$( cd "$( dirname "$0" )" && pwd )
|
function wait_for_emulator {
|
||||||
|
# TODO: this doesnt seem to work
|
||||||
|
emulator_string=$("$DIR/lib/list-started-emulators")
|
||||||
|
old_started=($emulator_string)
|
||||||
|
local new_started
|
||||||
|
local new_emulator_name
|
||||||
|
local i="0"
|
||||||
|
echo -n "Waiting for emulator..."
|
||||||
|
while [ $i -lt 300 ]
|
||||||
|
do
|
||||||
|
emulator_string=$("$DIR/lib/list-started-emulators")
|
||||||
|
new_started=($emulator_string)
|
||||||
|
if [[ ${#new_started[@]} > ${#old_started[@]} && -z "$new_emulator_name" ]] ; then
|
||||||
|
# get the name of the started emulator
|
||||||
|
local count="0"
|
||||||
|
if [[ ${#old_started[@]} == 0 ]] ; then
|
||||||
|
new_emulator_name=${new_started[$count]}
|
||||||
|
else
|
||||||
|
for count in {0...${#old_started[@]}}
|
||||||
|
do
|
||||||
|
if [[ ! ${new_started[$count]} == ${old_started[$count]} ]] ; then
|
||||||
|
new_emulator_name=${new_started[$count]}
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [[ -z "$new_emulator_name" ]] ; then
|
||||||
|
count=$[count+1]
|
||||||
|
new_emulator_name=${new_started[$count]}
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
elif [[ "$new_emulator_name" ]] ; then
|
||||||
|
boot_anim=`adb -s $new_emulator_name shell getprop init.svc.bootanim`
|
||||||
|
if [[ $boot_anim =~ "stopped" ]] ; then
|
||||||
|
break
|
||||||
|
else
|
||||||
|
sleep 1
|
||||||
|
i=$[i+1]
|
||||||
|
echo -n "."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
sleep 1
|
||||||
|
i=$[i+1]
|
||||||
|
echo -n "."
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
# Device timeout: emulator has not started in time
|
||||||
|
if [ $i -eq 300 ]
|
||||||
|
then
|
||||||
|
echo "emulator timeout!"
|
||||||
|
exit 69
|
||||||
|
else
|
||||||
|
echo "connected!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
bash "$CORDOVA_PATH"/lib/cordova run "$@"
|
if [[ "$#" -eq 2 ]] ; then
|
||||||
|
$DIR/build $2
|
||||||
|
if [[ $1 == "--device" ]] ; then
|
||||||
|
$DIR/lib/install_device
|
||||||
|
elif [[ $1 == "--emulator" ]] ; then
|
||||||
|
$DIR/lib/install_emulator
|
||||||
|
elif [[ $1 =~ "--target=" ]]; then
|
||||||
|
$DIR/lib/install_device $1
|
||||||
|
else
|
||||||
|
echo "Error : '$1' is not recognized as an install option"
|
||||||
|
fi
|
||||||
|
elif [[ "$#" -eq 1 ]] ; then
|
||||||
|
if [[ $1 == "--debug" || $1 == "--release" || $1 == "--nobuild" ]] ; then
|
||||||
|
$DIR/build $1
|
||||||
|
elif [[ $1 == "--device" ]] ; then
|
||||||
|
$DIR/build
|
||||||
|
$DIR/lib/install_device
|
||||||
|
elif [[ $1 == "--emulator" ]] ; then
|
||||||
|
$DIR/build
|
||||||
|
$DIR/lib/install_emulator
|
||||||
|
elif [[ $1 =~ "--target=" ]]; then
|
||||||
|
$DIR/build
|
||||||
|
$DIR/lib/install_device $1
|
||||||
|
else
|
||||||
|
echo "Error : '$1' is not recognized as an install option"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Warning : [ --device | --emulate | --target=<targetID> ] not specified, using defaults."
|
||||||
|
#$DIR/build
|
||||||
|
devices=$("$DIR/lib/list-devices")
|
||||||
|
if [ $? = 0 ]; then
|
||||||
|
$DIR/lib/install_device
|
||||||
|
else
|
||||||
|
emulators=$("$DIR/lib/list-started-emulators")
|
||||||
|
if [ $? = 0 ] ; then
|
||||||
|
$DIR/lib/install_emulator
|
||||||
|
else
|
||||||
|
images=$("$DIR/lib/list-emulator-images")
|
||||||
|
if [ $? = 0 ] ; then
|
||||||
|
$DIR/lib/start-emulator
|
||||||
|
wait_for_emulator
|
||||||
|
$DIR/lib/install_emulator
|
||||||
|
else
|
||||||
|
echo "No Android devices attached, nor emulator images available to start. How are we supposed to do this, then?"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
Loading…
Reference in New Issue
Block a user