Skip to content

Instantly share code, notes, and snippets.

@pgreze
Created April 27, 2020 07:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pgreze/a76970274c4fe369f08b77317fec720c to your computer and use it in GitHub Desktop.
Save pgreze/a76970274c4fe369f08b77317fec720c to your computer and use it in GitHub Desktop.
Force ANDROID SDK in gradlew
diff --git a/gradle/android-studio-paths.sh b/gradle/android-studio-paths.sh
new file mode 100644
index 0000000..ae3d1e0
--- /dev/null
+++ b/gradle/android-studio-paths.sh
@@ -0,0 +1,51 @@
+#
+# In order to avoid "Daemon could not be reused" when using command line and Android Studio,
+# this is forcing the JAVA_HOME by looking at common places for Android Studio installations.
+#
+# This can be overriden by providing android_studio.dir in your local.properties.
+#
+# Inspired by https://adambennett.dev/2020/03/scripting-file-templates-for-android-studio/
+#
+
+function resolveUserAndroidLocation {
+ local PREFIX="android_studio.dir="
+ local ANDROID_STUDIO_DIR=$(grep $PREFIX local.properties)
+ local PREFIX_LENGTH=${#PREFIX}
+ [ ! -z "$ANDROID_STUDIO_DIR" ] && echo "${ANDROID_STUDIO_DIR:$PREFIX_LENGTH}"
+}
+
+function detectAndroidStudios {
+ # Jetbrains Toolbox
+ find ~/Library/Application\ Support/JetBrains/Toolbox/apps/AndroidStudio \( -name "*Android Studio*.app" \) -maxdepth 3 -type d
+ # Manual installations
+ find /Applications \( -name "*Android Studio*.app" \) -maxdepth 1 -type d
+}
+
+function setJavaHomeFromAndroidStudio {
+ if [ ! -z $CI ]; then
+ return
+ fi
+
+ ANDROID_STUDIO_DIRS=$(detectAndroidStudios)
+ ANDROID_STUDIO_DIR=$(resolveUserAndroidLocation)
+ if [ -z "$ANDROID_STUDIO_DIR" ]; then
+ if [ ${#ANDROID_STUDIO_DIRS[@]} -eq 1 ]; then
+ # Fallback to the only Android Studio location
+ ANDROID_STUDIO_DIR="${ANDROID_STUDIO_DIRS[0]}"
+ else
+ echo "Missing android_studio.dir= in local.properties" 1>&2
+ printf "Detected installations:\n$ANDROID_STUDIO_DIRS\n" 1>&2
+ return 1
+ fi
+ fi
+
+ ANDROID_STUDIO_JAVA_HOME="$ANDROID_STUDIO_DIR/Contents/jre/jdk/Contents/Home"
+
+ if [ ! -d "$ANDROID_STUDIO_JAVA_HOME" ]; then
+ echo "Invalid Android Studio path $ANDROID_STUDIO_JAVA_HOME" 1>&2
+ return 1
+ else
+ # Export the value as env variable for Gradle
+ export JAVA_HOME="$ANDROID_STUDIO_JAVA_HOME"
+ fi
+}
diff --git a/gradlew b/gradlew
index 2fe81a7..60dae73 100755
--- a/gradlew
+++ b/gradlew
@@ -16,6 +16,10 @@
# limitations under the License.
#
+#. gradle/android-studio-paths.sh
+#setJavaHomeFromAndroidStudio || exit 1
+echo "$(type java && java -version) $@" >> /Users/pgreze/git/mercari-groundup-android/logs.txt
+
##############################################################################
##
## Gradle start up script for UN*X
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment