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