diff --git a/tools/run_on_app.py b/tools/run_on_app.py
index 966f786..4ad013a 100755
--- a/tools/run_on_app.py
+++ b/tools/run_on_app.py
@@ -8,6 +8,7 @@
 import r8
 import d8
 import sys
+import utils
 
 import gmscore_data
 import youtube_data
@@ -65,6 +66,17 @@
                     'the run.')
   return result.parse_args()
 
+# Most apps have the -printmapping and -printseeds in the Proguard
+# configuration. However we don't want to write these files in these
+# locations. Instead generate an auxiliary Proguard configuration
+# placing these two output files together with the dex output.
+def GenerateAdditionalProguardConfiguration(temp, outdir):
+  name = "output.config"
+  with open(os.path.join(temp, name), 'w') as file:
+    file.write('-printmapping ' + os.path.join(outdir, 'proguard.map') + "\n")
+    file.write('-printseeds ' + os.path.join(outdir, 'proguard.seeds') + "\n")
+    return os.path.abspath(file.name)
+
 def main():
   (options, args) = ParseOptions()
   outdir = options.out
@@ -133,8 +145,16 @@
       d8.run(args, not options.no_build, not options.no_debug, options.profile,
              options.track_memory_to_file)
     else:
-      r8.run(args, not options.no_build, not options.no_debug, options.profile,
-             options.track_memory_to_file)
+      with utils.TempDir() as temp:
+        if outdir.endswith('.zip') or outdir.endswith('.jar'):
+          pg_outdir = os.path.dirname(outdir)
+        else:
+          pg_outdir = outdir
+        additional_pg_conf = GenerateAdditionalProguardConfiguration(
+            temp, os.path.abspath(pg_outdir))
+        args.extend(['--pg-conf', additional_pg_conf])
+        r8.run(args, not options.no_build, not options.no_debug, options.profile,
+               options.track_memory_to_file)
 
 if __name__ == '__main__':
   sys.exit(main())
