From c86b618aaaa2575eb47565127d7ebb7153daee82 Mon Sep 17 00:00:00 2001 From: Anis Kadri Date: Fri, 15 Jun 2012 18:35:34 -0700 Subject: [PATCH 1/3] adding bash helper scripts --- bin/templates/cordova/BOOM | 7 +++ bin/templates/cordova/appinfo.jar | Bin 0 -> 1527 bytes bin/templates/cordova/clean | 7 +++ bin/templates/cordova/cordova | 91 ++++++++++++++++++++++++++++++ bin/templates/cordova/debug | 7 +++ bin/templates/cordova/emulate | 7 +++ bin/templates/cordova/log | 7 +++ 7 files changed, 126 insertions(+) create mode 100644 bin/templates/cordova/BOOM create mode 100644 bin/templates/cordova/appinfo.jar create mode 100644 bin/templates/cordova/clean create mode 100644 bin/templates/cordova/cordova create mode 100644 bin/templates/cordova/debug create mode 100644 bin/templates/cordova/emulate create mode 100644 bin/templates/cordova/log diff --git a/bin/templates/cordova/BOOM b/bin/templates/cordova/BOOM new file mode 100644 index 00000000..37c623c4 --- /dev/null +++ b/bin/templates/cordova/BOOM @@ -0,0 +1,7 @@ +#!/bin/bash + +set -e + +CORDOVA_PATH=$( cd "$( dirname "$0" )" && pwd ) + +bash $CORDOVA_PATH/cordova BOOM diff --git a/bin/templates/cordova/appinfo.jar b/bin/templates/cordova/appinfo.jar new file mode 100644 index 0000000000000000000000000000000000000000..4116f48c30d083581fdcc7c08b91c53533cdd08a GIT binary patch literal 1527 zcmWIWW@Zs#-~hsFW#=6jkN_tG3xls~h@-BjpPT-_Qw$8u3<2Kk93T};P-Ou)HH!dM zz%~0i`gyv!28ZbRx_$ONbK1vSSMMUPx31Q?Gv_x48C)@b@U%$J%U8$K_hRWP7S0(j zC67o;Yh_r7i9A`NRq;&qb>^p{pK58(URpg@5fhKrY)~YlzEc= zN{J)ADyOvGPJ5cB+L^ENKkTS!h{zf)m3I++qIX0)o*kFtIP&byF3kygk$sVQw?i*S zo38Tp`W4;we73RQ-Qu;sCOwRhUM9~Gb7Hz#@AI~MCUe^2IBia6`gq$v*J=!`-j=e( zshIV?W`)BN7S9@KegBX@n8UPR)HnPIClul5`$n(LZ=Sl3IK_qw6e za;bgCoq4k(!asN%=C4@uptDW>V~9hhVDm)-Q;8K^D!ow&w%eO>c}=f~2JCBWbD00y z^o#iRtg5?Pzy4g7Ih)V;a*yA-;J!rT#`z`@HZ-n;()`biEpHi8-@+0QRs{AXdZ^zpyEqNdy#2OqxkHBbF~{H~15g>JX6 zGaDAJdfUL^wp+6?vXawm3hO&BWK6F+<=E=;sx&c4d*0E&u?Gfop1T5==u|$ zCDF2$?sZpxc&z({lz#Eg zZl@F3onK<#=}qSTRPj*sh_@cgJ!RjPLvkyME?BKna$D)Na(}x=W{vp8PbrDw8<%$0 z9${UUfe zRlm4<^rtM(H1+a}+neJ~>c3IYto)`Lczi?O@fsHu^Pe3ad7lM4TN=a*=7lUa@x8Hk zN$rWC?3OQl@smqqmVOnO_dsb?%xsBgN2@qz$J}1i)U5p>V*2-&sS+FOSIPuV2sdC` zxS$~Zpv8Y-L#z2N9~V^kOWHWug;o6JzT)&HEtCE5{^WwUqHRXv-wpP3d(S+rvU^96 z)cwPukq`LpF&^iEIL>C_{D_s3=2#t3W2! Vf-S(Cl?|kf83+#mX+>5L4*)4LUN8Uv literal 0 HcmV?d00001 diff --git a/bin/templates/cordova/clean b/bin/templates/cordova/clean new file mode 100644 index 00000000..daa84421 --- /dev/null +++ b/bin/templates/cordova/clean @@ -0,0 +1,7 @@ +#!/bin/bash + +set -e + +CORDOVA_PATH=$( cd "$( dirname "$0" )" && pwd ) + +bash $CORDOVA_PATH/cordova clean diff --git a/bin/templates/cordova/cordova b/bin/templates/cordova/cordova new file mode 100644 index 00000000..0f3e452c --- /dev/null +++ b/bin/templates/cordova/cordova @@ -0,0 +1,91 @@ +#!/bin/bash + +set -e + +PROJECT_PATH=$( cd "$( dirname "$0" )/.." && pwd ) + +function check_devices { + local devices=`adb devices | awk '/List of devices attached/ { while(getline > 0) { print }}'` + if [ -z "$devices" ] ; then + echo "1" + else + echo "0" + fi +} + +function emulate { + declare -a avd_list=($(android list avd | grep "Name:" | cut -f 2 -d ":" | xargs)) + # we need to start adb-server + adb start-server 1>/dev/null + + # Do not launch an emulator if there is already one running or if a device is attached + if [ $(check_devices) == 0 ] ; then + echo "Device attached or emulator already running" + return + fi + + local avd_id="1000" #FIXME: hopefully user does not have 1000 AVDs + # User has no AVDs + if [ ${#avd_list[@]} == 0 ] + then + echo "You don't have any Android Virtual Devices. Please create at least one AVD." + echo "android" + fi + # User has only one AVD + if [ ${#avd_list[@]} == 1 ] + then + emulator -cpu-delay 0 -no-boot-anim -cache /tmp/cache -avd ${avd_list[0]} 1> /dev/null 2>&1 & + # User has more than 1 AVD + elif [ ${#avd_list[@]} -gt 1 ] + then + while [ -z ${avd_list[$avd_id]} ] + do + echo "Choose from one of the following Android Virtual Devices [0 to $((${#avd_list[@]}-1))]:" + for(( i = 0 ; i < ${#avd_list[@]} ; i++ )) + do + echo "$i) ${avd_list[$i]}" + done + echo -n "> " + read avd_id + done + emulator -cpu-delay 0 -no-boot-anim -cache /tmp/cache -avd ${avd_list[$avd_id]} 1> /dev/null 2>&1 & + fi + +} + +function clean { + ant clean +} +# has to be used independently and not in conjuction with other commands +function log { + adb logcat +} + +function debug_install { + ant debug install +} + +function debug { + ant debug +} + +function launch { + local launch_str=$(java -jar $PROJECT_PATH/cordova/appinfo.jar $PROJECT_PATH/AndroidManifest.xml) + adb shell am start -n $launch_str +} + +function BOOM { + clean + if [ $(check_devices) == 0 ] ; then + debug_install && launch + return + else + debug + echo "##################################################################" + echo "# Plug in your device or launch an emulator with cordova/emulate #" + echo "##################################################################" + fi +} + +# TODO parse arguments +(cd $PROJECT_PATH && $1) diff --git a/bin/templates/cordova/debug b/bin/templates/cordova/debug new file mode 100644 index 00000000..5d63a39f --- /dev/null +++ b/bin/templates/cordova/debug @@ -0,0 +1,7 @@ +#!/bin/bash + +set -e + +CORDOVA_PATH=$( cd "$( dirname "$0" )" && pwd ) + +bash $CORDOVA_PATH/cordova debug diff --git a/bin/templates/cordova/emulate b/bin/templates/cordova/emulate new file mode 100644 index 00000000..6c4fab2b --- /dev/null +++ b/bin/templates/cordova/emulate @@ -0,0 +1,7 @@ +#!/bin/bash + +set -e + +CORDOVA_PATH=$( cd "$( dirname "$0" )" && pwd ) + +bash $CORDOVA_PATH/cordova emulate diff --git a/bin/templates/cordova/log b/bin/templates/cordova/log new file mode 100644 index 00000000..ab3622e5 --- /dev/null +++ b/bin/templates/cordova/log @@ -0,0 +1,7 @@ +#!/bin/bash + +set -e + +PROJECT_PATH=$( cd "$( dirname "$0" )/.." && pwd ) + +bash $PROJECT_PATH/cordova/cordova log From 0aec2be4dd702d4318b789d1eed5d6056cd12622 Mon Sep 17 00:00:00 2001 From: Anis Kadri Date: Fri, 15 Jun 2012 18:36:06 -0700 Subject: [PATCH 2/3] updating bash create script and node test --- bin/create | 10 ++++++++++ bin/tests/test_create_unix.js | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/bin/create b/bin/create index a6b5c8c6..d6885493 100755 --- a/bin/create +++ b/bin/create @@ -113,3 +113,13 @@ sed -i '' -e "s/__ID__/${PACKAGE}/g" $ACTIVITY_PATH cp $BUILD_PATH/bin/templates/project/AndroidManifest.xml $MANIFEST_PATH sed -i '' -e "s/__ACTIVITY__/${ACTIVITY}/g" $MANIFEST_PATH sed -i '' -e "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 diff --git a/bin/tests/test_create_unix.js b/bin/tests/test_create_unix.js index 75e0697e..a9061767 100644 --- a/bin/tests/test_create_unix.js +++ b/bin/tests/test_create_unix.js @@ -80,6 +80,41 @@ create_project.on('exit', function(code) { path.exists(util.format('%s/assets/www/cordova-%s.js', project_path, version), function(exists) { assert(exists, 'cordova.js did not get added'); }); + + // make sure cordova master script was added + path.exists(util.format('%s/cordova/cordova', project_path), function(exists) { + assert(exists, 'cordova script did not get added'); + }); + + // make sure debug script was added + path.exists(util.format('%s/cordova/debug', project_path), function(exists) { + assert(exists, 'debug script did not get added'); + }); + + // make sure BOOM script was added + path.exists(util.format('%s/cordova/BOOM', project_path), function(exists) { + assert(exists, 'BOOM script did not get added'); + }); + + // make sure log script was added + path.exists(util.format('%s/cordova/log', project_path), function(exists) { + assert(exists, 'log script did not get added'); + }); + + // make sure clean script was added + path.exists(util.format('%s/cordova/clean', project_path), function(exists) { + assert(exists, 'clean script did not get added'); + }); + + // make sure emulate script was added + path.exists(util.format('%s/cordova/emulate', project_path), function(exists) { + assert(exists, 'emulate script did not get added'); + }); + + // make sure appinfo.jar script was added + path.exists(util.format('%s/cordova/appinfo.jar', project_path), function(exists) { + assert(exists, 'appinfo.jar script did not get added'); + }); // check that project compiles && creates a cordovaExample-debug.apk var compile_project = spawn('ant', ['debug'], {cwd: project_path}); From e6d801a5946c472b4acf73f0dff2ead41907f448 Mon Sep 17 00:00:00 2001 From: Anis Kadri Date: Fri, 15 Jun 2012 18:38:46 -0700 Subject: [PATCH 3/3] adding appinfo --- .../ApplicationInfo/ApplicationInfo.class | Bin 0 -> 1941 bytes .../ApplicationInfo/ApplicationInfo.java | 44 ++++++++++++++++++ .../cordova/ApplicationInfo/manifest.txt | 1 + 3 files changed, 45 insertions(+) create mode 100644 bin/templates/cordova/ApplicationInfo/ApplicationInfo.class create mode 100644 bin/templates/cordova/ApplicationInfo/ApplicationInfo.java create mode 100644 bin/templates/cordova/ApplicationInfo/manifest.txt diff --git a/bin/templates/cordova/ApplicationInfo/ApplicationInfo.class b/bin/templates/cordova/ApplicationInfo/ApplicationInfo.class new file mode 100644 index 0000000000000000000000000000000000000000..6b854f7d209a1bea4014ab9b59749ed15d2cd7dc GIT binary patch literal 1941 zcma)7TUQ%Z6#h0+2_x{e|-($CR!?zxS?`&OOg*&e1wk^ z_ynKEaXWzoX5yHY-*X9khC2%G#_@R{=CKgRqJn!WmaweiKE6<}q9TPa6?~;)Q1XI` zA<0)&4C6)|MU{4I@?$-YuOzVU*)pe}us$pB(rsoS>$QE{t=Z0Q4?3!NkUCXY`NY)oK%@jod<@etEL&hG`>40MT5?)$#ay<6(DTh^-KrSA<=89swv(3;HC)FSooe_F z4>fFJOTi-z-{Y}@CmMdhQvsz(3`Wh=V4y4zH!8mM-17G{R8Unw`8H|-1CCqMU)-wb zRi~jZ)y;-!Gc(QTgRg;x~!wS=-Asp$uE$vp!rp!)*gE4_&2}s&_#;#tPfB0sfSc90B zqpz%WNz-qUbk1O*W!0;uOSmlt%U3N|Llb2UKY_xup3m#2jxx`98a((KG7@?6RMAhQ z+X*6&m2pp|ch9M`WC4#5EVJg0yC;ya%@-@S=Noo~-87Y*2oC-%wzC2$8lQ43kU5JF z8ejikkOI-*bOds}+PTo(AIC80c(9k8U~8s-to5dw(gfSBezZX^8rA20-kfsFXJy8F zA~=1%GCJ*!ym$+H8%C|jK0QkYMc(j&<@u*GIF|EvTE5wkcYEa|XsJP~uD&nrd4X!! zX~|*Gxyc8}z`CqU;K&31a@#7ybx{4U?}ipxlK&XQ!X z3dYWcYse-`utMvu(==V54Hz?;P1CLlO!ols--t*3OZ0KyIqvttqn0}Xjf3bKhq?TP z!FIzK>AU>8OfJZyxmOS`xe$1dG!_W^pvsHJHC07~QiXfo0YZhzHp0c}TpN+qsY65s zW+EezRO}E+2s6>CRQwQqA%qX1hVTaxDXp^;`vvDx@5Fvbax**aYL+ literal 0 HcmV?d00001 diff --git a/bin/templates/cordova/ApplicationInfo/ApplicationInfo.java b/bin/templates/cordova/ApplicationInfo/ApplicationInfo.java new file mode 100644 index 00000000..9a663217 --- /dev/null +++ b/bin/templates/cordova/ApplicationInfo/ApplicationInfo.java @@ -0,0 +1,44 @@ +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import org.xml.sax.SAXException; +import java.io.IOException; + +public class ApplicationInfo { + private static void parseAndroidManifest(String path) { + // System.out.println(path); + DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + Document dom; + try { + DocumentBuilder db = dbf.newDocumentBuilder(); + dom = db.parse(path); + + // getting package information + Element manifest = dom.getDocumentElement(); + String pakkage = manifest.getAttribute("package"); + + // getting activity name + String activity = ((Element)dom.getElementsByTagName("activity").item(0)).getAttribute("android:name"); + System.out.println(String.format("%s/%s.%s", pakkage, pakkage, activity)); + } catch(ParserConfigurationException pce) { + pce.printStackTrace(); + } catch(SAXException se) { + se.printStackTrace(); + } catch(IOException ioe) { + ioe.printStackTrace(); + } + + } + + public static void main(String[] args) { + String path; + if(args.length > 0) { + path = args[0]; + } else { + path = System.getProperty("user.dir") + "/../AndroidManifest.xml"; + } + parseAndroidManifest(path); + } +} diff --git a/bin/templates/cordova/ApplicationInfo/manifest.txt b/bin/templates/cordova/ApplicationInfo/manifest.txt new file mode 100644 index 00000000..7d77999c --- /dev/null +++ b/bin/templates/cordova/ApplicationInfo/manifest.txt @@ -0,0 +1 @@ +Main-Class: ApplicationInfo