diff --git a/cmds/statsd/Android.bp b/cmds/statsd/Android.bp
index c79b0ca..cb27325 100644
--- a/cmds/statsd/Android.bp
+++ b/cmds/statsd/Android.bp
@@ -138,6 +138,7 @@
         "libprotoutil",
         "libservices",
         "libstatslog",
+        "libstatssocket",
         "libsysutils",
         "libtimestats_proto",
         "libutils",
diff --git a/cmds/statsd/src/external/GpuStatsPuller.cpp b/cmds/statsd/src/external/GpuStatsPuller.cpp
index bbdb540..d38b87f 100644
--- a/cmds/statsd/src/external/GpuStatsPuller.cpp
+++ b/cmds/statsd/src/external/GpuStatsPuller.cpp
@@ -92,9 +92,15 @@
                 android::util::GPU_STATS_APP_INFO, getWallClockNs(), getElapsedRealtimeNs());
         if (!event->write(info.appPackageName)) return false;
         if (!event->write((int64_t)info.driverVersionCode)) return false;
-        if (!event->write(int64VectorToProtoByteString(info.glDriverLoadingTime))) return false;
-        if (!event->write(int64VectorToProtoByteString(info.vkDriverLoadingTime))) return false;
-        if (!event->write(int64VectorToProtoByteString(info.angleDriverLoadingTime))) return false;
+        if (!event->writeBytes(int64VectorToProtoByteString(info.glDriverLoadingTime)))  {
+            return false;
+        }
+        if (!event->writeBytes(int64VectorToProtoByteString(info.vkDriverLoadingTime))) {
+            return false;
+        }
+        if (!event->writeBytes(int64VectorToProtoByteString(info.angleDriverLoadingTime))) {
+            return false;
+        }
         if (!event->write(info.cpuVulkanInUse)) return false;
         if (!event->write(info.falsePrerotation)) return false;
         event->init();
diff --git a/cmds/statsd/src/logd/LogEvent.cpp b/cmds/statsd/src/logd/LogEvent.cpp
index 0ade5311..fd19c9d 100644
--- a/cmds/statsd/src/logd/LogEvent.cpp
+++ b/cmds/statsd/src/logd/LogEvent.cpp
@@ -332,6 +332,13 @@
     return false;
 }
 
+bool LogEvent::writeBytes(const string& value) {
+    if (mContext) {
+        return android_log_write_char_array(mContext, value.c_str(), value.length()) >= 0;
+    }
+    return false;
+}
+
 bool LogEvent::writeKeyValuePairs(int32_t uid,
                                   const std::map<int32_t, int32_t>& int_map,
                                   const std::map<int32_t, int64_t>& long_map,
diff --git a/cmds/statsd/src/logd/LogEvent.h b/cmds/statsd/src/logd/LogEvent.h
index 531ce29..f1f45a2 100644
--- a/cmds/statsd/src/logd/LogEvent.h
+++ b/cmds/statsd/src/logd/LogEvent.h
@@ -21,9 +21,9 @@
 #include <android/frameworks/stats/1.0/types.h>
 #include <android/os/StatsLogEventWrapper.h>
 #include <android/util/ProtoOutputStream.h>
-#include <log/log_event_list.h>
 #include <log/log_read.h>
 #include <private/android_logger.h>
+#include <stats_event_list.h>
 #include <utils/Errors.h>
 
 #include <string>
@@ -157,6 +157,7 @@
     bool write(float value);
     bool write(const std::vector<AttributionNodeInternal>& nodes);
     bool write(const AttributionNodeInternal& node);
+    bool writeBytes(const std::string& value);
     bool writeKeyValuePairs(int32_t uid,
                             const std::map<int32_t, int32_t>& int_map,
                             const std::map<int32_t, int64_t>& long_map,
diff --git a/cmds/statsd/tests/LogEvent_test.cpp b/cmds/statsd/tests/LogEvent_test.cpp
index 504ee22..0743480 100644
--- a/cmds/statsd/tests/LogEvent_test.cpp
+++ b/cmds/statsd/tests/LogEvent_test.cpp
@@ -582,7 +582,7 @@
     event1.write((int32_t)stats::launcher::LauncherAction::LONGPRESS);
     event1.write((int32_t)stats::launcher::LauncherState::OVERVIEW);
     event1.write((int64_t)stats::launcher::LauncherState::ALLAPPS);
-    event1.write(extension_str);
+    event1.writeBytes(extension_str);
     event1.init();
 
     ProtoOutputStream proto;
@@ -621,7 +621,7 @@
     event1.write((int32_t)stats::launcher::LauncherAction::LONGPRESS);
     event1.write((int32_t)stats::launcher::LauncherState::OVERVIEW);
     event1.write((int64_t)stats::launcher::LauncherState::ALLAPPS);
-    event1.write(extension_str);
+    event1.writeBytes(extension_str);
     event1.init();
 
     ProtoOutputStream proto;
