List files on missing APKs in run_on_as_app.py

Bug: 130343699
Change-Id: I2ae1c1a873dc28a6b1adc60ded4e3d32b93f069b
diff --git a/tools/as_utils.py b/tools/as_utils.py
index 83d0d15..fa81ac4 100644
--- a/tools/as_utils.py
+++ b/tools/as_utils.py
@@ -121,6 +121,15 @@
       or 'transformClassesWithDexBuilderFor' in x
       or 'transformDexArchiveWithDexMergerFor' in x)
 
+def ListFiles(directory, predicate=None):
+  files = []
+  for root, directories, filenames in os.walk(directory):
+    for filename in filenames:
+      file = os.path.join(root, filename)
+      if predicate is None or predicate(file):
+        files.append(file)
+  return files
+
 def SetPrintConfigurationDirective(app, checkout_dir, destination):
   proguard_config_file = FindProguardConfigurationFile(app, checkout_dir)
   with open(proguard_config_file) as f:
diff --git a/tools/run_on_as_app.py b/tools/run_on_as_app.py
index 23d790a..9ef28a8 100755
--- a/tools/run_on_as_app.py
+++ b/tools/run_on_as_app.py
@@ -642,8 +642,8 @@
       else apk_base_name + '.apk')
   unsigned_apk_name = apk_base_name + '-unsigned.apk'
 
-  build_dir = app.build_dir
-  build_output_apks = os.path.join(app.module, build_dir, 'outputs', 'apk')
+  build_dir = os.path.join(app.module, app.build_dir)
+  build_output_apks = os.path.join(build_dir, 'outputs', 'apk')
   if app.flavor:
     build_output_apks = os.path.join(build_output_apks, app.flavor, 'release')
   else:
@@ -652,6 +652,12 @@
   signed_apk = os.path.join(build_output_apks, signed_apk_name)
   unsigned_apk = os.path.join(build_output_apks, unsigned_apk_name)
 
+  assert os.path.isfile(signed_apk) or os.path.isfile(unsigned_apk), (
+      "Expected a file to be present at {} or {}, found: {}".format(
+          signed_apk, unsigned_apk,
+          ', '.join(
+              as_utils.ListFiles(build_dir, lambda x : x.endswith('.apk')))))
+
   if options.sign_apks and not os.path.isfile(signed_apk):
     assert os.path.isfile(unsigned_apk)
     if options.sign_apks: