diff --git a/src/com/android/loganalysis/item/AppVersionItem.java b/src/com/android/loganalysis/item/AppVersionItem.java
new file mode 100644
index 0000000..5c144f2
--- /dev/null
+++ b/src/com/android/loganalysis/item/AppVersionItem.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.loganalysis.item;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+/** An {@link IItem} used to store an app's version code and name. */
+public class AppVersionItem extends GenericItem {
+
+    /** Constants for JSON output */
+    public static final String VERSION_CODE = "VERSION_CODE";
+
+    public static final String VERSION_NAME = "VERSION_NAME";
+
+    private static final Set<String> ATTRIBUTES =
+            new HashSet<String>(Arrays.asList(VERSION_CODE, VERSION_NAME));
+
+    /**
+     * The constructor for {@link AppVersionItem}
+     *
+     * @param versionCode the version code
+     * @param versionName the version name
+     */
+    public AppVersionItem(int versionCode, String versionName) {
+        super(ATTRIBUTES);
+
+        setAttribute(VERSION_CODE, versionCode);
+        setAttribute(VERSION_NAME, versionName);
+    }
+
+    public int getVersionCode() {
+        return (Integer) getAttribute(VERSION_CODE);
+    }
+
+    public String getVersionName() {
+        return (String) getAttribute(VERSION_NAME);
+    }
+}
diff --git a/src/com/android/loganalysis/item/DumpsysItem.java b/src/com/android/loganalysis/item/DumpsysItem.java
index 7f219bf..b66a82c 100644
--- a/src/com/android/loganalysis/item/DumpsysItem.java
+++ b/src/com/android/loganalysis/item/DumpsysItem.java
@@ -27,12 +27,15 @@
     /** Constant for JSON output */
     private static final String BATTERY_STATS = "BATTERY_STATS";
     /** Constant for JSON output */
+    private static final String PACKAGE_STATS = "PACKAGE_STATS";
+    /** Constant for JSON output */
     private static final String PROC_STATS = "PROC_STATS";
     /** Constant for JSON output */
     private static final String WIFI_STATS = "WIFI_STATS";
 
-    private static final Set<String> ATTRIBUTES = new HashSet<String>(Arrays.asList(
-            BATTERY_STATS, PROC_STATS, WIFI_STATS));
+    private static final Set<String> ATTRIBUTES =
+            new HashSet<String>(
+                    Arrays.asList(BATTERY_STATS, PACKAGE_STATS, PROC_STATS, WIFI_STATS));
 
     /**
      * The constructor for {@link DumpsysItem}.
@@ -48,9 +51,12 @@
         setAttribute(BATTERY_STATS, batteryStats);
     }
 
-    /**
-     * Set the {@link DumpsysProcStatsItem} of the bugreport.
-     */
+    /** Set the {@link DumpsysPackageStatsItem} of the bugreport. */
+    public void setPackageStats(DumpsysPackageStatsItem packageStats) {
+        setAttribute(PACKAGE_STATS, packageStats);
+    }
+
+    /** Set the {@link DumpsysProcStatsItem} of the bugreport. */
     public void setProcStats(DumpsysProcStatsItem procStats) {
         setAttribute(PROC_STATS, procStats);
     }
@@ -69,9 +75,12 @@
         return (DumpsysBatteryStatsItem) getAttribute(BATTERY_STATS);
     }
 
-    /**
-     * Get the {@link DumpsysProcStatsItem} of the bugreport.
-     */
+    /** Get the {@link DumpsysPackageStatsItem} of the bugreport. */
+    public DumpsysPackageStatsItem getPackageStats() {
+        return (DumpsysPackageStatsItem) getAttribute(PACKAGE_STATS);
+    }
+
+    /** Get the {@link DumpsysProcStatsItem} of the bugreport. */
     public DumpsysProcStatsItem getProcStats() {
         return (DumpsysProcStatsItem) getAttribute(PROC_STATS);
     }
diff --git a/src/com/android/loganalysis/item/DumpsysPackageStatsItem.java b/src/com/android/loganalysis/item/DumpsysPackageStatsItem.java
new file mode 100644
index 0000000..14c4073
--- /dev/null
+++ b/src/com/android/loganalysis/item/DumpsysPackageStatsItem.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.loganalysis.item;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+/** An {@link IItem} used to store apps and their version codes and names. */
+public class DumpsysPackageStatsItem extends GenericMapItem<AppVersionItem> {
+    private static final long serialVersionUID = 1L;
+
+    /** Constant for JSON output */
+    public static final String APP_VERSIONS = "APP_VERSIONS";
+
+    /** {@inheritDoc} */
+    @Override
+    public JSONObject toJson() {
+        JSONObject object = new JSONObject();
+        try {
+            object.put(APP_VERSIONS, super.toJson());
+        } catch (JSONException e) {
+            // Ignore
+        }
+        return object;
+    }
+}
diff --git a/src/com/android/loganalysis/parser/DumpsysPackageStatsParser.java b/src/com/android/loganalysis/parser/DumpsysPackageStatsParser.java
new file mode 100644
index 0000000..d06cfd5
--- /dev/null
+++ b/src/com/android/loganalysis/parser/DumpsysPackageStatsParser.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.loganalysis.parser;
+
+import com.android.loganalysis.item.AppVersionItem;
+import com.android.loganalysis.item.DumpsysPackageStatsItem;
+
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/** A {@link IParser} to parse package stats and create a mapping table of packages and versions */
+public class DumpsysPackageStatsParser implements IParser {
+
+    /** Matches: Package [com.google.android.googlequicksearchbox] (607929e): */
+    private static final Pattern PACKAGE_NAME = Pattern.compile("^\\s*Package \\[(.*)\\].*");
+
+    /** Matches: versionCode=300734793 minSdk=10000 targetSdk=10000 */
+    private static final Pattern VERSION_CODE = Pattern.compile("^\\s*versionCode=(\\d+).*");
+
+    /** Matches: versionName=6.16.35.26.arm64 */
+    private static final Pattern VERSION_NAME = Pattern.compile("^\\s*versionName=(.*)$");
+
+    /**
+     * {@inheritDoc}
+     *
+     * @return The {@link DumpsysPackageStatsItem}.
+     */
+    @Override
+    public DumpsysPackageStatsItem parse(List<String> lines) {
+        DumpsysPackageStatsItem item = new DumpsysPackageStatsItem();
+        String packageName = null;
+        String versionCode = null;
+        String versionName = null;
+
+        for (String line : lines) {
+            Matcher m = PACKAGE_NAME.matcher(line);
+            if (m.matches()) {
+                packageName = m.group(1);
+                versionCode = null;
+                versionName = null;
+                continue;
+            }
+            m = VERSION_CODE.matcher(line);
+            if (m.matches()) {
+                versionCode = m.group(1);
+                continue;
+            }
+            m = VERSION_NAME.matcher(line);
+            if (m.matches()) {
+                versionName = m.group(1).trim();
+                if (packageName != null && versionCode != null) {
+                    item.put(
+                            packageName,
+                            new AppVersionItem(Integer.parseInt(versionCode), versionName));
+                }
+                packageName = null;
+            }
+        }
+        return item;
+    }
+}
diff --git a/src/com/android/loganalysis/parser/DumpsysParser.java b/src/com/android/loganalysis/parser/DumpsysParser.java
index b74a86c..8c94e0b 100644
--- a/src/com/android/loganalysis/parser/DumpsysParser.java
+++ b/src/com/android/loganalysis/parser/DumpsysParser.java
@@ -18,6 +18,7 @@
 
 import com.android.loganalysis.item.DumpsysBatteryStatsItem;
 import com.android.loganalysis.item.DumpsysItem;
+import com.android.loganalysis.item.DumpsysPackageStatsItem;
 import com.android.loganalysis.item.DumpsysProcStatsItem;
 import com.android.loganalysis.item.DumpsysWifiStatsItem;
 
@@ -29,11 +30,13 @@
 public class DumpsysParser extends AbstractSectionParser {
 
     private static final String BATTERY_STATS_SECTION_REGEX = "^DUMP OF SERVICE batterystats:$";
+    private static final String PACKAGE_SECTION_REGEX = "^DUMP OF SERVICE package:";
     private static final String PROC_STATS_SECTION_REGEX = "^DUMP OF SERVICE procstats:";
     private static final String WIFI_SECTION_REGEX = "^DUMP OF SERVICE wifi:";
     private static final String NOOP_SECTION_REGEX = "DUMP OF SERVICE .*";
 
     private DumpsysBatteryStatsParser mBatteryStatsParser = new DumpsysBatteryStatsParser();
+    private DumpsysPackageStatsParser mPackageStatsParser = new DumpsysPackageStatsParser();
     private DumpsysProcStatsParser mProcStatsParser = new DumpsysProcStatsParser();
     private DumpsysWifiStatsParser mWifiStatsParser = new DumpsysWifiStatsParser();
 
@@ -63,6 +66,7 @@
      */
     protected void setup() {
         addSectionParser(mBatteryStatsParser, BATTERY_STATS_SECTION_REGEX);
+        addSectionParser(mPackageStatsParser, PACKAGE_SECTION_REGEX);
         addSectionParser(mProcStatsParser, PROC_STATS_SECTION_REGEX);
         addSectionParser(mWifiStatsParser, WIFI_SECTION_REGEX);
         addSectionParser(new NoopParser(), NOOP_SECTION_REGEX);
@@ -80,6 +84,7 @@
         }
         if (mDumpsys != null) {
             mDumpsys.setBatteryInfo((DumpsysBatteryStatsItem) getSection(mBatteryStatsParser));
+            mDumpsys.setPackageStats((DumpsysPackageStatsItem) getSection(mPackageStatsParser));
             mDumpsys.setProcStats((DumpsysProcStatsItem) getSection(mProcStatsParser));
             mDumpsys.setWifiStats((DumpsysWifiStatsItem) getSection(mWifiStatsParser));
         }
diff --git a/tests/src/com/android/loganalysis/parser/BugreportParserTest.java b/tests/src/com/android/loganalysis/parser/BugreportParserTest.java
index b47ea22..4f40820 100644
--- a/tests/src/com/android/loganalysis/parser/BugreportParserTest.java
+++ b/tests/src/com/android/loganalysis/parser/BugreportParserTest.java
@@ -38,120 +38,128 @@
      * Test that a bugreport can be parsed.
      */
     public void testParse() throws ParseException {
-        List<String> lines = Arrays.asList(
-                "========================================================",
-                "== dumpstate: 2012-04-25 20:45:10",
-                "========================================================",
-                "------ SECTION ------",
-                "",
-                "------ MEMORY INFO (/proc/meminfo) ------",
-                "MemTotal:         353332 kB",
-                "MemFree:           65420 kB",
-                "Buffers:           20800 kB",
-                "Cached:            86204 kB",
-                "SwapCached:            0 kB",
-                "",
-                "------ CPU INFO (top -n 1 -d 1 -m 30 -t) ------",
-                "",
-                "User 3%, System 3%, IOW 0%, IRQ 0%",
-                "User 33 + Nice 0 + Sys 32 + Idle 929 + IOW 0 + IRQ 0 + SIRQ 0 = 994",
-                "",
-                "------ PROCRANK (procrank) ------",
-                "  PID      Vss      Rss      Pss      Uss  cmdline",
-                "  178   87136K   81684K   52829K   50012K  system_server",
-                " 1313   78128K   77996K   48603K   45812K  com.google.android.apps.maps",
-                " 3247   61652K   61492K   33122K   30972K  com.android.browser",
-                "                          ------   ------  ------",
-                "                          203624K  163604K  TOTAL",
-                "RAM: 731448K total, 415804K free, 9016K buffers, 108548K cached",
-                "[procrank: 1.6s elapsed]",
-                "",
-                "------ KERNEL LOG (dmesg) ------",
-                "<6>[    0.000000] Initializing cgroup subsys cpu",
-                "<3>[    1.000000] benign message",
-                "",
-                "",
-                "------ SYSTEM LOG (logcat -v threadtime -d *:v) ------",
-                "04-25 09:55:47.799  3064  3082 E AndroidRuntime: java.lang.Exception",
-                "04-25 09:55:47.799  3064  3082 E AndroidRuntime: \tat class.method1(Class.java:1)",
-                "04-25 09:55:47.799  3064  3082 E AndroidRuntime: \tat class.method2(Class.java:2)",
-                "04-25 09:55:47.799  3064  3082 E AndroidRuntime: \tat class.method3(Class.java:3)",
-                "04-25 17:17:08.445   312   366 E ActivityManager: ANR (application not responding) in process: com.android.package",
-                "04-25 17:17:08.445   312   366 E ActivityManager: Reason: keyDispatchingTimedOut",
-                "04-25 17:17:08.445   312   366 E ActivityManager: Load: 0.71 / 0.83 / 0.51",
-                "04-25 17:17:08.445   312   366 E ActivityManager: 33% TOTAL: 21% user + 11% kernel + 0.3% iowait",
-                "04-25 18:33:27.273   115   115 I DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***",
-                "04-25 18:33:27.273   115   115 I DEBUG   : Build fingerprint: 'product:build:target'",
-                "04-25 18:33:27.273   115   115 I DEBUG   : pid: 3112, tid: 3112  >>> com.google.android.browser <<<",
-                "04-25 18:33:27.273   115   115 I DEBUG   : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000",
-                "",
-                "------ SYSTEM PROPERTIES ------",
-                "[dalvik.vm.dexopt-flags]: [m=y]",
-                "[dalvik.vm.heapgrowthlimit]: [48m]",
-                "[dalvik.vm.heapsize]: [256m]",
-                "[gsm.version.ril-impl]: [android moto-ril-multimode 1.0]",
-                "",
-                "------ LAST KMSG (/proc/last_kmsg) ------",
-                "[    0.000000] Initializing cgroup subsys cpu",
-                "[   16.203491] benign message",
-                "",
-                "------ SECTION ------",
-                "",
-                "------ VM TRACES AT LAST ANR (/data/anr/traces.txt: 2012-04-25 17:17:08) ------",
-                "",
-                "",
-                "----- pid 2887 at 2012-04-25 17:17:08 -----",
-                "Cmd line: com.android.package",
-                "",
-                "DALVIK THREADS:",
-                "(mutexes: tll=0 tsl=0 tscl=0 ghl=0)",
-                "",
-                "\"main\" prio=5 tid=1 SUSPENDED",
-                "  | group=\"main\" sCount=1 dsCount=0 obj=0x00000001 self=0x00000001",
-                "  | sysTid=2887 nice=0 sched=0/0 cgrp=foreground handle=0000000001",
-                "  | schedstat=( 0 0 0 ) utm=5954 stm=1017 core=0",
-                "  at class.method1(Class.java:1)",
-                "  at class.method2(Class.java:2)",
-                "  at class.method2(Class.java:2)",
-                "",
-                "----- end 2887 -----",
-                "",
-                "------ SECTION ------",
-                "",
-                "------ DUMPSYS (dumpsys) ------",
-                "DUMP OF SERVICE batterystats:",
-                "Battery History (0% used, 1636 used of 256KB, 15 strings using 794):",
-                "    0 (15) RESET:TIME: 1970-01-10-06-23-28",
-                "          +45s702ms (2) 001 80080000 volt=4187",
-                "          +1m15s525ms (2) 001 80080000 temp=299 volt=4155",
-                "Statistics since last charged:",
-                "  Time on battery: 1h 5m 2s 4ms (9%) realtime, 1h 5m 2s 4ms (9%) uptime",
-                " Time on battery screen off: 1h 4m 5s 8ms (9%) realtime, 1h 4m 5s 8ms (9%) uptime",
-                " All kernel wake locks:",
-                " Kernel Wake lock PowerManagerService.WakeLocks: 5m 10s 6ms (2 times) realtime",
-                " Kernel Wake lock msm_serial_hs_rx: 2m 13s 612ms (258 times) realtime",
-                "",
-                "  All partial wake locks:",
-                "  Wake lock 1001 ProxyController: 1h 4m 47s 565ms (4 times) realtime",
-                "  Wake lock 1013 AudioMix: 1s 979ms (3 times) realtime",
-                "",
-                "  All wakeup reasons:",
-                "  Wakeup reason 2:bcmsdh_sdmmc:2:qcom,smd:2:msmgio: 1m 5s 4ms (2 times) realtime",
-                "  Wakeup reason 2:qcom,smd-rpm:2:fc4c.qcom,spmi: 7m 1s 914ms (7 times) realtime",
-                "",
-                "========================================================",
-                "== Running Application Services",
-                "========================================================",
-                "------ APP SERVICES (dumpsys activity service all) ------",
-                "SERVICE com.google.android.gms/"
-                + "com.google.android.location.internal.GoogleLocationManagerService f4c9d pid=14",
-                " Location Request History By Package:",
-                "Interval effective/min/max 1/0/0[s] Duration: 140[minutes] ["
-                + "com.google.android.gms, PRIORITY_NO_POWER, UserLocationProducer] "
-                + "Num requests: 2 Active: true",
-                "Interval effective/min/max 284/285/3600[s] Duration: 140[minutes] "
-                + "[com.google.android.googlequicksearchbox, PRIORITY_BALANCED_POWER_ACCURACY] "
-                + "Num requests: 5 Active: true");
+        List<String> lines =
+                Arrays.asList(
+                        "========================================================",
+                        "== dumpstate: 2012-04-25 20:45:10",
+                        "========================================================",
+                        "------ SECTION ------",
+                        "",
+                        "------ MEMORY INFO (/proc/meminfo) ------",
+                        "MemTotal:         353332 kB",
+                        "MemFree:           65420 kB",
+                        "Buffers:           20800 kB",
+                        "Cached:            86204 kB",
+                        "SwapCached:            0 kB",
+                        "",
+                        "------ CPU INFO (top -n 1 -d 1 -m 30 -t) ------",
+                        "",
+                        "User 3%, System 3%, IOW 0%, IRQ 0%",
+                        "User 33 + Nice 0 + Sys 32 + Idle 929 + IOW 0 + IRQ 0 + SIRQ 0 = 994",
+                        "",
+                        "------ PROCRANK (procrank) ------",
+                        "  PID      Vss      Rss      Pss      Uss  cmdline",
+                        "  178   87136K   81684K   52829K   50012K  system_server",
+                        " 1313   78128K   77996K   48603K   45812K  com.google.android.apps.maps",
+                        " 3247   61652K   61492K   33122K   30972K  com.android.browser",
+                        "                          ------   ------  ------",
+                        "                          203624K  163604K  TOTAL",
+                        "RAM: 731448K total, 415804K free, 9016K buffers, 108548K cached",
+                        "[procrank: 1.6s elapsed]",
+                        "",
+                        "------ KERNEL LOG (dmesg) ------",
+                        "<6>[    0.000000] Initializing cgroup subsys cpu",
+                        "<3>[    1.000000] benign message",
+                        "",
+                        "",
+                        "------ SYSTEM LOG (logcat -v threadtime -d *:v) ------",
+                        "04-25 09:55:47.799  3064  3082 E AndroidRuntime: java.lang.Exception",
+                        "04-25 09:55:47.799  3064  3082 E AndroidRuntime: \tat class.method1(Class.java:1)",
+                        "04-25 09:55:47.799  3064  3082 E AndroidRuntime: \tat class.method2(Class.java:2)",
+                        "04-25 09:55:47.799  3064  3082 E AndroidRuntime: \tat class.method3(Class.java:3)",
+                        "04-25 17:17:08.445   312   366 E ActivityManager: ANR (application not responding) in process: com.android.package",
+                        "04-25 17:17:08.445   312   366 E ActivityManager: Reason: keyDispatchingTimedOut",
+                        "04-25 17:17:08.445   312   366 E ActivityManager: Load: 0.71 / 0.83 / 0.51",
+                        "04-25 17:17:08.445   312   366 E ActivityManager: 33% TOTAL: 21% user + 11% kernel + 0.3% iowait",
+                        "04-25 18:33:27.273   115   115 I DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***",
+                        "04-25 18:33:27.273   115   115 I DEBUG   : Build fingerprint: 'product:build:target'",
+                        "04-25 18:33:27.273   115   115 I DEBUG   : pid: 3112, tid: 3112  >>> com.google.android.browser <<<",
+                        "04-25 18:33:27.273   115   115 I DEBUG   : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000",
+                        "",
+                        "------ SYSTEM PROPERTIES ------",
+                        "[dalvik.vm.dexopt-flags]: [m=y]",
+                        "[dalvik.vm.heapgrowthlimit]: [48m]",
+                        "[dalvik.vm.heapsize]: [256m]",
+                        "[gsm.version.ril-impl]: [android moto-ril-multimode 1.0]",
+                        "",
+                        "------ LAST KMSG (/proc/last_kmsg) ------",
+                        "[    0.000000] Initializing cgroup subsys cpu",
+                        "[   16.203491] benign message",
+                        "",
+                        "------ SECTION ------",
+                        "",
+                        "------ VM TRACES AT LAST ANR (/data/anr/traces.txt: 2012-04-25 17:17:08) ------",
+                        "",
+                        "",
+                        "----- pid 2887 at 2012-04-25 17:17:08 -----",
+                        "Cmd line: com.android.package",
+                        "",
+                        "DALVIK THREADS:",
+                        "(mutexes: tll=0 tsl=0 tscl=0 ghl=0)",
+                        "",
+                        "\"main\" prio=5 tid=1 SUSPENDED",
+                        "  | group=\"main\" sCount=1 dsCount=0 obj=0x00000001 self=0x00000001",
+                        "  | sysTid=2887 nice=0 sched=0/0 cgrp=foreground handle=0000000001",
+                        "  | schedstat=( 0 0 0 ) utm=5954 stm=1017 core=0",
+                        "  at class.method1(Class.java:1)",
+                        "  at class.method2(Class.java:2)",
+                        "  at class.method2(Class.java:2)",
+                        "",
+                        "----- end 2887 -----",
+                        "",
+                        "------ SECTION ------",
+                        "",
+                        "------ DUMPSYS (dumpsys) ------",
+                        "DUMP OF SERVICE batterystats:",
+                        "Battery History (0% used, 1636 used of 256KB, 15 strings using 794):",
+                        "    0 (15) RESET:TIME: 1970-01-10-06-23-28",
+                        "          +45s702ms (2) 001 80080000 volt=4187",
+                        "          +1m15s525ms (2) 001 80080000 temp=299 volt=4155",
+                        "Statistics since last charged:",
+                        "  Time on battery: 1h 5m 2s 4ms (9%) realtime, 1h 5m 2s 4ms (9%) uptime",
+                        " Time on battery screen off: 1h 4m 5s 8ms (9%) realtime, 1h 4m 5s 8ms (9%) uptime",
+                        " All kernel wake locks:",
+                        " Kernel Wake lock PowerManagerService.WakeLocks: 5m 10s 6ms (2 times) realtime",
+                        " Kernel Wake lock msm_serial_hs_rx: 2m 13s 612ms (258 times) realtime",
+                        "",
+                        "  All partial wake locks:",
+                        "  Wake lock 1001 ProxyController: 1h 4m 47s 565ms (4 times) realtime",
+                        "  Wake lock 1013 AudioMix: 1s 979ms (3 times) realtime",
+                        "",
+                        "  All wakeup reasons:",
+                        "  Wakeup reason 2:bcmsdh_sdmmc:2:qcom,smd:2:msmgio: 1m 5s 4ms (2 times) realtime",
+                        "  Wakeup reason 2:qcom,smd-rpm:2:fc4c.qcom,spmi: 7m 1s 914ms (7 times) realtime",
+                        "",
+                        "DUMP OF SERVICE package:",
+                        "Package [com.google.android.calculator] (e075c9d):",
+                        "  userId=10071",
+                        "  secondaryCpuAbi=null",
+                        "  versionCode=73000302 minSdk=10000 targetSdk=10000",
+                        "  versionName=7.3 (3821978)",
+                        "  splits=[base]",
+                        "========================================================",
+                        "== Running Application Services",
+                        "========================================================",
+                        "------ APP SERVICES (dumpsys activity service all) ------",
+                        "SERVICE com.google.android.gms/"
+                                + "com.google.android.location.internal.GoogleLocationManagerService f4c9d pid=14",
+                        " Location Request History By Package:",
+                        "Interval effective/min/max 1/0/0[s] Duration: 140[minutes] ["
+                                + "com.google.android.gms, PRIORITY_NO_POWER, UserLocationProducer] "
+                                + "Num requests: 2 Active: true",
+                        "Interval effective/min/max 284/285/3600[s] Duration: 140[minutes] "
+                                + "[com.google.android.googlequicksearchbox, PRIORITY_BALANCED_POWER_ACCURACY] "
+                                + "Num requests: 5 Active: true");
 
         BugreportItem bugreport = new BugreportParser().parse(lines);
         assertNotNull(bugreport);
@@ -184,6 +192,7 @@
 
         assertNotNull(bugreport.getDumpsys());
         assertNotNull(bugreport.getDumpsys().getBatteryStats());
+        assertNotNull(bugreport.getDumpsys().getPackageStats());
 
         assertNotNull(bugreport.getActivityService());
         assertNotNull(bugreport.getActivityService().getLocationDumps().getLocationClients());
@@ -546,48 +555,57 @@
      * Test that section headers are correctly parsed.
      */
     public void testSectionHeader() {
-        List<String> lines = Arrays.asList(
-                "========================================================",
-                "== dumpstate: 2012-04-25 20:45:10",
-                "========================================================",
-                "------ DUMPSYS (dumpsys) ------",
-                "DUMP OF SERVICE SurfaceFlinger:",
-                "--DrmDisplayCompositor[0]: num_frames=1456 num_ms=475440 fps=3.06243",
-                "---- DrmDisplayCompositor Layers: num=3",
-                "------ DrmDisplayCompositor Layer: plane=17 crtc=20 crtc[x/y/w/h]=0/0/2560/1800",
-                "------ DrmDisplayCompositor Layer: plane=21 disabled",
-                "------ DrmDisplayCompositor Layer: plane=22 disabled",
-                "DUMP OF SERVICE batterystats:",
-                "Battery History (0% used, 1636 used of 256KB, 15 strings using 794):",
-                "    0 (15) RESET:TIME: 1970-01-10-06-23-28",
-                "          +45s702ms (2) 001 80080000 volt=4187",
-                "          +1m15s525ms (2) 001 80080000 temp=299 volt=4155",
-                "Statistics since last charged:",
-                "  Time on battery: 1h 5m 2s 4ms (9%) realtime, 1h 5m 2s 4ms (9%) uptime",
-                " Time on battery screen off: 1h 4m 5s 8ms (9%) realtime, 1h 4m 5s 8ms (9%) uptime",
-                " All kernel wake locks:",
-                " Kernel Wake lock PowerManagerService.WakeLocks: 5m 10s 6ms (2 times) realtime",
-                " Kernel Wake lock msm_serial_hs_rx: 2m 13s 612ms (258 times) realtime",
-                "",
-                "  All partial wake locks:",
-                "  Wake lock 1001 ProxyController: 1h 4m 47s 565ms (4 times) realtime",
-                "  Wake lock 1013 AudioMix: 1s 979ms (3 times) realtime",
-                "",
-                "  All wakeup reasons:",
-                "  Wakeup reason 2:bcmsdh_sdmmc:2:qcom,smd:2:msmgio: 1m 5s 4ms (2 times) realtime",
-                "  Wakeup reason 2:qcom,smd-rpm:2:fc4c.qcom,spmi: 7m 1s 914ms (7 times) realtime",
-                "DUMP OF SERVICE procstats:",
-                "COMMITTED STATS FROM 2015-09-30-07-44-54:",
-                "  * system / 1000 / v23:",
-                "           TOTAL: 100% (118MB-118MB-118MB/71MB-71MB-71MB over 1)",
-                "      Persistent: 100% (118MB-118MB-118MB/71MB-71MB-71MB over 1)",
-                " * com.android.phone / 1001 / v23:",
-                "           TOTAL: 6.7%",
-                "      Persistent: 6.7%",
-                "");
+        List<String> lines =
+                Arrays.asList(
+                        "========================================================",
+                        "== dumpstate: 2012-04-25 20:45:10",
+                        "========================================================",
+                        "------ DUMPSYS (dumpsys) ------",
+                        "DUMP OF SERVICE SurfaceFlinger:",
+                        "--DrmDisplayCompositor[0]: num_frames=1456 num_ms=475440 fps=3.06243",
+                        "---- DrmDisplayCompositor Layers: num=3",
+                        "------ DrmDisplayCompositor Layer: plane=17 crtc=20 crtc[x/y/w/h]=0/0/2560/1800",
+                        "------ DrmDisplayCompositor Layer: plane=21 disabled",
+                        "------ DrmDisplayCompositor Layer: plane=22 disabled",
+                        "DUMP OF SERVICE batterystats:",
+                        "Battery History (0% used, 1636 used of 256KB, 15 strings using 794):",
+                        "    0 (15) RESET:TIME: 1970-01-10-06-23-28",
+                        "          +45s702ms (2) 001 80080000 volt=4187",
+                        "          +1m15s525ms (2) 001 80080000 temp=299 volt=4155",
+                        "Statistics since last charged:",
+                        "  Time on battery: 1h 5m 2s 4ms (9%) realtime, 1h 5m 2s 4ms (9%) uptime",
+                        " Time on battery screen off: 1h 4m 5s 8ms (9%) realtime, 1h 4m 5s 8ms (9%) uptime",
+                        " All kernel wake locks:",
+                        " Kernel Wake lock PowerManagerService.WakeLocks: 5m 10s 6ms (2 times) realtime",
+                        " Kernel Wake lock msm_serial_hs_rx: 2m 13s 612ms (258 times) realtime",
+                        "",
+                        "  All partial wake locks:",
+                        "  Wake lock 1001 ProxyController: 1h 4m 47s 565ms (4 times) realtime",
+                        "  Wake lock 1013 AudioMix: 1s 979ms (3 times) realtime",
+                        "",
+                        "  All wakeup reasons:",
+                        "  Wakeup reason 2:bcmsdh_sdmmc:2:qcom,smd:2:msmgio: 1m 5s 4ms (2 times) realtime",
+                        "  Wakeup reason 2:qcom,smd-rpm:2:fc4c.qcom,spmi: 7m 1s 914ms (7 times) realtime",
+                        "DUMP OF SERVICE package:",
+                        "Package [com.google.android.calculator] (e075c9d):",
+                        "  use rId=10071",
+                        "  secondaryCpuAbi=null",
+                        "  versionCode=73000302 minSdk=10000 targetSdk=10000",
+                        "  versionName=7.3 (3821978)",
+                        "  splits=[base]",
+                        "DUMP OF SERVICE procstats:",
+                        "COMMITTED STATS FROM 2015-09-30-07-44-54:",
+                        "  * system / 1000 / v23:",
+                        "           TOTAL: 100% (118MB-118MB-118MB/71MB-71MB-71MB over 1)",
+                        "      Persistent: 100% (118MB-118MB-118MB/71MB-71MB-71MB over 1)",
+                        " * com.android.phone / 1001 / v23:",
+                        "           TOTAL: 6.7%",
+                        "      Persistent: 6.7%",
+                        "");
         BugreportItem bugreport = new BugreportParser().parse(lines);
         assertNotNull(bugreport.getDumpsys());
         assertNotNull(bugreport.getDumpsys().getBatteryStats());
+        assertNotNull(bugreport.getDumpsys().getPackageStats());
         assertNotNull(bugreport.getDumpsys().getProcStats());
     }
 
@@ -673,4 +691,3 @@
         return formatter.parse(timeStr);
     }
 }
-
diff --git a/tests/src/com/android/loganalysis/parser/DumpsysPackageStatsParserTest.java b/tests/src/com/android/loganalysis/parser/DumpsysPackageStatsParserTest.java
new file mode 100644
index 0000000..faa51b2
--- /dev/null
+++ b/tests/src/com/android/loganalysis/parser/DumpsysPackageStatsParserTest.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.loganalysis.parser;
+
+import com.android.loganalysis.item.DumpsysPackageStatsItem;
+import com.android.loganalysis.item.AppVersionItem;
+
+import junit.framework.TestCase;
+
+import java.util.Arrays;
+import java.util.List;
+
+/** Unit tests for {@link DumpsysPackageStatsParser} */
+public class DumpsysPackageStatsParserTest extends TestCase {
+
+    /** Test that normal input is parsed. */
+    public void testDumpsysPackageStatsParser() {
+        List<String> inputBlock =
+                Arrays.asList(
+                        "DUMP OF SERVICE package:",
+                        "Package [com.google.android.calculator] (e075c9d):",
+                        "  userId=10071",
+                        "  secondaryCpuAbi=null",
+                        "  versionCode=73000302 minSdk=10000 targetSdk=10000",
+                        "  versionName=7.3 (3821978)",
+                        "  splits=[base]",
+                        " Package [com.google.android.googlequicksearchbox] (607929e):",
+                        "  userId=10037",
+                        "  pkg=Package{af43294 com.google.android.googlequicksearchbox}",
+                        "  versionCode=300734793 minSdk=10000 targetSdk=10000",
+                        "  versionName=6.16.35.26.arm64",
+                        "  apkSigningVersion=2");
+
+        final DumpsysPackageStatsItem packagestats =
+                new DumpsysPackageStatsParser().parse(inputBlock);
+        assertEquals(2, packagestats.size());
+        assertNotNull(packagestats.get("com.google.android.calculator"));
+        final AppVersionItem calculator = packagestats.get("com.google.android.calculator");
+        assertEquals(73000302, calculator.getVersionCode());
+        assertEquals("7.3 (3821978)", calculator.getVersionName());
+        assertNotNull(packagestats.get("com.google.android.googlequicksearchbox"));
+        final AppVersionItem googlequicksearchbox =
+                packagestats.get("com.google.android.googlequicksearchbox");
+        assertEquals(300734793, googlequicksearchbox.getVersionCode());
+        assertEquals("6.16.35.26.arm64", googlequicksearchbox.getVersionName());
+    }
+}
diff --git a/tests/src/com/android/loganalysis/parser/DumpsysParserTest.java b/tests/src/com/android/loganalysis/parser/DumpsysParserTest.java
index a722ac6..020c724 100644
--- a/tests/src/com/android/loganalysis/parser/DumpsysParserTest.java
+++ b/tests/src/com/android/loganalysis/parser/DumpsysParserTest.java
@@ -31,99 +31,113 @@
      * Test that normal input is parsed.
      */
     public void testDumpsysParser() {
-        List<String> inputBlock = Arrays.asList(
-                "DUMP OF SERVICE batterystats:",
-                "Battery History (37% used, 95KB used of 256KB, 166 strings using 15KB):",
-                "     0 (9) RESET:TIME: 2014-12-09-11-33-29",
-                "     +1s067ms (1) 100 c0500020 -wifi_full_lock -wifi_scan",
-                "     +3s297ms (2) 100 80400020 -wake_lock -screen",
-                "     +30m02s075ms (1) 100 c0500020 wifi_signal_strength=4 wifi_suppl=completed",
-                "     +30m03s012ms (2) 099 c0500020 temp=306 volt=4217",
-                "     +33m48s967ms (1) 099 f8400020 +wifi_scan",
-                "     +33m49s335ms (2) 098 f0400020 temp=324 -wifi_scan",
-                "Statistics since last charge:",
-                " Time on battery: 2h 21m 5s 622ms (12.0%) realtime, 7m 54s 146ms (0.7%) uptime",
-                " Time on battery screen off: 2h 5m 55s 3ms (1%) realtime, 7m 4s 5ms (7%) uptime",
-                " Total run time: 19h 38m 43s 650ms realtime, 17h 25m 32s 175ms uptime",
-                " All kernel wake locks:",
-                " Kernel Wake lock PowerManagerService.WakeLocks: 1h 3m 50s 5ms (8 times) realtime",
-                " Kernel Wake lock event0-2656 : 3m 49s 268ms (2399 times) realtime",
-                " Kernel Wake lock wlan_wd_wake: 3m 34s 639ms (1751 times) realtime",
-                " Kernel Wake lock wlan_rx_wake: 3m 19s 887ms (225 times) realtime",
-                " Kernel Wake lock wlan_tx_wake: 2m 19s 887ms (225 times) realtime",
-                " Kernel Wake lock tx_wake: 1m 19s 887ms (225 times) realtime",
-                " ",
-                " All partial wake locks:",
-                " Wake lock u0a7 NlpWakeLock: 8m 13s 203ms (1479 times) realtime",
-                " Wake lock u0a7 NlpCollectorWakeLock: 6m 29s 18ms (238 times) realtime",
-                " Wake lock u0a7 GCM_CONN_ALARM: 6m 8s 587ms (239 times) realtime",
-                " Wake lock 1000 *alarm*: 5m 11s 316ms (1469 times) realtime",
-                " Wake lock u10 xxx: 4m 11s 316ms (1469 times) realtime",
-                " Wake lock u30 cst: 2m 11s 316ms (1469 times) realtime",
-                " ",
-                " All wakeup reasons:",
-                " Wakeup reason 200:qcom,smd-rpm:222:fc4: 11m 49s 332ms (0 times) realtime",
-                " Wakeup reason 200:qcom,smd-rpm: 48s 45ms (0 times) realtime",
-                " Wakeup reason 2:qcom,smd-rpm:2:f0.qm,mm:22:fc4mi: 3s 417ms (0 times) realtime",
-                " Wakeup reason 188:qcom,smd-adsp:200:qcom,smd-rpm: 1s 656ms (0 times) realtime",
-                " Wakeup reason 58:qcom,smsm-modem:2:qcom,smd-rpm: 6m 16s 1ms (5 times) realtime",
-                " Wakeup reason 57:qcom,smd-modem:200:qcom,smd-rpm: 40s 995ms (0 times) realtime",
-                " Wakeup reason unknown: 8s 455ms (0 times) realtime",
-                " Wakeup reason 9:bcmsdh_sdmmc:2:qcomd-rpm:240:mso: 8m 5s 9ms (0 times) realtime",
-                " ",
-                " 0:",
-                "    User activity: 2 other",
-                "    Wake lock SCREEN_FROZEN realtime",
-                "    Sensor 0: 9s 908ms realtime (1 times)",
-                "    Sensor 1: 9s 997ms realtime (1 times)",
-                "    Foreground for: 2h 21m 5s 622ms",
-                "    Apk android:",
-                "      24 wakeup alarms",
-                " u0a9:",
-                "    Mobile network: 8.1KB received, 1.6KB sent (packets 291 received, 342 sent)",
-                "    Mobile radio active: 3m 43s 890ms (34.2%) 39x @ 354 mspp",
-                "    Sensor 2: 12m 13s 15ms realtime (5 times)",
-                "    Sensor 32: (not used)",
-                "    Sensor 35: (not used)",
-                "DUMP OF SERVICE procstats:",
-                "COMMITTED STATS FROM 2015-03-20-02-01-02 (checked in):",
-                "  * com.android.systemui / u0a22 / v22:",
-                "           TOTAL: 100% (159MB-160MB-161MB/153MB-153MB-154MB over 13)",
-                "      Persistent: 100% (159MB-160MB-161MB/153MB-153MB-154MB over 13)",
-                "  * com.google.process.gapps / u0a9 / v22:",
-                "           TOTAL: 100% (22MB-24MB-25MB/18MB-19MB-20MB over 13)",
-                "          Imp Fg: 100% (22MB-24MB-25MB/18MB-19MB-20MB over 13)",
-                "DUMP OF SERVICE wifi:",
-                "Wi-Fi is enabled",
-                "rec[0]: time=10-09 00:25:16.737 processed=DefaultState org=DeviceActiveState "
-                + "dest=<null> what=155654(0x26006)",
-                "mScreenOff true",
-                " rec[0]: time=10-08 16:49:55.034 processed=WatchdogEnabledState org=OnlineState "
-                + "dest=OnlineWatchState what=135170(0x21002)",
-                "rec[30]: time=10-08 13:06:50.379 processed=DriverStartedState org=ConnectedState "
-                + "dest=<null> what=131143(0x20047) (1)CMD_START_SCAN  rt=4720806/7884852 10013 51 "
-                + "ic=0 proc(ms):14 onGoing full started:1444334810368,11 cnt=24 rssi=-127 f=-1 "
-                + "sc=0 link=-1 tx=1.5, 1.7, 0.0  rx=8.4 fiv=20000 [on:3266 tx:65 rx:556 "
-                + "period:1268] from screen [on:266962 period:266959]",
-                "rec[357]: time=10-08 13:10:13.199 processed=DriverStartedState org=ConnectedState "
-                + "dest=<null> what=131143(0x20047) (-2)CMD_START_SCAN  rt=4923625/8087671 10013 "
-                + "175 ic=0 proc(ms):2 onGoing full started:1444335011199,1999 cnt=24 rssi=-127 "
-                + "f=-1 sc=0 link=-1 tx=8.4, 1.7, 0.0  rx=6.7 fiv=20000 [on:0 tx:0 rx:0 period:990]"
-                + "from screen [on:467747 period:469779]",
-                "WifiConfigStore - Log Begin ----",
-                "10-08 11:09:14.653 - Event [IFNAME=wlan0 CTRL-EVENT-SCAN-STARTED ]",
-                "10-08 13:06:29.489 - Event [IFNAME=wlan0 CTRL-EVENT-DISCONNECTED "
-                + "bssid=9c:1c:12:c3:d0:72 reason=0]",
-                "10-08 13:06:22.280 - Event [IFNAME=wlan0 CTRL-EVENT-SCAN-STARTED ]",
-                "10-08 13:06:25.363 - Event [IFNAME=wlan0 CTRL-EVENT-SCAN-STARTED ]",
-                "10-08 13:08:15.018 - Event [IFNAME=wlan0 CTRL-EVENT-DISCONNECTED "
-                + "bssid=9c:1c:12:e8:72:d2 reason=3 locally_generated=1]",
-                "10-08 13:08:15.324 - wlan0: 442:IFNAME=wlan0 ENABLE_NETWORK 0 -> true");
+        List<String> inputBlock =
+                Arrays.asList(
+                        "DUMP OF SERVICE batterystats:",
+                        "Battery History (37% used, 95KB used of 256KB, 166 strings using 15KB):",
+                        "     0 (9) RESET:TIME: 2014-12-09-11-33-29",
+                        "     +1s067ms (1) 100 c0500020 -wifi_full_lock -wifi_scan",
+                        "     +3s297ms (2) 100 80400020 -wake_lock -screen",
+                        "     +30m02s075ms (1) 100 c0500020 wifi_signal_strength=4 wifi_suppl=completed",
+                        "     +30m03s012ms (2) 099 c0500020 temp=306 volt=4217",
+                        "     +33m48s967ms (1) 099 f8400020 +wifi_scan",
+                        "     +33m49s335ms (2) 098 f0400020 temp=324 -wifi_scan",
+                        "Statistics since last charge:",
+                        " Time on battery: 2h 21m 5s 622ms (12.0%) realtime, 7m 54s 146ms (0.7%) uptime",
+                        " Time on battery screen off: 2h 5m 55s 3ms (1%) realtime, 7m 4s 5ms (7%) uptime",
+                        " Total run time: 19h 38m 43s 650ms realtime, 17h 25m 32s 175ms uptime",
+                        " All kernel wake locks:",
+                        " Kernel Wake lock PowerManagerService.WakeLocks: 1h 3m 50s 5ms (8 times) realtime",
+                        " Kernel Wake lock event0-2656 : 3m 49s 268ms (2399 times) realtime",
+                        " Kernel Wake lock wlan_wd_wake: 3m 34s 639ms (1751 times) realtime",
+                        " Kernel Wake lock wlan_rx_wake: 3m 19s 887ms (225 times) realtime",
+                        " Kernel Wake lock wlan_tx_wake: 2m 19s 887ms (225 times) realtime",
+                        " Kernel Wake lock tx_wake: 1m 19s 887ms (225 times) realtime",
+                        " ",
+                        " All partial wake locks:",
+                        " Wake lock u0a7 NlpWakeLock: 8m 13s 203ms (1479 times) realtime",
+                        " Wake lock u0a7 NlpCollectorWakeLock: 6m 29s 18ms (238 times) realtime",
+                        " Wake lock u0a7 GCM_CONN_ALARM: 6m 8s 587ms (239 times) realtime",
+                        " Wake lock 1000 *alarm*: 5m 11s 316ms (1469 times) realtime",
+                        " Wake lock u10 xxx: 4m 11s 316ms (1469 times) realtime",
+                        " Wake lock u30 cst: 2m 11s 316ms (1469 times) realtime",
+                        " ",
+                        " All wakeup reasons:",
+                        " Wakeup reason 200:qcom,smd-rpm:222:fc4: 11m 49s 332ms (0 times) realtime",
+                        " Wakeup reason 200:qcom,smd-rpm: 48s 45ms (0 times) realtime",
+                        " Wakeup reason 2:qcom,smd-rpm:2:f0.qm,mm:22:fc4mi: 3s 417ms (0 times) realtime",
+                        " Wakeup reason 188:qcom,smd-adsp:200:qcom,smd-rpm: 1s 656ms (0 times) realtime",
+                        " Wakeup reason 58:qcom,smsm-modem:2:qcom,smd-rpm: 6m 16s 1ms (5 times) realtime",
+                        " Wakeup reason 57:qcom,smd-modem:200:qcom,smd-rpm: 40s 995ms (0 times) realtime",
+                        " Wakeup reason unknown: 8s 455ms (0 times) realtime",
+                        " Wakeup reason 9:bcmsdh_sdmmc:2:qcomd-rpm:240:mso: 8m 5s 9ms (0 times) realtime",
+                        " ",
+                        " 0:",
+                        "    User activity: 2 other",
+                        "    Wake lock SCREEN_FROZEN realtime",
+                        "    Sensor 0: 9s 908ms realtime (1 times)",
+                        "    Sensor 1: 9s 997ms realtime (1 times)",
+                        "    Foreground for: 2h 21m 5s 622ms",
+                        "    Apk android:",
+                        "      24 wakeup alarms",
+                        " u0a9:",
+                        "    Mobile network: 8.1KB received, 1.6KB sent (packets 291 received, 342 sent)",
+                        "    Mobile radio active: 3m 43s 890ms (34.2%) 39x @ 354 mspp",
+                        "    Sensor 2: 12m 13s 15ms realtime (5 times)",
+                        "    Sensor 32: (not used)",
+                        "    Sensor 35: (not used)",
+                        "DUMP OF SERVICE package:",
+                        "Package [com.google.android.calculator] (e075c9d):",
+                        "  userId=10071",
+                        "  secondaryCpuAbi=null",
+                        "  versionCode=73000302 minSdk=10000 targetSdk=10000",
+                        "  versionName=7.3 (3821978)",
+                        "  splits=[base]",
+                        "Package [com.google.android.googlequicksearchbox] (607929e):",
+                        "  userId=10037",
+                        "  pkg=Package{af43294 com.google.android.googlequicksearchbox}",
+                        "  versionCode=300734793 minSdk=10000 targetSdk=10000",
+                        "  versionName=6.16.35.26.arm64",
+                        "  apkSigningVersion=2",
+                        "DUMP OF SERVICE procstats:",
+                        "COMMITTED STATS FROM 2015-03-20-02-01-02 (checked in):",
+                        "  * com.android.systemui / u0a22 / v22:",
+                        "           TOTAL: 100% (159MB-160MB-161MB/153MB-153MB-154MB over 13)",
+                        "      Persistent: 100% (159MB-160MB-161MB/153MB-153MB-154MB over 13)",
+                        "  * com.google.process.gapps / u0a9 / v22:",
+                        "           TOTAL: 100% (22MB-24MB-25MB/18MB-19MB-20MB over 13)",
+                        "          Imp Fg: 100% (22MB-24MB-25MB/18MB-19MB-20MB over 13)",
+                        "DUMP OF SERVICE wifi:",
+                        "Wi-Fi is enabled",
+                        "rec[0]: time=10-09 00:25:16.737 processed=DefaultState org=DeviceActiveState "
+                                + "dest=<null> what=155654(0x26006)",
+                        "mScreenOff true",
+                        " rec[0]: time=10-08 16:49:55.034 processed=WatchdogEnabledState org=OnlineState "
+                                + "dest=OnlineWatchState what=135170(0x21002)",
+                        "rec[30]: time=10-08 13:06:50.379 processed=DriverStartedState org=ConnectedState "
+                                + "dest=<null> what=131143(0x20047) (1)CMD_START_SCAN  rt=4720806/7884852 10013 51 "
+                                + "ic=0 proc(ms):14 onGoing full started:1444334810368,11 cnt=24 rssi=-127 f=-1 "
+                                + "sc=0 link=-1 tx=1.5, 1.7, 0.0  rx=8.4 fiv=20000 [on:3266 tx:65 rx:556 "
+                                + "period:1268] from screen [on:266962 period:266959]",
+                        "rec[357]: time=10-08 13:10:13.199 processed=DriverStartedState org=ConnectedState "
+                                + "dest=<null> what=131143(0x20047) (-2)CMD_START_SCAN  rt=4923625/8087671 10013 "
+                                + "175 ic=0 proc(ms):2 onGoing full started:1444335011199,1999 cnt=24 rssi=-127 "
+                                + "f=-1 sc=0 link=-1 tx=8.4, 1.7, 0.0  rx=6.7 fiv=20000 [on:0 tx:0 rx:0 period:990]"
+                                + "from screen [on:467747 period:469779]",
+                        "WifiConfigStore - Log Begin ----",
+                        "10-08 11:09:14.653 - Event [IFNAME=wlan0 CTRL-EVENT-SCAN-STARTED ]",
+                        "10-08 13:06:29.489 - Event [IFNAME=wlan0 CTRL-EVENT-DISCONNECTED "
+                                + "bssid=9c:1c:12:c3:d0:72 reason=0]",
+                        "10-08 13:06:22.280 - Event [IFNAME=wlan0 CTRL-EVENT-SCAN-STARTED ]",
+                        "10-08 13:06:25.363 - Event [IFNAME=wlan0 CTRL-EVENT-SCAN-STARTED ]",
+                        "10-08 13:08:15.018 - Event [IFNAME=wlan0 CTRL-EVENT-DISCONNECTED "
+                                + "bssid=9c:1c:12:e8:72:d2 reason=3 locally_generated=1]",
+                        "10-08 13:08:15.324 - wlan0: 442:IFNAME=wlan0 ENABLE_NETWORK 0 -> true");
 
         DumpsysItem dumpsys = new DumpsysParser().parse(inputBlock);
         assertNotNull(dumpsys.getBatteryStats());
+        assertNotNull(dumpsys.getPackageStats());
         assertNotNull(dumpsys.getProcStats());
         assertNotNull(dumpsys.getWifiStats());
     }
 }
-
