diff --git a/tools/Android.mk b/tools/Android.mk
index 689be4e..9bbe6ec 100644
--- a/tools/Android.mk
+++ b/tools/Android.mk
@@ -16,6 +16,84 @@
 
 LOCAL_PATH:= $(call my-dir)
 
+##################################
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := jack
+LOCAL_SRC_FILES := jack
+LOCAL_MODULE_CLASS := EXECUTABLES
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_SUFFIX := $(HOST_EXECUTABLE_SUFFIX)
+LOCAL_BUILT_MODULE_STEM := jack$(HOST_EXECUTABLE_SUFFIX)
+LOCAL_IS_HOST_MODULE := true
+
+include $(BUILD_PREBUILT)
+jack_script := $(LOCAL_INSTALLED_MODULE)
+
+##################################
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := jack-admin
+LOCAL_SRC_FILES := jack-admin
+LOCAL_MODULE_CLASS := EXECUTABLES
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_SUFFIX := $(HOST_EXECUTABLE_SUFFIX)
+LOCAL_BUILT_MODULE_STEM := jack-admin$(HOST_EXECUTABLE_SUFFIX)
+LOCAL_IS_HOST_MODULE := true
+
+include $(BUILD_PREBUILT)
+jack_admin_script := $(LOCAL_INSTALLED_MODULE)
+
+##################################
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := jack
+LOCAL_SRC_FILES := jack.jar
+LOCAL_MODULE_CLASS := JAVA_LIBRARIES
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_SUFFIX := $(COMMON_JAVA_PACKAGE_SUFFIX)
+LOCAL_BUILT_MODULE_STEM := jack$(COMMON_JAVA_PACKAGE_SUFFIX)
+LOCAL_IS_HOST_MODULE := true
+LOCAL_ADDITIONAL_DEPENDENCIES := $(JACK_LAUNCHER_JAR)
+LOCAL_POST_INSTALL_CMD := $(hide) $(JACK_SERVER_LOG_COMMAND) JACK_VM_COMMAND="$(JACK_VM) $(JAVA_TMPDIR_ARG) $(DEFAULT_JACK_VM_ARGS) -jar $(JACK_LAUNCHER_JAR) " JACK_JAR="$(JACK_JAR)" $(jack_admin_script) start-server
+
+include $(BUILD_PREBUILT)
+$(LOCAL_INSTALLED_MODULE): $(jack_script)
+# kill if stop failed, but ignore kill errors since jack-admin is reporting "no server running" as
+# an error.
+kill_server := $(intermediates)/kill_server.stamp
+$(kill_server) : $(LOCAL_BUILT_MODULE) $(jack_admin_script)
+	$(hide) $(jack_admin_script) stop-server || $(jack_admin_script) kill-server || exit 0
+	touch $@
+
+$(LOCAL_INSTALLED_MODULE): $(kill_server)
+
+##################################
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := jack-launcher
+LOCAL_SRC_FILES := jack-launcher.jar
+LOCAL_MODULE_CLASS := JAVA_LIBRARIES
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_SUFFIX := $(COMMON_JAVA_PACKAGE_SUFFIX)
+LOCAL_BUILT_MODULE_STEM := jack-launcher$(COMMON_JAVA_PACKAGE_SUFFIX)
+LOCAL_IS_HOST_MODULE := true
+
+include $(BUILD_PREBUILT)
+
+##################################
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := jill
+LOCAL_SRC_FILES := jill.jar
+LOCAL_MODULE_CLASS := JAVA_LIBRARIES
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_SUFFIX := $(COMMON_JAVA_PACKAGE_SUFFIX)
+LOCAL_BUILT_MODULE_STEM := jill$(COMMON_JAVA_PACKAGE_SUFFIX)
+LOCAL_IS_HOST_MODULE := true
+
+include $(BUILD_PREBUILT)
+
 ifneq (,$(TARGET_BUILD_APPS)$(filter true,$(TARGET_BUILD_PDK)))
 
 ##################################
diff --git a/tools/jack b/tools/jack
new file mode 100755
index 0000000..35591c2
--- /dev/null
+++ b/tools/jack
@@ -0,0 +1,183 @@
+#!/bin/bash
+#
+# Copyright (C) 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# v 1.1-a11-log-pl2
+#
+set -o nounset
+umask 077
+
+#
+# Settings
+#
+LOCAL_SETTING="$HOME/.jack"
+TMPDIR=${TMPDIR:=/tmp}
+SERVER_DIR=$TMPDIR/jack-$USER
+
+#
+# Load local settings
+#
+source "$LOCAL_SETTING" 2>/dev/null
+
+#
+# Create or update local settings if needed
+#
+if [[ ! -f "$LOCAL_SETTING" || $SETTING_VERSION -lt 2 ]]; then
+  echo "Writing local settings in" $LOCAL_SETTING
+  cat >"$LOCAL_SETTING.$$" <<-EOT
+	# Server settings
+	SERVER=${SERVER:=true}
+	SERVER_PORT_SERVICE=${SERVER_PORT_SERVICE:=8072}
+	SERVER_PORT_ADMIN=${SERVER_PORT_ADMIN:=8073}
+	SERVER_COUNT=${SERVER_COUNT:=1}
+	SERVER_NB_COMPILE=${SERVER_NB_COMPILE:=4}
+	SERVER_TIMEOUT=${SERVER_TIMEOUT:=60}
+	SERVER_LOG=\${SERVER_LOG:=\$SERVER_DIR/jack-\$SERVER_PORT_SERVICE.log}
+	JACK_VM_COMMAND=\${JACK_VM_COMMAND:=java}
+	# Internal, do not touch
+	SETTING_VERSION=2
+EOT
+  ln -f "$LOCAL_SETTING.$$" "$LOCAL_SETTING"
+  rm "$LOCAL_SETTING.$$"
+  source "$LOCAL_SETTING"
+fi
+
+#
+# If not in server mode, exec jack
+#
+if [ "$SERVER" != "true" ]; then
+  exec $JACK_VM_COMMAND -cp $JACK_JAR com.android.jack.Main "$@"
+  echo "Cannot succeed to launch Jack" >&2
+  exit 255
+fi
+
+#
+# Static setting
+#
+SERVER_PRG="$JACK_VM_COMMAND -cp $JACK_JAR com.android.jack.server.JackSimpleServer"
+
+#
+# Prepare compilation
+#
+JACK_DIR="$SERVER_DIR/jack-task-$$/"
+JACK_OUT="$JACK_DIR/out"
+JACK_ERR="$JACK_DIR/err"
+JACK_CLI="$JACK_DIR/cli"
+JACK_EXIT="$JACK_DIR/exit"
+JACK_PWD="$PWD"
+
+mkdir "$SERVER_DIR" 2>/dev/null
+
+# Cleanup
+trap 'rm -f "$JACK_OUT" "$JACK_ERR" "$JACK_CLI" "$JACK_EXIT" 2>>$SERVER_LOG; rmdir "$JACK_DIR" 2>>$SERVER_LOG' EXIT
+
+set -o errexit
+
+# Create fifos and files for a task
+mkdir  "$JACK_DIR"
+mkfifo "$JACK_OUT"
+mkfifo "$JACK_ERR"
+touch  "$JACK_CLI" "$JACK_EXIT"
+
+# Try to cleanup if interrupted
+abort () { echo $(uptime) >>$SERVER_LOG; kill -9 $PID_OUT $PID_ERR 2>>$SERVER_LOG; wait $PID_OUT $PID_ERR 2>>$SERVER_LOG; exit 255; }
+trap 'abort' SIGHUP SIGINT SIGQUIT SIGTERM ERR
+
+# Redirect output and error
+cat <"$JACK_OUT" >&1 &
+PID_OUT=$!
+cat <"$JACK_ERR" >&2 &
+PID_ERR=$!
+
+# Prepare the working directory and command line
+echo -n \"$PWD\" "" >"$JACK_CLI"
+for i in "$@"; do
+  echo -n \"$i\" "" >>"$JACK_CLI"
+done
+echo >>"$JACK_CLI"
+
+#
+# Launch the compilation
+#
+
+set +o errexit
+trap ERR
+
+RETRY_LAUNCH=1
+RETRY_SESSION=3
+DELAY_CONNECT=30
+
+
+# Launch compilation
+DATE_CONNECT=$(date +%s)
+while true; do
+  CURL_TIME=$(date +%H:%M:%S)
+  HTTP_CODE=$(curl --fail --silent --data @- --output "$JACK_EXIT" --write-out %{http_code} --connect-timeout 10 --no-proxy 127.0.0.1:$SERVER_PORT_SERVICE http://127.0.0.1:$SERVER_PORT_SERVICE/jack <<< "+ $JACK_OUT $JACK_ERR $JACK_CLI")
+  CURL_CODE=$?
+  JACK_CODE=$(cat "$JACK_EXIT")
+  echo "CURL: $$ - $CURL_TIME - $CURL_CODE - $HTTP_CODE - $JACK_CODE" >>$SERVER_LOG
+  if [ $CURL_CODE -eq 0 ]; then
+    # No problem, let's go
+    break;
+  elif [ $CURL_CODE -eq 7 ]; then
+    # Failed to connect
+    if [ $(date +%s) -ge $DATE_CONNECT ]; then
+      if [ $RETRY_LAUNCH -eq 0 ]; then
+        echo "Cannot launch background server" >&2
+        abort
+      else
+        let RETRY_LAUNCH=RETRY_LAUNCH-1
+        echo "Launching background server" $SERVER_PRG
+        $SERVER_PRG $SERVER_PORT_SERVICE $SERVER_PORT_ADMIN $SERVER_COUNT $SERVER_NB_COMPILE $SERVER_TIMEOUT >>$SERVER_LOG 2>&1 &
+        # New server, let's try a bit to connect
+        let DATE_CONNECT=$(date +%s)+$DELAY_CONNECT;
+      fi
+    else
+      sleep 0.2 2>/dev/null
+    fi
+    # Trying with a new connection, let's retry session 3 times max
+    RETRY_SESSION=3
+  elif  [ $CURL_CODE -eq 22 ]; then
+    # Http code not OK, let's decode and abort
+    if [ $HTTP_CODE -eq 401 ]; then
+      # 401: Unauthorized
+      echo "Security problem, see server log ($SERVER_LOG)" >&2
+      abort
+    elif [ $HTTP_CODE -eq 400 ]; then
+      # 400: Bad request
+      echo "Bad request, see server log ($SERVER_LOG)" >&2
+      abort
+    else
+      # Other
+      echo "Internal unknown error ($HTTP_CODE), try other ports in ~/.jack, or see server log ($SERVER_LOG)" >&2
+      abort
+    fi
+  else
+    # In case of partial, timeout, empty respond, network error, let's retry
+    if [ $RETRY_SESSION -eq 0 ]; then
+      echo "Communication error with server ($CURL_CODE)" >&2
+      abort
+    else
+      let RETRY_SESSION=RETRY_SESSION-1
+    fi
+  fi
+done
+
+# Wait for termination
+wait $PID_OUT
+wait $PID_ERR
+
+# Exit
+exit $JACK_CODE
diff --git a/tools/jack-admin b/tools/jack-admin
new file mode 100755
index 0000000..a1bc7af
--- /dev/null
+++ b/tools/jack-admin
@@ -0,0 +1,164 @@
+#!/bin/bash
+#
+# Copyright (C) 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# v 1.1-a11
+#
+set -o nounset
+umask 077
+
+#
+# Settings
+#
+LOCAL_SETTING="$HOME/.jack"
+TMPDIR=${TMPDIR:=/tmp}
+SERVER_DIR=$TMPDIR/jack-$USER
+
+#
+# Load local settings
+#
+source "$LOCAL_SETTING" 2>/dev/null
+
+#
+# Create or update local settings if needed
+#
+if [[ ! -f "$LOCAL_SETTING" || $SETTING_VERSION -lt 2 ]]; then
+  echo "Writing local settings in" $LOCAL_SETTING
+  cat >"$LOCAL_SETTING.$$" <<-EOT
+	# Server settings
+	SERVER=${SERVER:=true}
+	SERVER_PORT_SERVICE=${SERVER_PORT_SERVICE:=8072}
+	SERVER_PORT_ADMIN=${SERVER_PORT_ADMIN:=8073}
+	SERVER_COUNT=${SERVER_COUNT:=1}
+	SERVER_NB_COMPILE=${SERVER_NB_COMPILE:=4}
+	SERVER_TIMEOUT=${SERVER_TIMEOUT:=60}
+	SERVER_LOG=\${SERVER_LOG:=\$SERVER_DIR/jack-\$SERVER_PORT_SERVICE.log}
+	JACK_VM_COMMAND=\${JACK_VM_COMMAND:=java}
+	# Internal, do not touch
+	SETTING_VERSION=2
+EOT
+  ln -f "$LOCAL_SETTING.$$" "$LOCAL_SETTING"
+  rm "$LOCAL_SETTING.$$"
+  source "$LOCAL_SETTING"
+fi
+
+#
+# Static setting
+#
+mkdir "$SERVER_DIR" 2>/dev/null
+
+#
+# Decoding argument
+#
+
+if [ $# -ne 1 ]
+then
+        echo "Usage : $0 [ start-server | stop-server | kill-server | list-server | server-log | server-stat ]"
+        exit 255
+fi
+
+case $1 in
+  stop-server)
+    echo "Stopping background server"
+    CMD="stop" ;;
+  server-stat)
+    echo "Getting statistic from background server"
+    CMD="stat" ;;
+  server-log)
+    echo "Log location of background server:"
+    echo $SERVER_LOG
+    exit 0 ;;
+  kill-server)
+    echo "Killing background server"
+    kill $(ps aux | grep JackSimpleServer | grep -v grep | awk '{print $2}')
+    exit $? ;;
+  list-server)
+    ps aux | grep JackSimpleServer | grep -v grep
+    exit $? ;;
+  start-server)
+    SERVER_PRG="$JACK_VM_COMMAND -cp $JACK_JAR com.android.jack.server.JackSimpleServer"
+    echo "Launching background server" $SERVER_PRG
+    $SERVER_PRG $SERVER_PORT_SERVICE $SERVER_PORT_ADMIN $SERVER_COUNT $SERVER_NB_COMPILE $SERVER_TIMEOUT >>$SERVER_LOG 2>&1 &
+    exit 0 ;;
+  *)
+    echo "Usage : $0 [ start-server | stop-server | kill-server | list-server | server-log | server-stat ]"
+    exit 255 ;;
+esac
+
+#
+# Send command
+#
+
+set +o errexit
+
+# Try to cleanup if interrupted
+# Cleanup
+JACK_EXIT="$SERVER_DIR/admin-$$"
+trap 'rm -f "$JACK_EXIT" 2>/dev/null;' EXIT
+
+RETRY_SESSION=3
+DELAY_CONNECT=3
+
+
+# Send command to Jack server
+DATE_CONNECT=$(date +%s)
+while true; do
+  HTTP_CODE=$(curl --fail --silent --output $JACK_EXIT --write-out %{http_code} --connect-timeout 5 --no-proxy 127.0.0.1:$SERVER_PORT_ADMIN http://127.0.0.1:$SERVER_PORT_ADMIN/$CMD)
+  CURL_CODE=$?
+  if [ $CURL_CODE -eq 0 ]; then
+    # No problem, let's go
+    break;
+  elif [ $CURL_CODE -eq 7 ]; then
+    # Failed to connect
+    if [ $(date +%s) -ge $DATE_CONNECT ]; then
+        echo "No Jack server running"
+        exit 255
+    else
+      sleep 0.2 2>/dev/null
+    fi
+    # Trying with a new connection, let's retry session 3 times max
+    RETRY_SESSION=3
+  elif  [ $CURL_CODE -eq 22 ]; then
+    # Http code not OK, let's decode and abort
+    if [ $HTTP_CODE -eq 401 ]; then
+      # 401: Unauthorized
+      echo "Security problem, see server log" >&2
+      exit 255
+    elif [ $HTTP_CODE -eq 400 ]; then
+      # 400: Bad request
+      echo "Bad request, see server log" >&2
+      exit 255
+    else
+      # Other
+      echo "Internal unknown error ($HTTP_CODE), try other ports in ~/.jack, or see server log" >&2
+      exit 255
+    fi
+  else
+    # In case of partial, timeout, empty respond, network error, let's retry
+    if [ $RETRY_SESSION -eq 0 ]; then
+      echo "Communication error with server ($CURL_CODE)" >&2
+      exit 255
+    else
+      let RETRY_SESSION=RETRY_SESSION-1
+    fi
+  fi
+done
+
+# Exit
+if [ -r $JACK_EXIT ]; then
+  cat <$JACK_EXIT 2>/dev/null
+fi
+
+exit 0
diff --git a/tools/jack-launcher.jar b/tools/jack-launcher.jar
new file mode 100644
index 0000000..fd0be2e
--- /dev/null
+++ b/tools/jack-launcher.jar
Binary files differ
diff --git a/tools/jack.jar b/tools/jack.jar
index 804a01b..337a64c 100644
--- a/tools/jack.jar
+++ b/tools/jack.jar
Binary files differ
diff --git a/tools/jill.jar b/tools/jill.jar
index 323bba5..a16ac47 100644
--- a/tools/jill.jar
+++ b/tools/jill.jar
Binary files differ
