2012-05-31 10:59:20 +08:00
|
|
|
#! /bin/sh
|
|
|
|
# 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.
|
|
|
|
#
|
|
|
|
# create a cordova/android project
|
|
|
|
#
|
|
|
|
# USAGE
|
|
|
|
# ./create [path package activity]
|
|
|
|
#
|
|
|
|
set -e
|
|
|
|
|
|
|
|
if [ -n "$1" ] && [ "$1" == "-h" ]
|
|
|
|
then
|
|
|
|
echo 'usage: create path package activity'
|
|
|
|
echo "Make sure the Android SDK tools folder is in your PATH!"
|
|
|
|
exit 0
|
|
|
|
fi
|
|
|
|
|
|
|
|
BUILD_PATH=$( cd "$( dirname "$0" )/.." && pwd )
|
2012-07-28 09:30:39 +08:00
|
|
|
VERSION=$(cat "$BUILD_PATH"/VERSION)
|
2012-05-31 10:59:20 +08:00
|
|
|
|
2012-07-28 09:30:39 +08:00
|
|
|
PROJECT_PATH=${1:-'./example'}
|
2012-05-31 10:59:20 +08:00
|
|
|
PACKAGE=${2:-"org.apache.cordova.example"}
|
|
|
|
ACTIVITY=${3:-"cordovaExample"}
|
|
|
|
|
|
|
|
# clobber any existing example
|
2012-07-28 09:30:39 +08:00
|
|
|
if [ -d "$PROJECT_PATH" ]
|
2012-05-31 10:59:20 +08:00
|
|
|
then
|
|
|
|
echo "Project already exists! Delete and recreate"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2012-06-01 03:23:56 +08:00
|
|
|
# cleanup after exit and/or on error
|
|
|
|
function on_exit {
|
2012-07-28 09:30:39 +08:00
|
|
|
# [ -f "$BUILD_PATH"/framework/libs/commons-codec-1.6.jar ] && rm "$BUILD_PATH"/framework/libs/commons-codec-1.6.jar
|
|
|
|
# [ -d "$BUILD_PATH"/framework/libs ] && rmdir "$BUILD_PATH"/framework/libs
|
|
|
|
if [ -f "$BUILD_PATH"/framework/assets/www/cordova-$VERSION.js ]
|
2012-06-27 08:34:19 +08:00
|
|
|
then
|
2012-07-28 09:30:39 +08:00
|
|
|
rm "$BUILD_PATH"/framework/assets/www/cordova-$VERSION.js
|
2012-06-27 08:34:19 +08:00
|
|
|
fi
|
2012-07-28 09:30:39 +08:00
|
|
|
if [ -f "$BUILD_PATH"/framework/cordova-$VERSION.jar ]
|
2012-06-27 08:34:19 +08:00
|
|
|
then
|
2012-07-28 09:30:39 +08:00
|
|
|
rm "$BUILD_PATH"/framework/cordova-$VERSION.jar
|
2012-06-27 08:34:19 +08:00
|
|
|
fi
|
2012-06-01 03:23:56 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
function on_error {
|
|
|
|
echo "An error occured. Deleting project..."
|
2012-07-28 09:30:39 +08:00
|
|
|
[ -d "$PROJECT_PATH" ] && rm -rf "$PROJECT_PATH"
|
2012-06-01 03:23:56 +08:00
|
|
|
}
|
|
|
|
|
2012-07-12 05:00:42 +08:00
|
|
|
function replace {
|
|
|
|
local pattern=$1
|
|
|
|
local filename=$2
|
|
|
|
# Mac OS X requires -i argument
|
2012-07-28 23:13:31 +08:00
|
|
|
if [[ "$OSTYPE" =~ "darwin" ]]
|
2012-07-12 05:00:42 +08:00
|
|
|
then
|
2012-07-28 23:13:31 +08:00
|
|
|
/usr/bin/sed -i '' -e $pattern "$filename"
|
|
|
|
elif [[ "$OSTYPE" =~ "linux" ]]
|
2012-07-12 05:00:42 +08:00
|
|
|
then
|
2012-07-28 23:13:31 +08:00
|
|
|
/bin/sed -i -e $pattern "$filename"
|
2012-07-12 05:00:42 +08:00
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2012-06-01 03:23:56 +08:00
|
|
|
# we do not want the script to silently fail
|
|
|
|
trap on_error ERR
|
|
|
|
trap on_exit EXIT
|
|
|
|
|
|
|
|
ANDROID_BIN=$( which android )
|
2012-05-31 10:59:20 +08:00
|
|
|
PACKAGE_AS_PATH=$(echo $PACKAGE | sed 's/\./\//g')
|
2012-07-28 09:30:39 +08:00
|
|
|
ACTIVITY_PATH="$PROJECT_PATH"/src/$PACKAGE_AS_PATH/$ACTIVITY.java
|
|
|
|
MANIFEST_PATH="$PROJECT_PATH"/AndroidManifest.xml
|
2012-05-31 10:59:20 +08:00
|
|
|
|
|
|
|
TARGET=$($ANDROID_BIN list targets | grep id: | tail -1 | cut -f 2 -d ' ' )
|
|
|
|
|
2012-06-27 08:34:19 +08:00
|
|
|
# if this a distribution release no need to build a jar
|
2012-07-28 09:30:39 +08:00
|
|
|
if [ ! -e "$BUILD_PATH"/cordova-$VERSION.jar ] && [ -d "$BUILD_PATH"/framework ]
|
2012-06-27 08:34:19 +08:00
|
|
|
then
|
2012-05-31 10:59:20 +08:00
|
|
|
# update the cordova-android framework for the desired target
|
2012-07-28 09:30:39 +08:00
|
|
|
$ANDROID_BIN update project --target $TARGET --path "$BUILD_PATH"/framework &> /dev/null
|
2012-06-27 08:34:19 +08:00
|
|
|
|
2012-07-28 09:30:39 +08:00
|
|
|
if [ ! -e "$BUILD_PATH"/framework/libs/commons-codec-1.6.jar ]; then
|
2012-06-27 08:34:19 +08:00
|
|
|
# Use curl to get the jar (TODO: Support Apache Mirrors)
|
|
|
|
curl -OL http://mirror.symnds.com/software/Apache//commons/codec/binaries/commons-codec-1.6-bin.zip &> /dev/null
|
|
|
|
unzip commons-codec-1.6-bin.zip &> /dev/null
|
2012-07-28 09:30:39 +08:00
|
|
|
mkdir -p "$BUILD_PATH"/framework/libs
|
|
|
|
cp commons-codec-1.6/commons-codec-1.6.jar "$BUILD_PATH"/framework/libs
|
2012-06-27 08:34:19 +08:00
|
|
|
# cleanup yo
|
|
|
|
rm commons-codec-1.6-bin.zip && rm -rf commons-codec-1.6
|
|
|
|
fi
|
2012-05-31 10:59:20 +08:00
|
|
|
|
|
|
|
# compile cordova.js and cordova.jar
|
2012-07-28 09:30:39 +08:00
|
|
|
(cd "$BUILD_PATH"/framework && ant jar &> /dev/null )
|
2012-06-27 08:34:19 +08:00
|
|
|
fi
|
|
|
|
|
2012-05-31 10:59:20 +08:00
|
|
|
# create new android project
|
2012-07-28 09:30:39 +08:00
|
|
|
$ANDROID_BIN create project --target $TARGET --path "$PROJECT_PATH" --package $PACKAGE --activity $ACTIVITY &> /dev/null
|
2012-05-31 10:59:20 +08:00
|
|
|
|
|
|
|
# copy project template
|
2012-07-28 09:30:39 +08:00
|
|
|
cp -r "$BUILD_PATH"/bin/templates/project/assets "$PROJECT_PATH"
|
|
|
|
cp -r "$BUILD_PATH"/bin/templates/project/res "$PROJECT_PATH"
|
2012-05-31 10:59:20 +08:00
|
|
|
|
|
|
|
# copy cordova.js, cordova.jar and res/xml
|
2012-07-28 09:30:39 +08:00
|
|
|
if [ -d "$BUILD_PATH"/framework ]
|
2012-06-27 08:34:19 +08:00
|
|
|
then
|
2012-07-28 09:30:39 +08:00
|
|
|
cp -r "$BUILD_PATH"/framework/res/xml "$PROJECT_PATH"/res
|
|
|
|
cp "$BUILD_PATH"/framework/assets/www/cordova-$VERSION.js "$PROJECT_PATH"/assets/www/cordova-$VERSION.js
|
|
|
|
cp "$BUILD_PATH"/framework/cordova-$VERSION.jar "$PROJECT_PATH"/libs/cordova-$VERSION.jar
|
2012-06-27 08:34:19 +08:00
|
|
|
else
|
2012-07-28 09:30:39 +08:00
|
|
|
cp -r "$BUILD_PATH"/xml "$PROJECT_PATH"/res/xml
|
|
|
|
cp "$BUILD_PATH"/cordova-$VERSION.js "$PROJECT_PATH"/assets/www/cordova-$VERSION.js
|
|
|
|
cp "$BUILD_PATH"/cordova-$VERSION.jar "$PROJECT_PATH"/libs/cordova-$VERSION.jar
|
2012-06-27 08:34:19 +08:00
|
|
|
fi
|
2012-05-31 10:59:20 +08:00
|
|
|
|
|
|
|
# interpolate the activity name and package
|
2012-07-28 09:30:39 +08:00
|
|
|
cp "$BUILD_PATH"/bin/templates/project/Activity.java "$ACTIVITY_PATH"
|
|
|
|
replace "s/__ACTIVITY__/${ACTIVITY}/g" "$ACTIVITY_PATH"
|
|
|
|
replace "s/__ID__/${PACKAGE}/g" "$ACTIVITY_PATH"
|
2012-05-31 10:59:20 +08:00
|
|
|
|
2012-07-28 09:30:39 +08:00
|
|
|
cp "$BUILD_PATH"/bin/templates/project/AndroidManifest.xml "$MANIFEST_PATH"
|
|
|
|
replace "s/__ACTIVITY__/${ACTIVITY}/g" "$MANIFEST_PATH"
|
|
|
|
replace "s/__PACKAGE__/${PACKAGE}/g" "$MANIFEST_PATH"
|
2012-06-16 09:36:06 +08:00
|
|
|
|
|
|
|
# creating cordova folder and copying emulate/debug/log/launch scripts
|
2012-07-28 09:30:39 +08:00
|
|
|
mkdir "$PROJECT_PATH"/cordova
|
|
|
|
cp "$BUILD_PATH"/bin/templates/cordova/appinfo.jar "$PROJECT_PATH"/cordova/appinfo.jar
|
|
|
|
cp "$BUILD_PATH"/bin/templates/cordova/cordova "$PROJECT_PATH"/cordova/cordova
|
|
|
|
cp "$BUILD_PATH"/bin/templates/cordova/debug "$PROJECT_PATH"/cordova/debug
|
|
|
|
cp "$BUILD_PATH"/bin/templates/cordova/clean "$PROJECT_PATH"/cordova/clean
|
|
|
|
cp "$BUILD_PATH"/bin/templates/cordova/log "$PROJECT_PATH"/cordova/log
|
|
|
|
cp "$BUILD_PATH"/bin/templates/cordova/emulate "$PROJECT_PATH"/cordova/emulate
|
|
|
|
cp "$BUILD_PATH"/bin/templates/cordova/BOOM "$PROJECT_PATH"/cordova/BOOM
|