diff --git a/tools/apk_utils.py b/tools/apk_utils.py
index 906284e..f126f91 100755
--- a/tools/apk_utils.py
+++ b/tools/apk_utils.py
@@ -56,7 +56,7 @@
   zipalign_path = (
       'zipalign' if 'build_tools' in os.environ.get('PATH')
       else os.path.join(utils.getAndroidBuildTools(), 'zipalign'))
-  cmd = [zipalign_path, '-f', '4', apk, aligned_apk]
+  cmd = [zipalign_path, '-f', '-p', '4', apk, aligned_apk]
   utils.RunCmd(cmd, quiet=True, logging=False)
   return aligned_apk
 
diff --git a/tools/startup/adb_utils.py b/tools/startup/adb_utils.py
index c181682..a376018 100755
--- a/tools/startup/adb_utils.py
+++ b/tools/startup/adb_utils.py
@@ -156,6 +156,19 @@
   else:
     return '%s/%s' % (app_id, activity)
 
+def get_meminfo(app_id, device_id=None):
+  cmd = create_adb_cmd('shell dumpsys meminfo -s %s' % app_id, device_id)
+  stdout = subprocess.check_output(cmd).decode('utf-8').strip()
+  for line in stdout.splitlines():
+    if 'TOTAL PSS: ' in line:
+      elements = [s for s in line.replace('TOTAL ', 'TOTAL_').split()]
+      assert elements[0] == 'TOTAL_PSS:', elements[0]
+      assert elements[1].isdigit()
+      assert elements[2] == 'TOTAL_RSS:'
+      assert elements[3].isdigit()
+      return { 'total_pss': int(elements[1]), 'total_rss': int(elements[3]) }
+  raise ValueError('Unexpected stdout: %s' % stdout)
+
 def get_profile_data(app_id, device_id=None):
   with utils.TempDir() as temp:
     source = get_profile_path(app_id)
diff --git a/tools/startup/measure_startup.py b/tools/startup/measure_startup.py
index ef529b6..1b94fad 100755
--- a/tools/startup/measure_startup.py
+++ b/tools/startup/measure_startup.py
@@ -245,12 +245,14 @@
 def compute_data(launch_activity_result, logcat, perfetto_trace_path, options):
   minfl, majfl = adb_utils.get_minor_major_page_faults(
       options.app_id, options.device_id)
+  meminfo = adb_utils.get_meminfo(options.app_id, options.device_id)
   data = {
     'app_id': options.app_id,
     'time': time.ctime(time.time()),
     'minfl': minfl,
     'majfl': majfl
   }
+  data.update(meminfo)
   startup_data = compute_startup_data(
       launch_activity_result, logcat, perfetto_trace_path, options)
   return data | startup_data
