1eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam#!/usr/bin/env bash
2eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam
3eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam##############################################################################
4eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam##
5eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam##  Gradle start up script for UN*X
6eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam##
7eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam##############################################################################
8eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam
9eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
10eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice LamDEFAULT_JVM_OPTS=""
11eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam
12eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice LamAPP_NAME="Gradle"
13eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice LamAPP_BASE_NAME=`basename "$0"`
14eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam
15eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam# Use the maximum available, or set MAX_FD != -1 to use that value.
16eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice LamMAX_FD="maximum"
17eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam
18eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamwarn ( ) {
19eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    echo "$*"
20eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam}
21eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam
22eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamdie ( ) {
23eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    echo
24eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    echo "$*"
25eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    echo
26eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    exit 1
27eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam}
28eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam
29eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam# OS specific support (must be 'true' or 'false').
30eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamcygwin=false
31eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lammsys=false
32eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamdarwin=false
33eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamcase "`uname`" in
34eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam  CYGWIN* )
35eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    cygwin=true
36eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    ;;
37eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam  Darwin* )
38eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    darwin=true
39eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    ;;
40eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam  MINGW* )
41eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    msys=true
42eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    ;;
43eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamesac
44eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam
45eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam# For Cygwin, ensure paths are in UNIX format before anything is touched.
46eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamif $cygwin ; then
47eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
48eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamfi
49eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam
50eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam# Attempt to set APP_HOME
51eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam# Resolve links: $0 may be a link
52eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice LamPRG="$0"
53eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam# Need this for relative symlinks.
54eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamwhile [ -h "$PRG" ] ; do
55eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    ls=`ls -ld "$PRG"`
56eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    link=`expr "$ls" : '.*-> \(.*\)$'`
57eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    if expr "$link" : '/.*' > /dev/null; then
58eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        PRG="$link"
59eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    else
60eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        PRG=`dirname "$PRG"`"/$link"
61eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    fi
62eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamdone
63eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice LamSAVED="`pwd`"
64eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamcd "`dirname \"$PRG\"`/" >&-
65eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice LamAPP_HOME="`pwd -P`"
66eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamcd "$SAVED" >&-
67eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam
68eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamif [ $(basename `pwd`) == "gradle" ]; then
69eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    echo "This cannot be run here. It should be copied to the root of the platform."
70eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    exit
71eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamelse
72eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    CLASSPATH=./gradle/wrapper/gradle-wrapper.jar
73eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamfi
74eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam
75eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam# Determine the Java command to use to start the JVM.
76eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamif [ -n "$JAVA_HOME" ] ; then
77eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
78eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        # IBM's JDK on AIX uses strange locations for the executables
79eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        JAVACMD="$JAVA_HOME/jre/sh/java"
80eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    else
81eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        JAVACMD="$JAVA_HOME/bin/java"
82eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    fi
83eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    if [ ! -x "$JAVACMD" ] ; then
84eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
85eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam
86eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice LamPlease set the JAVA_HOME variable in your environment to match the
87eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamlocation of your Java installation."
88eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    fi
89eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamelse
90eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    JAVACMD="java"
91eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
92eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam
93eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice LamPlease set the JAVA_HOME variable in your environment to match the
94eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamlocation of your Java installation."
95eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamfi
96eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam
97eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam# Increase the maximum file descriptors if we can.
98eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamif [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
99eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    MAX_FD_LIMIT=`ulimit -H -n`
100eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    if [ $? -eq 0 ] ; then
101eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
102eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam            MAX_FD="$MAX_FD_LIMIT"
103eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        fi
104eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        ulimit -n $MAX_FD
105eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        if [ $? -ne 0 ] ; then
106eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam            warn "Could not set maximum file descriptor limit: $MAX_FD"
107eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        fi
108eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    else
109eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
110eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    fi
111eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamfi
112eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam
113eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam# For Darwin, add options to specify how the application appears in the dock
114eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamif $darwin; then
115eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
116eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamfi
117eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam
118eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam# For Cygwin, switch paths to Windows format before running java
119eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamif $cygwin ; then
120eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
121eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
122eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam
123eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    # We build the pattern for arguments to be converted via cygpath
124eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
125eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    SEP=""
126eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    for dir in $ROOTDIRSRAW ; do
127eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        ROOTDIRS="$ROOTDIRS$SEP$dir"
128eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        SEP="|"
129eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    done
130eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    OURCYGPATTERN="(^($ROOTDIRS))"
131eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    # Add a user-defined pattern to the cygpath arguments
132eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
133eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
134eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    fi
135eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    # Now convert the arguments - kludge to limit ourselves to /bin/sh
136eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    i=0
137eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    for arg in "$@" ; do
138eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
139eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
140eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam
141eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
142eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
143eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        else
144eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam            eval `echo args$i`="\"$arg\""
145eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        fi
146eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        i=$((i+1))
147eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    done
148eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    case $i in
149eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        (0) set -- ;;
150eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        (1) set -- "$args0" ;;
151eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        (2) set -- "$args0" "$args1" ;;
152eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        (3) set -- "$args0" "$args1" "$args2" ;;
153eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
154eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
155eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
156eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
157eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
158eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
159eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    esac
160eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamfi
161eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam
162eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
163eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamfunction splitJvmOpts() {
164eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    JVM_OPTS=("$@")
165eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam}
166eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lameval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
167eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice LamJVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
168eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam
169eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam# For reproducible builds, always use the SDKs stored in source control
170eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamif $darwin; then
171eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    ANDROID_HOME="$APP_HOME/prebuilts/fullsdk/darwin"
172eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamelse
173eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    ANDROID_HOME="$APP_HOME/prebuilts/fullsdk/linux"
174eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamfi
175eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamexport ANDROID_HOME
176eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam
177eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam# Also, blow away lint's API cache, since it can easily become out of date
178eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam# if we're building against pre-release SDKs
179eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam(cd "$HOME/.android/cache" && rm -f api-versions*) 2> /dev/null
180eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam
181eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam# Change the project's .gradle to the android out dir.
182eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice LamANDROID_OUT_ROOT="$APP_HOME/out"
183eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamif [[ -n "$OUT_DIR" ]]; then
184eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    ANDROID_OUT_ROOT="$OUT_DIR"
185eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamfi
186eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam
187eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice LamANDROID_CACHE_DIR="$ANDROID_OUT_ROOT/gradle/.gradle"
188eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam
189eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam# Change the local user directories to be under the android out dir
190eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamexport GRADLE_USER_HOME="$ANDROID_OUT_ROOT/gradle/.gradle"
191eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamexport M2_HOME="$ANDROID_OUT_ROOT/gradle/.m2"
192eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam
193eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam# NewRatio is the ratio of the total heap size to new generation size the JVM tries to maintain.
194eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam# Higher values mean smaller new generations.
195eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam# The default is 2. Setting this to 3.
196eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam# Higher values should "stabalize" heap usage somewhat and helps keep the total heap
197eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam# size from growing too quickly (the JVM is more willing to grow the new generation than the old).
198eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam# Also, the old generation is more "friendly" to being swapped out to disk than the new generation.
199eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam# This should help out on lower memory machines.
200eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam# Profiling has shown that the extra GCs done because of this are trivial in added time.
201eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lamexec "$JAVACMD" "${JVM_OPTS[@]}" \
202eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    -classpath "$CLASSPATH" \
203eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    org.gradle.wrapper.GradleWrapperMain \
204eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    --project-cache-dir=$ANDROID_CACHE_DIR \
205eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    --configure-on-demand \
206eea7ecd835f2ea16a80709d740c913f6a0d8afa5Maurice Lam    "$@"
207