cordova-android/bin/create

148 lines
5.4 KiB
Plaintext
Raw Normal View History

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 )
VERSION=$(cat $BUILD_PATH/VERSION)
2012-05-31 10:59:20 +08:00
PROJECT_PATH=${1:-"./example"}
PACKAGE=${2:-"org.apache.cordova.example"}
ACTIVITY=${3:-"cordovaExample"}
# clobber any existing example
if [ -d $PROJECT_PATH ]
then
echo "Project already exists! Delete and recreate"
exit 1
fi
# cleanup after exit and/or on error
function on_exit {
2012-06-14 06:52:26 +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
2012-06-27 08:34:19 +08:00
if [ -f $BUILD_PATH/framework/assets/www/cordova-$VERSION.js ]
then
rm $BUILD_PATH/framework/assets/www/cordova-$VERSION.js
fi
if [ -f $BUILD_PATH/framework/cordova-$VERSION.jar ]
then
rm $BUILD_PATH/framework/cordova-$VERSION.jar
fi
}
function on_error {
echo "An error occured. Deleting project..."
[ -d $PROJECT_PATH ] && rm -rf $PROJECT_PATH
}
2012-07-12 05:00:42 +08:00
function replace {
local pattern=$1
local filename=$2
# Mac OS X requires -i argument
if [ $OSTYPE = 'darwin11' ]
then
sed -i '' -e $pattern $filename
elif [ $OSTYPE = 'linux-gnu' ]
then
sed -i -e $pattern $filename
fi
}
# 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')
ACTIVITY_PATH=$PROJECT_PATH/src/$PACKAGE_AS_PATH/$ACTIVITY.java
MANIFEST_PATH=$PROJECT_PATH/AndroidManifest.xml
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
if [ ! -e $BUILD_PATH/cordova-$VERSION.jar ] && [ -d $BUILD_PATH/framework ]
then
2012-05-31 10:59:20 +08:00
# update the cordova-android framework for the desired target
2012-06-27 08:34:19 +08:00
$ANDROID_BIN update project --target $TARGET --path $BUILD_PATH/framework &> /dev/null
if [ ! -e $BUILD_PATH/framework/libs/commons-codec-1.6.jar ]; then
# 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
mkdir -p $BUILD_PATH/framework/libs
cp commons-codec-1.6/commons-codec-1.6.jar $BUILD_PATH/framework/libs
# 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-06-27 08:34:19 +08:00
(cd $BUILD_PATH/framework && ant jar &> /dev/null )
fi
2012-05-31 10:59:20 +08:00
# create new android project
$ANDROID_BIN create project --target $TARGET --path $PROJECT_PATH --package $PACKAGE --activity $ACTIVITY &> /dev/null
# copy project template
2012-06-08 11:10:14 +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-06-27 08:34:19 +08:00
if [ -d $BUILD_PATH/framework ]
then
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
else
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
fi
2012-05-31 10:59:20 +08:00
# interpolate the activity name and package
2012-06-08 11:10:14 +08:00
cp $BUILD_PATH/bin/templates/project/Activity.java $ACTIVITY_PATH
2012-07-12 05:00:42 +08:00
replace "s/__ACTIVITY__/${ACTIVITY}/g" $ACTIVITY_PATH
replace "s/__ID__/${PACKAGE}/g" $ACTIVITY_PATH
2012-05-31 10:59:20 +08:00
2012-06-08 11:10:14 +08:00
cp $BUILD_PATH/bin/templates/project/AndroidManifest.xml $MANIFEST_PATH
2012-07-12 05:00:42 +08:00
replace "s/__ACTIVITY__/${ACTIVITY}/g" $MANIFEST_PATH
replace "s/__PACKAGE__/${PACKAGE}/g" $MANIFEST_PATH
# creating cordova folder and copying emulate/debug/log/launch scripts
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