diff options
author | Scott Barta <sbarta@google.com> | 2013-04-15 12:42:56 -0700 |
---|---|---|
committer | Scott Barta <sbarta@google.com> | 2013-04-26 15:14:32 -0700 |
commit | 5afb360a339d083d0edc7b78c04f2dcfbd2a7f41 (patch) | |
tree | 477b9bcff9eafa3e5bb8d3bb1139c0f9fd2b21aa /templates | |
parent | 31baa1d95b494108670d0033b4724ef78f41ef85 (diff) | |
download | sdk-5afb360a339d083d0edc7b78c04f2dcfbd2a7f41.zip sdk-5afb360a339d083d0edc7b78c04f2dcfbd2a7f41.tar.gz sdk-5afb360a339d083d0edc7b78c04f2dcfbd2a7f41.tar.bz2 |
Modified templates for Gradle projects
Modifies the existing templates to output Gradle build files with a
new multi-level directory structure. The templates continue to work
the old way that Eclipse expects, and the new behavior is only enabled
if the "isGradle" global is set to "true".
Files to configure the Gradle wrapper are placed in the SDK at
tools/templates/gradle/wrapper.
This CL changes all file copies and merges to go to fully-qualified
directories set up via global variables. Things go to the old
locations for non-Gradle builds based on how the globals are set up,
but Gradle builds can override output directory variables to reflect
the new directory structure.
This CL also adds NewAndroidLibrary and NewJavaLibrary project
templates, which will be used in the future. The current
NewAndroidApplication template also can output a library, which is
redundant and confusing; this will likely be fixed somehow in the
future.
Change-Id: Ieb830bdfba1797d87a218326ebd37c99d254758e
Diffstat (limited to 'templates')
40 files changed, 649 insertions, 50 deletions
diff --git a/templates/activities/BlankActivity/globals.xml.ftl b/templates/activities/BlankActivity/globals.xml.ftl index 6220005..11aabd7 100644 --- a/templates/activities/BlankActivity/globals.xml.ftl +++ b/templates/activities/BlankActivity/globals.xml.ftl @@ -1,5 +1,8 @@ <?xml version="1.0"?> <globals> + <global id="projectOut" value="." /> + <global id="manifestOut" value="." /> <global id="srcOut" value="src/${slashedPackageName(packageName)}" /> + <global id="resOut" value="res" /> <global id="menuName" value="${classToResource(activityClass)}" /> </globals> diff --git a/templates/activities/BlankActivity/recipe.xml.ftl b/templates/activities/BlankActivity/recipe.xml.ftl index 78bd8b2..148b09d 100644 --- a/templates/activities/BlankActivity/recipe.xml.ftl +++ b/templates/activities/BlankActivity/recipe.xml.ftl @@ -1,32 +1,37 @@ <?xml version="1.0"?> <recipe> - <merge from="AndroidManifest.xml.ftl" /> + <merge from="AndroidManifest.xml.ftl" + to="${manifestOut}/AndroidManifest.xml" /> <instantiate from="res/menu/main.xml.ftl" - to="res/menu/${menuName}.xml" /> + to="${resOut}/menu/${menuName}.xml" /> - <merge from="res/values/strings.xml.ftl" /> + <merge from="res/values/strings.xml.ftl" + to="${resOut}/values/strings.xml" /> - <merge from="res/values/dimens.xml" /> - <merge from="res/values-sw600dp/dimens.xml" /> - <merge from="res/values-sw720dp-land/dimens.xml" /> + <merge from="res/values/dimens.xml" + to="${resOut}/values/dimens.xml" /> + <merge from="res/values-sw600dp/dimens.xml" + to="${resOut}/values-sw600dp/dimens.xml" /> + <merge from="res/values-sw720dp-land/dimens.xml" + to="${resOut}/values-sw720dp-land/dimens.xml" /> <!-- Decide what kind of layout to add (viewpager or not) --> <#if navType?contains("pager")> <instantiate from="res/layout/activity_pager.xml.ftl" - to="res/layout/${layoutName}.xml" /> + to="${resOut}/layout/${layoutName}.xml" /> <instantiate from="res/layout/fragment_dummy.xml.ftl" - to="res/layout/fragment_${classToResource(activityClass)}_dummy.xml" /> + to="${resOut}/layout/fragment_${classToResource(activityClass)}_dummy.xml" /> <#elseif navType == "tabs" || navType == "dropdown"> <instantiate from="res/layout/activity_fragment_container.xml" - to="res/layout/${layoutName}.xml" /> + to="${resOut}/layout/${layoutName}.xml" /> <instantiate from="res/layout/fragment_dummy.xml.ftl" - to="res/layout/fragment_${classToResource(activityClass)}_dummy.xml" /> + to="${resOut}/layout/fragment_${classToResource(activityClass)}_dummy.xml" /> <#else> <instantiate from="res/layout/activity_simple.xml.ftl" - to="res/layout/${layoutName}.xml" /> + to="${resOut}/layout/${layoutName}.xml" /> </#if> <!-- Decide which activity code to add --> @@ -48,5 +53,5 @@ </#if> - <open file="res/layout/${layoutName}.xml" /> + <open file="${resOut}/layout/${layoutName}.xml" /> </recipe> diff --git a/templates/activities/FullscreenActivity/globals.xml.ftl b/templates/activities/FullscreenActivity/globals.xml.ftl index a416d3a..6d73e17 100644 --- a/templates/activities/FullscreenActivity/globals.xml.ftl +++ b/templates/activities/FullscreenActivity/globals.xml.ftl @@ -1,5 +1,8 @@ <?xml version="1.0"?> <globals> + <global id="projectOut" value="." /> + <global id="manifestOut" value="." /> <global id="srcOut" value="src/${slashedPackageName(packageName)}" /> + <global id="resOut" value="res" /> <global id="simpleName" value="${activityToLayout(activityClass)}" /> </globals> diff --git a/templates/activities/FullscreenActivity/recipe.xml.ftl b/templates/activities/FullscreenActivity/recipe.xml.ftl index 1e41e5f..b3e1f20 100644 --- a/templates/activities/FullscreenActivity/recipe.xml.ftl +++ b/templates/activities/FullscreenActivity/recipe.xml.ftl @@ -1,16 +1,21 @@ <?xml version="1.0"?> <recipe> - <merge from="AndroidManifest.xml.ftl" /> + <merge from="AndroidManifest.xml.ftl" + to="${manifestOut}/AndroidManifest.xml" /> - <merge from="res/values/attrs.xml" /> - <merge from="res/values/colors.xml" /> - <merge from="res/values/styles.xml" /> - <merge from="res/values-v11/styles.xml" /> + <merge from="res/values/attrs.xml" + to="${resOut}/values/attrs.xml" /> + <merge from="res/values/colors.xml" + to="${resOut}/values/colors.xml" /> + <merge from="res/values/styles.xml" + to="${resOut}/values/styles.xml" /> + <merge from="res/values-v11/styles.xml" + to="${resOut}/values-v11/styles.xml" /> <instantiate from="res/layout/activity_fullscreen.xml.ftl" - to="res/layout/${layoutName}.xml" /> + to="${resOut}/layout/${layoutName}.xml" /> <merge from="res/values/strings.xml.ftl" - to="res/values/strings.xml" /> + to="${resOut}/values/strings.xml" /> <instantiate from="src/app_package/FullscreenActivity.java.ftl" to="${srcOut}/${activityClass}.java" /> @@ -21,5 +26,5 @@ <instantiate from="src/app_package/util/SystemUiHiderHoneycomb.java.ftl" to="${srcOut}/util/SystemUiHiderHoneycomb.java" /> - <open file="res/layout/${layoutName}.xml" /> + <open file="${resOut}/layout/${layoutName}.xml" /> </recipe> diff --git a/templates/activities/FullscreenActivity/root/res/values/attrs.xml b/templates/activities/FullscreenActivity/root/res/values/attrs.xml index 0201588..2cf1a1a 100644 --- a/templates/activities/FullscreenActivity/root/res/values/attrs.xml +++ b/templates/activities/FullscreenActivity/root/res/values/attrs.xml @@ -9,4 +9,4 @@ <attr name="buttonBarButtonStyle" format="reference" /> </declare-styleable> -</resources>
\ No newline at end of file +</resources> diff --git a/templates/activities/LoginActivity/globals.xml.ftl b/templates/activities/LoginActivity/globals.xml.ftl index 62dfd8d..fbe8985 100644 --- a/templates/activities/LoginActivity/globals.xml.ftl +++ b/templates/activities/LoginActivity/globals.xml.ftl @@ -1,6 +1,9 @@ <?xml version="1.0"?> <globals> + <global id="projectOut" value="." /> + <global id="manifestOut" value="." /> <global id="srcOut" value="src/${slashedPackageName(packageName)}" /> + <global id="resOut" value="res" /> <global id="menuName" value="${classToResource(activityClass)}" /> <global id="simpleName" value="${activityToLayout(activityClass)}" /> </globals> diff --git a/templates/activities/LoginActivity/recipe.xml.ftl b/templates/activities/LoginActivity/recipe.xml.ftl index ece4285..58d823f 100644 --- a/templates/activities/LoginActivity/recipe.xml.ftl +++ b/templates/activities/LoginActivity/recipe.xml.ftl @@ -1,19 +1,22 @@ <?xml version="1.0"?> <recipe> - <merge from="AndroidManifest.xml.ftl" /> + <merge from="AndroidManifest.xml.ftl" + to="${manifestOut}/AndroidManifest.xml" /> - <merge from="res/values/styles.xml" /> - <merge from="res/values-large/styles.xml" /> + <merge from="res/values/styles.xml" + to="${resOut}/values/styles.xml" /> + <merge from="res/values-large/styles.xml" + to="${resOut}/values-large/styles.xml" /> <copy from="res/menu/activity_login.xml" - to="res/menu/${menuName}.xml" /> + to="${resOut}/menu/${menuName}.xml" /> <instantiate from="res/layout/activity_login.xml.ftl" - to="res/layout/${layoutName}.xml" /> + to="${resOut}/layout/${layoutName}.xml" /> <instantiate from="res/values/strings.xml.ftl" - to="res/values/strings_${simpleName}.xml" /> + to="${resOut}/values/strings_${simpleName}.xml" /> <instantiate from="src/app_package/LoginActivity.java.ftl" to="${srcOut}/${activityClass}.java" /> - <open file="res/layout/${layoutName}.xml" /> + <open file="${resOut}/layout/${layoutName}.xml" /> </recipe> diff --git a/templates/activities/MasterDetailFlow/globals.xml.ftl b/templates/activities/MasterDetailFlow/globals.xml.ftl index 952e278..415d60e 100644 --- a/templates/activities/MasterDetailFlow/globals.xml.ftl +++ b/templates/activities/MasterDetailFlow/globals.xml.ftl @@ -1,6 +1,9 @@ <?xml version="1.0"?> <globals> + <global id="projectOut" value="." /> + <global id="manifestOut" value="." /> <global id="srcOut" value="src/${slashedPackageName(packageName)}" /> + <global id="resOut" value="res" /> <global id="CollectionName" value="${extractLetters(objectKind)}List" /> <global id="collection_name" value="${extractLetters(objectKind?lower_case)}_list" /> <global id="DetailName" value="${extractLetters(objectKind)}Detail" /> diff --git a/templates/activities/MasterDetailFlow/recipe.xml.ftl b/templates/activities/MasterDetailFlow/recipe.xml.ftl index 8b09c84..c06e517 100644 --- a/templates/activities/MasterDetailFlow/recipe.xml.ftl +++ b/templates/activities/MasterDetailFlow/recipe.xml.ftl @@ -1,19 +1,23 @@ <?xml version="1.0"?> <recipe> - <merge from="AndroidManifest.xml.ftl" /> + <merge from="AndroidManifest.xml.ftl" + to="${manifestOut}/AndroidManifest.xml" /> - <merge from="res/values-large/refs.xml.ftl" /> - <merge from="res/values-sw600dp/refs.xml.ftl" /> - <merge from="res/values/strings.xml.ftl" /> + <merge from="res/values-large/refs.xml.ftl" + to="${resOut}/values-large/refs.xml" /> + <merge from="res/values-sw600dp/refs.xml.ftl" + to="${resOut}/values-sw600dp/refs.xml" /> + <merge from="res/values/strings.xml.ftl" + to="${resOut}/values/strings.xml" /> <instantiate from="res/layout/activity_content_detail.xml.ftl" - to="res/layout/activity_${detail_name}.xml" /> + to="${resOut}/layout/activity_${detail_name}.xml" /> <instantiate from="res/layout/activity_content_list.xml.ftl" - to="res/layout/activity_${collection_name}.xml" /> + to="${resOut}/layout/activity_${collection_name}.xml" /> <instantiate from="res/layout/activity_content_twopane.xml.ftl" - to="res/layout/activity_${extractLetters(objectKind?lower_case)}_twopane.xml" /> + to="${resOut}/layout/activity_${extractLetters(objectKind?lower_case)}_twopane.xml" /> <instantiate from="res/layout/fragment_content_detail.xml.ftl" - to="res/layout/fragment_${detail_name}.xml" /> + to="${resOut}/layout/fragment_${detail_name}.xml" /> <instantiate from="src/app_package/ContentDetailActivity.java.ftl" to="${srcOut}/${DetailName}Activity.java" /> diff --git a/templates/activities/SettingsActivity/globals.xml.ftl b/templates/activities/SettingsActivity/globals.xml.ftl index a416d3a..6d73e17 100644 --- a/templates/activities/SettingsActivity/globals.xml.ftl +++ b/templates/activities/SettingsActivity/globals.xml.ftl @@ -1,5 +1,8 @@ <?xml version="1.0"?> <globals> + <global id="projectOut" value="." /> + <global id="manifestOut" value="." /> <global id="srcOut" value="src/${slashedPackageName(packageName)}" /> + <global id="resOut" value="res" /> <global id="simpleName" value="${activityToLayout(activityClass)}" /> </globals> diff --git a/templates/activities/SettingsActivity/recipe.xml.ftl b/templates/activities/SettingsActivity/recipe.xml.ftl index e315963..6f68147 100644 --- a/templates/activities/SettingsActivity/recipe.xml.ftl +++ b/templates/activities/SettingsActivity/recipe.xml.ftl @@ -1,14 +1,19 @@ <?xml version="1.0"?> <recipe> - <merge from="AndroidManifest.xml.ftl" /> + <merge from="AndroidManifest.xml.ftl" + to="${manifestOut}/AndroidManifest.xml" /> - <copy from="res/xml/pref_data_sync.xml" /> - <copy from="res/xml/pref_general.xml" /> - <merge from="res/xml/pref_headers.xml.ftl" /> - <copy from="res/xml/pref_notification.xml" /> + <copy from="res/xml/pref_data_sync.xml" + to="${resOut}/xml/pref_data_sync.xml" /> + <copy from="res/xml/pref_general.xml" + to="${resOut}/xml/pref_general.xml" /> + <merge from="res/xml/pref_headers.xml.ftl" + to="${resOut}/xml/pref_headers.xml" /> + <copy from="res/xml/pref_notification.xml" + to="${resOut}/xml/pref_notification.xml" /> <instantiate from="res/values/strings.xml.ftl" - to="res/values/strings_${simpleName}.xml" /> + to="${resOut}/values/strings_${simpleName}.xml" /> <instantiate from="src/app_package/SettingsActivity.java.ftl" to="${srcOut}/${activityClass}.java" /> diff --git a/templates/gradle/wrapper/gradle/wrapper/gradle-wrapper.jar b/templates/gradle/wrapper/gradle/wrapper/gradle-wrapper.jar Binary files differnew file mode 100644 index 0000000..8c0fb64 --- /dev/null +++ b/templates/gradle/wrapper/gradle/wrapper/gradle-wrapper.jar diff --git a/templates/gradle/wrapper/gradle/wrapper/gradle-wrapper.properties b/templates/gradle/wrapper/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..d67ba29 --- /dev/null +++ b/templates/gradle/wrapper/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Wed Apr 10 15:27:10 PDT 2013 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=http\://services.gradle.org/distributions-snapshots/gradle-1.6-20130404052254+0000-bin.zip diff --git a/templates/gradle/wrapper/gradlew b/templates/gradle/wrapper/gradlew new file mode 100755 index 0000000..91a7e26 --- /dev/null +++ b/templates/gradle/wrapper/gradlew @@ -0,0 +1,164 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# For Cygwin, ensure paths are in UNIX format before anything is touched. +if $cygwin ; then + [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` +fi + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/templates/gradle/wrapper/gradlew.bat b/templates/gradle/wrapper/gradlew.bat new file mode 100644 index 0000000..aec9973 --- /dev/null +++ b/templates/gradle/wrapper/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windowz variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+if "%@eval[2+2]" == "4" goto 4NT_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+goto execute
+
+:4NT_args
+@rem Get arguments from the 4NT Shell from JP Software
+set CMD_LINE_ARGS=%$
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/templates/projects/NewAndroidApplication/globals.xml.ftl b/templates/projects/NewAndroidApplication/globals.xml.ftl index bfc27eb..2565dcd 100644 --- a/templates/projects/NewAndroidApplication/globals.xml.ftl +++ b/templates/projects/NewAndroidApplication/globals.xml.ftl @@ -1,4 +1,10 @@ <?xml version="1.0"?> <globals> + <global id="isGradle" value="false" /> + <global id="topOut" value="." /> + <global id="projectOut" value="." /> + <global id="manifestOut" value="." /> <global id="srcOut" value="src/${slashedPackageName(packageName)}" /> + <global id="resOut" value="res" /> + <global id="mavenUrl" value="" /> </globals> diff --git a/templates/projects/NewAndroidApplication/recipe.xml.ftl b/templates/projects/NewAndroidApplication/recipe.xml.ftl index bc8f02e..79210a9 100644 --- a/templates/projects/NewAndroidApplication/recipe.xml.ftl +++ b/templates/projects/NewAndroidApplication/recipe.xml.ftl @@ -1,21 +1,33 @@ <?xml version="1.0"?> <recipe> - <instantiate from="AndroidManifest.xml.ftl" /> +<#if isGradle == "true"> + <merge from="settings.gradle.ftl" + to="${topOut}/settings.gradle" /> + <instantiate from="build.gradle.ftl" + to="${projectOut}/build.gradle" /> +</#if> + <instantiate from="AndroidManifest.xml.ftl" + to="${manifestOut}/AndroidManifest.xml" /> <#if copyIcons> - <copy from="res/drawable-hdpi" /> - <copy from="res/drawable-mdpi" /> - <copy from="res/drawable-xhdpi" /> + <copy from="res/drawable-hdpi" + to="${resOut}/drawable-hdpi" /> + <copy from="res/drawable-mdpi" + to="${resOut}/drawable-mdpi" /> + <copy from="res/drawable-xhdpi" + to="${resOut}/drawable-xhdpi" /> </#if> - <instantiate from="res/values/styles.xml.ftl" /> + <instantiate from="res/values/styles.xml.ftl" + to="${resOut}/values/styles.xml" /> <#if buildApi gte 11 && baseTheme != "none"> <instantiate from="res/values-v11/styles_hc.xml.ftl" - to="res/values-v11/styles.xml" /> + to="${resOut}/values-v11/styles.xml" /> </#if> <#if buildApi gte 14 && baseTheme?contains("darkactionbar")> <copy from="res/values-v14/styles_ics.xml" - to="res/values-v14/styles.xml" /> + to="${resOut}/values-v14/styles.xml" /> </#if> - <instantiate from="res/values/strings.xml.ftl" /> + <instantiate from="res/values/strings.xml.ftl" + to="${resOut}/values/strings.xml" /> </recipe> diff --git a/templates/projects/NewAndroidApplication/root/build.gradle.ftl b/templates/projects/NewAndroidApplication/root/build.gradle.ftl new file mode 100644 index 0000000..0232c7e --- /dev/null +++ b/templates/projects/NewAndroidApplication/root/build.gradle.ftl @@ -0,0 +1,24 @@ +buildscript { + repositories { + maven { url '${mavenUrl}/prebuilts-repo' } + maven { url '${mavenUrl}/tools-repo' } + } + dependencies { + classpath 'com.android.tools.build:gradle:0.4-SNAPSHOT' + } +} +apply plugin: 'android' + +dependencies { + compile files('libs/android-support-v4.jar') +} + +android { + compileSdkVersion ${buildApi} + buildToolsVersion "${buildApi}" + + defaultConfig { + minSdkVersion ${minApi} + targetSdkVersion ${targetApi} + } +} diff --git a/templates/projects/NewAndroidApplication/root/settings.gradle.ftl b/templates/projects/NewAndroidApplication/root/settings.gradle.ftl new file mode 100644 index 0000000..b12004b --- /dev/null +++ b/templates/projects/NewAndroidApplication/root/settings.gradle.ftl @@ -0,0 +1 @@ +include ':${projectName}' diff --git a/templates/projects/NewAndroidLibrary/globals.xml.ftl b/templates/projects/NewAndroidLibrary/globals.xml.ftl new file mode 100644 index 0000000..2565dcd --- /dev/null +++ b/templates/projects/NewAndroidLibrary/globals.xml.ftl @@ -0,0 +1,10 @@ +<?xml version="1.0"?> +<globals> + <global id="isGradle" value="false" /> + <global id="topOut" value="." /> + <global id="projectOut" value="." /> + <global id="manifestOut" value="." /> + <global id="srcOut" value="src/${slashedPackageName(packageName)}" /> + <global id="resOut" value="res" /> + <global id="mavenUrl" value="" /> +</globals> diff --git a/templates/projects/NewAndroidLibrary/recipe.xml.ftl b/templates/projects/NewAndroidLibrary/recipe.xml.ftl new file mode 100644 index 0000000..9999701 --- /dev/null +++ b/templates/projects/NewAndroidLibrary/recipe.xml.ftl @@ -0,0 +1,33 @@ +<?xml version="1.0"?> +<recipe> +<#if isGradle == "true"> + <merge from="settings.gradle.ftl" + to="${topOut}/settings.gradle" /> + <instantiate from="build.gradle.ftl" + to="${projectOut}/build.gradle" /> +</#if> + <instantiate from="MODULE_NAME/src/main/AndroidManifest.xml.ftl" + to="${manifestOut}/AndroidManifest.xml" /> + +<#if copyIcons> + <copy from="res/drawable-hdpi" + to="${resOut}/drawable-hdpi" /> + <copy from="res/drawable-mdpi" + to="${resOut}/drawable-mdpi" /> + <copy from="res/drawable-xhdpi" + to="${resOut}/drawable-xhdpi" /> +</#if> + <instantiate from="res/values/styles.xml.ftl" + to="${resOut}/values/styles.xml" /> +<#if buildApi gte 11 && baseTheme != "none"> + <instantiate from="res/values-v11/styles_hc.xml.ftl" + to="${resOut}/values-v11/styles.xml" /> +</#if> +<#if buildApi gte 14 && baseTheme?contains("darkactionbar")> + <copy from="res/values-v14/styles_ics.xml" + to="${resOut}/values-v14/styles.xml" /> +</#if> + + <instantiate from="res/values/strings.xml.ftl" + to="${resOut}/values/strings.xml" /> +</recipe> diff --git a/templates/projects/NewAndroidLibrary/root/AndroidManifest.xml.ftl b/templates/projects/NewAndroidLibrary/root/AndroidManifest.xml.ftl new file mode 100644 index 0000000..390a9da --- /dev/null +++ b/templates/projects/NewAndroidLibrary/root/AndroidManifest.xml.ftl @@ -0,0 +1,15 @@ +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="${packageName}" + android:versionCode="1" + android:versionName="1.0"> + + <uses-sdk android:minSdkVersion="${minApi}" <#if buildApi gte 4>android:targetSdkVersion="${targetApi}" </#if>/> + + <application <#if minApiLevel gte 4 && buildApi gte 4>android:allowBackup="true"</#if> + android:label="@string/app_name" + android:icon="@drawable/ic_launcher"<#if baseTheme != "none"> + android:theme="@style/AppTheme"</#if>> + + </application> + +</manifest> diff --git a/templates/projects/NewAndroidLibrary/root/build.gradle.ftl b/templates/projects/NewAndroidLibrary/root/build.gradle.ftl new file mode 100644 index 0000000..12733c7 --- /dev/null +++ b/templates/projects/NewAndroidLibrary/root/build.gradle.ftl @@ -0,0 +1,24 @@ +buildscript { + repositories { + maven { url '${mavenUrl}/prebuilts-repo' } + maven { url '${mavenUrl}/tools-repo' } + } + dependencies { + classpath 'com.android.tools.build:gradle:0.4-SNAPSHOT' + } +} +apply plugin: 'android-library' + +dependencies { + compile files('libs/android-support-v4.jar') +} + +android { + compileSdkVersion ${buildApi} + buildToolsVersion "${buildApi}" + + defaultConfig { + minSdkVersion ${minApi} + targetSdkVersion ${targetApi} + } +} diff --git a/templates/projects/NewAndroidLibrary/root/res/drawable-hdpi/ic_launcher.png b/templates/projects/NewAndroidLibrary/root/res/drawable-hdpi/ic_launcher.png Binary files differnew file mode 100755 index 0000000..96a442e --- /dev/null +++ b/templates/projects/NewAndroidLibrary/root/res/drawable-hdpi/ic_launcher.png diff --git a/templates/projects/NewAndroidLibrary/root/res/drawable-mdpi/ic_launcher.png b/templates/projects/NewAndroidLibrary/root/res/drawable-mdpi/ic_launcher.png Binary files differnew file mode 100755 index 0000000..359047d --- /dev/null +++ b/templates/projects/NewAndroidLibrary/root/res/drawable-mdpi/ic_launcher.png diff --git a/templates/projects/NewAndroidLibrary/root/res/drawable-xhdpi/ic_launcher.png b/templates/projects/NewAndroidLibrary/root/res/drawable-xhdpi/ic_launcher.png Binary files differnew file mode 100755 index 0000000..71c6d76 --- /dev/null +++ b/templates/projects/NewAndroidLibrary/root/res/drawable-xhdpi/ic_launcher.png diff --git a/templates/projects/NewAndroidLibrary/root/res/values-v11/styles_hc.xml.ftl b/templates/projects/NewAndroidLibrary/root/res/values-v11/styles_hc.xml.ftl new file mode 100644 index 0000000..f8993c3 --- /dev/null +++ b/templates/projects/NewAndroidLibrary/root/res/values-v11/styles_hc.xml.ftl @@ -0,0 +1,11 @@ +<resources> + + <!-- + Base application theme for API 11+. This theme completely replaces + AppBaseTheme from res/values/styles.xml on API 11+ devices. + --> + <style name="AppBaseTheme" parent="android:Theme.Holo<#if baseTheme?contains("light")>.Light</#if>"> + <!-- API 11 theme customizations can go here. --> + </style> + +</resources> diff --git a/templates/projects/NewAndroidLibrary/root/res/values-v14/styles_ics.xml b/templates/projects/NewAndroidLibrary/root/res/values-v14/styles_ics.xml new file mode 100644 index 0000000..a91fd03 --- /dev/null +++ b/templates/projects/NewAndroidLibrary/root/res/values-v14/styles_ics.xml @@ -0,0 +1,12 @@ +<resources> + + <!-- + Base application theme for API 14+. This theme completely replaces + AppBaseTheme from BOTH res/values/styles.xml and + res/values-v11/styles.xml on API 14+ devices. + --> + <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar"> + <!-- API 14 theme customizations can go here. --> + </style> + +</resources> diff --git a/templates/projects/NewAndroidLibrary/root/res/values/strings.xml.ftl b/templates/projects/NewAndroidLibrary/root/res/values/strings.xml.ftl new file mode 100644 index 0000000..ee03444 --- /dev/null +++ b/templates/projects/NewAndroidLibrary/root/res/values/strings.xml.ftl @@ -0,0 +1,3 @@ +<resources> + <string name="app_name">${escapeXmlString(appTitle)}</string> +</resources> diff --git a/templates/projects/NewAndroidLibrary/root/res/values/styles.xml.ftl b/templates/projects/NewAndroidLibrary/root/res/values/styles.xml.ftl new file mode 100644 index 0000000..30fe5b5 --- /dev/null +++ b/templates/projects/NewAndroidLibrary/root/res/values/styles.xml.ftl @@ -0,0 +1,20 @@ +<resources> + + <!-- + Base application theme, dependent on API level. This theme is replaced + by AppBaseTheme from res/values-vXX/styles.xml on newer devices. + --> + <style name="AppBaseTheme" parent="android:Theme<#if baseTheme?contains("light")>.Light</#if>"> + <!-- + Theme customizations available in newer API levels can go in + res/values-vXX/styles.xml, while customizations related to + backward-compatibility can go here. + --> + </style> + + <!-- Application theme. --> + <style name="AppTheme" parent="AppBaseTheme"> + <!-- All customizations that are NOT specific to a particular API-level can go here. --> + </style> + +</resources> diff --git a/templates/projects/NewAndroidLibrary/root/settings.gradle.ftl b/templates/projects/NewAndroidLibrary/root/settings.gradle.ftl new file mode 100644 index 0000000..b12004b --- /dev/null +++ b/templates/projects/NewAndroidLibrary/root/settings.gradle.ftl @@ -0,0 +1 @@ +include ':${projectName}' diff --git a/templates/projects/NewAndroidLibrary/template.xml b/templates/projects/NewAndroidLibrary/template.xml new file mode 100644 index 0000000..463643d --- /dev/null +++ b/templates/projects/NewAndroidLibrary/template.xml @@ -0,0 +1,82 @@ +<?xml version="1.0"?> +<template + format="1" + revision="1" + name="Android Library" + description="Creates a new Android library."> + <dependency name="android-support-v4" revision="8" /> + + <thumbs> + <thumb>template_new_project.png</thumb> + </thumbs> + + <category value="Applications" /> + + <parameter + id="packageName" + name="Package name" + type="string" + constraints="package" + default="com.mycompany.myapp" /> + + <parameter + id="appTitle" + name="Library title" + type="string" + constraints="nonempty" + default="My Library"/> + + <parameter + id="baseTheme" + name="Base Theme" + type="enum" + default="holo_light_darkactionbar" + help="The base user interface theme for the library"> + <option id="none">None</option> + <option id="holo_dark" minBuildApi="11">Holo Dark</option> + <option id="holo_light" minBuildApi="11">Holo Light</option> + <option id="holo_light_darkactionbar" minBuildApi="14" default="true">Holo Light with Dark Action Bar</option> + </parameter> + + <parameter + id="minApi" + name="Minimum API level" + type="string" + constraints="apilevel" + default="7" /> + + <!-- + Usually the same as minApi, but when minApi is a code name this will be the corresponding + API level + --> + <parameter + id="minApiLevel" + name="Minimum API level" + type="string" + constraints="apilevel" + default="7" /> + + <parameter + id="targetApi" + name="Target API level" + type="string" + constraints="apilevel" + default="16" /> + + <parameter + id="buildApi" + name="Build API level" + type="string" + constraints="apilevel" + default="16" /> + + <parameter + id="copyIcons" + name="Include launcher icons" + type="boolean" + default="true" /> + + <globals file="globals.xml.ftl" /> + <execute file="recipe.xml.ftl" /> + +</template> diff --git a/templates/projects/NewAndroidLibrary/template_new_project.png b/templates/projects/NewAndroidLibrary/template_new_project.png Binary files differnew file mode 100644 index 0000000..92e8556 --- /dev/null +++ b/templates/projects/NewAndroidLibrary/template_new_project.png diff --git a/templates/projects/NewJavaLibrary/globals.xml.ftl b/templates/projects/NewJavaLibrary/globals.xml.ftl new file mode 100644 index 0000000..5b9b620 --- /dev/null +++ b/templates/projects/NewJavaLibrary/globals.xml.ftl @@ -0,0 +1,7 @@ +<?xml version="1.0"?> +<globals> + <global id="isGradle" value="false" /> + <global id="topOut" value="." /> + <global id="projectOut" value="." /> + <global id="srcOut" value="src/${slashedPackageName(packageName)}" /> +</globals> diff --git a/templates/projects/NewJavaLibrary/recipe.xml.ftl b/templates/projects/NewJavaLibrary/recipe.xml.ftl new file mode 100644 index 0000000..e2d943a --- /dev/null +++ b/templates/projects/NewJavaLibrary/recipe.xml.ftl @@ -0,0 +1,11 @@ +<?xml version="1.0"?> +<recipe> +<#if isGradle == "true"> + <merge from="settings.gradle.ftl" + to="${topOut}/settings.gradle" /> + <instantiate from="build.gradle.ftl" + to="${projectOut}/build.gradle" /> +</#if> + <instantiate from="/src/library_package/Placeholder.java" + to="${srcOut}/Placeholder.java" /> +</recipe> diff --git a/templates/projects/NewJavaLibrary/root/build.gradle.ftl b/templates/projects/NewJavaLibrary/root/build.gradle.ftl new file mode 100644 index 0000000..bbfeb03 --- /dev/null +++ b/templates/projects/NewJavaLibrary/root/build.gradle.ftl @@ -0,0 +1 @@ +apply plugin: 'java' diff --git a/templates/projects/NewJavaLibrary/root/settings.gradle.ftl b/templates/projects/NewJavaLibrary/root/settings.gradle.ftl new file mode 100644 index 0000000..b12004b --- /dev/null +++ b/templates/projects/NewJavaLibrary/root/settings.gradle.ftl @@ -0,0 +1 @@ +include ':${projectName}' diff --git a/templates/projects/NewJavaLibrary/root/src/library_package/Placeholder.java b/templates/projects/NewJavaLibrary/root/src/library_package/Placeholder.java new file mode 100644 index 0000000..016aacb --- /dev/null +++ b/templates/projects/NewJavaLibrary/root/src/library_package/Placeholder.java @@ -0,0 +1,4 @@ +package com.example; + +public class Placeholder { +} diff --git a/templates/projects/NewJavaLibrary/template.xml b/templates/projects/NewJavaLibrary/template.xml new file mode 100644 index 0000000..4a3ed90 --- /dev/null +++ b/templates/projects/NewJavaLibrary/template.xml @@ -0,0 +1,24 @@ +<?xml version="1.0"?> +<template + format="1" + revision="1" + name="Java Library" + description="Creates a new Java library."> + + <thumbs> + <thumb>template_new_project.png</thumb> + </thumbs> + + <category value="Applications" /> + + <parameter + id="projectName" + name="Library name" + type="string" + constraints="nonempty" + default="MyLibrary"/> + + <globals file="globals.xml.ftl" /> + <execute file="recipe.xml.ftl" /> + +</template> diff --git a/templates/projects/NewJavaLibrary/template_new_project.png b/templates/projects/NewJavaLibrary/template_new_project.png Binary files differnew file mode 100644 index 0000000..92e8556 --- /dev/null +++ b/templates/projects/NewJavaLibrary/template_new_project.png |