diff --git a/third_party/android_sdk.tar.gz.sha1 b/third_party/android_sdk.tar.gz.sha1
new file mode 100644
index 0000000..ebc2c1d
--- /dev/null
+++ b/third_party/android_sdk.tar.gz.sha1
@@ -0,0 +1 @@
+fdbcfa08e6a1772bc9569bf706819a95a15bc3a0
\ No newline at end of file
diff --git a/tools/apk_masseur.py b/tools/apk_masseur.py
index 4b13a32..0edd032 100755
--- a/tools/apk_masseur.py
+++ b/tools/apk_masseur.py
@@ -88,7 +88,7 @@
   aligned_apk = os.path.join(temp, 'aligned.apk')
   zipalign_path = (
       'zipalign' if 'build_tools' in os.environ.get('PATH')
-      else os.path.join(utils.ANDROID_BUILD_TOOLS, 'zipalign'))
+      else os.path.join(utils.getAndroidBuildTools(), 'zipalign'))
   cmd = [
     zipalign_path,
     '-f',
diff --git a/tools/apk_utils.py b/tools/apk_utils.py
index 41c80c2..86f1fe8 100644
--- a/tools/apk_utils.py
+++ b/tools/apk_utils.py
@@ -26,7 +26,7 @@
 def sign_with_apksigner(
     unsigned_apk, signed_apk, keystore, password='android', quiet=False):
   cmd = [
-    os.path.join(utils.ANDROID_BUILD_TOOLS, 'apksigner'),
+    os.path.join(utils.getAndroidBuildTools(), 'apksigner'),
     'sign',
     '-v',
     '--ks', keystore,
diff --git a/tools/download_all_benchmark_dependencies.py b/tools/download_all_benchmark_dependencies.py
index 43ec0ab..2717c45 100755
--- a/tools/download_all_benchmark_dependencies.py
+++ b/tools/download_all_benchmark_dependencies.py
@@ -13,9 +13,8 @@
 
 def Main():
   gradle.RunGradle(BUILD_TARGETS)
-  # Download opensource_apps and place in build.
   utils.DownloadFromX20(utils.OPENSOURCE_APPS_SHA_FILE)
-
+  utils.DownloadFromX20(utils.ANDROID_SDK + '.tar.gz.sha1')
 
 if __name__ == '__main__':
   sys.exit(Main())
diff --git a/tools/golem.py b/tools/golem.py
index a535133..6552145 100755
--- a/tools/golem.py
+++ b/tools/golem.py
@@ -9,6 +9,7 @@
 
 LINKED_THIRD_PARTY_DIRECTORIES = [
     'android_jar',
+    'android_sdk',
     'benchmarks',
     'framework',
     'gmail',
diff --git a/tools/run_on_as_app.py b/tools/run_on_as_app.py
index 998c9ef..fef337a 100755
--- a/tools/run_on_as_app.py
+++ b/tools/run_on_as_app.py
@@ -185,7 +185,7 @@
     cmd = [jdk.GetJavaExecutable(), '-ea', '-jar', r8_jar, 'extractmarker', apk]
   elif os.path.isfile(r8lib_jar):
     cmd = [jdk.GetJavaExecutable(), '-ea', '-cp', r8lib_jar,
-        'com.android.tools.r8.SwissArmyKnife', 'extractmarker', apk]
+        'com.android.tools.r8.ExtractMarker', apk]
   else:
     script = os.path.join(utils.TOOLS_DIR, 'extractmarker.py')
     cmd = ['python', script, apk]
@@ -452,7 +452,7 @@
       app, config, checkout_dir, proguard_config_dest)
 
   env = {}
-  env['ANDROID_HOME'] = utils.ANDROID_HOME
+  env['ANDROID_HOME'] = utils.getAndroidHome()
   env['JAVA_OPTS'] = '-ea:com.android.tools.r8...'
 
   releaseTarget = config.get('releaseTarget')
@@ -774,6 +774,9 @@
     if os.path.exists(WORKING_DIR):
       shutil.rmtree(WORKING_DIR)
     shutil.copytree(utils.OPENSOURCE_APPS_FOLDER, WORKING_DIR)
+    os.environ[utils.ANDROID_HOME_ENVIROMENT_NAME] = os.path.join(
+        utils.ANDROID_SDK)
+    os.environ[utils.ANDROID_TOOLS_VERSION_ENVIRONMENT_NAME] = '28.0.3'
 
   if not os.path.exists(WORKING_DIR):
     os.makedirs(WORKING_DIR)
diff --git a/tools/utils.py b/tools/utils.py
index f2df0ed..12535be 100644
--- a/tools/utils.py
+++ b/tools/utils.py
@@ -21,6 +21,7 @@
 TOOLS_DIR = defines.TOOLS_DIR
 REPO_ROOT = defines.REPO_ROOT
 THIRD_PARTY = defines.THIRD_PARTY
+ANDROID_SDK = os.path.join(THIRD_PARTY, 'android_sdk')
 MEMORY_USE_TMP_FILE = 'memory_use.tmp'
 DEX_SEGMENTS_RESULT_PATTERN = re.compile('- ([^:]+): ([0-9]+)')
 BUILD = os.path.join(REPO_ROOT, 'build')
@@ -69,13 +70,17 @@
     'third_party/opensource_apps.tar.gz.sha1')
 OPENSOURCE_APPS_FOLDER = os.path.join(REPO_ROOT, 'third_party/opensource_apps/')
 
-
-# Common environment setup.
+ANDROID_HOME_ENVIROMENT_NAME = "ANDROID_HOME"
+ANDROID_TOOLS_VERSION_ENVIRONMENT_NAME = "ANDROID_TOOLS_VERSION"
 USER_HOME = os.path.expanduser('~')
-ANDROID_HOME = os.path.join(USER_HOME, 'Android', 'Sdk')
-ANDROID_BUILD_TOOLS_VERSION = '28.0.3'
-ANDROID_BUILD_TOOLS = os.path.join(
-    ANDROID_HOME, 'build-tools', ANDROID_BUILD_TOOLS_VERSION)
+
+def getAndroidHome():
+  return os.environ.get(
+      ANDROID_HOME_ENVIROMENT_NAME, os.path.join(USER_HOME, 'Android', 'Sdk'))
+
+def getAndroidBuildTools():
+  version = os.environ.get(ANDROID_TOOLS_VERSION_ENVIRONMENT_NAME, '28.0.3')
+  return os.path.join(getAndroidHome(), 'build-tools', version)
 
 def Print(s, quiet=False):
   if quiet:
@@ -270,10 +275,9 @@
   PrintCmd(cmd)
   subprocess.check_call(cmd)
 
-def create_archive(name):
-  return create_archive(name, [name])
-
-def create_archive(name, sources):
+def create_archive(name, sources=None):
+  if not sources:
+    sources = [name]
   tarname = '%s.tar.gz' % name
   with tarfile.open(tarname, 'w:gz') as tar:
     for source in sources:
