Add settings.gradle if not present in app folder

After updating to gradle 5.2 we now have a settings.gradle file in the
root of r8. Gradle will automagically look up in the tree for a
settings file and throw an error when the apps are placed under the
$R8/build directory.

Change-Id: I69bfd818b245ac5cb92800d989acd0989e76612d
diff --git a/tools/as_utils.py b/tools/as_utils.py
index 817f7ed..363e1b9 100644
--- a/tools/as_utils.py
+++ b/tools/as_utils.py
@@ -47,6 +47,14 @@
       'Unsupported gradle version: {} (must use at least gradle '
           + 'version 3.2)').format(gradle_version)
 
+def add_settings_gradle(checkout_dir, name):
+  settings_file = os.path.join(checkout_dir, 'settings.gradle')
+  if os.path.isfile(settings_file):
+    return
+
+  with open(settings_file, "w+") as f:
+    f.write("rootProject.name = '{}'\n".format(name))
+
 def remove_r8_dependency(checkout_dir):
   build_file = os.path.join(checkout_dir, 'build.gradle')
   assert os.path.isfile(build_file), (
diff --git a/tools/run_on_as_app.py b/tools/run_on_as_app.py
index d6dd647..ef72d12 100755
--- a/tools/run_on_as_app.py
+++ b/tools/run_on_as_app.py
@@ -394,6 +394,11 @@
       shrinker,
       ' for recompilation' if keepRuleSynthesisForRecompilation else ''))
 
+  # Add settings.gradle file if it is not present to prevent gradle from finding
+  # the settings.gradle file in the r8 root when apps are placed under
+  # $R8/build.
+  as_utils.add_settings_gradle(checkout_dir, app)
+
   # Add 'r8.jar' from top-level build.gradle.
   as_utils.add_r8_dependency(checkout_dir, temp_dir, IsMinifiedR8(shrinker))