diff --git a/Android.mk b/Android.mk
index cc06643..f02794c 100644
--- a/Android.mk
+++ b/Android.mk
@@ -466,7 +466,7 @@
 LOCAL_SRC_FILES := \
     boot_control_recovery.cc \
     hardware_android.cc \
-    metrics_reporter_android.cc \
+    metrics_reporter_stub.cc \
     metrics_utils.cc \
     network_selector_stub.cc \
     proxy_resolver.cc \
diff --git a/metrics_reporter_android.cc b/metrics_reporter_android.cc
index bdc245e..869c4db 100644
--- a/metrics_reporter_android.cc
+++ b/metrics_reporter_android.cc
@@ -16,28 +16,24 @@
 
 #include "update_engine/metrics_reporter_android.h"
 
-#ifndef _UE_SIDELOAD
+#include <memory>
 #include <string>
 
 #include <metricslogger/metrics_logger.h>
 
 #include "update_engine/common/constants.h"
-#endif  // _UE_SIDELOAD
 
 namespace {
-#ifndef _UE_SIDELOAD
 void LogHistogram(const std::string& metrics, int value) {
   android::metricslogger::LogHistogram(metrics, value);
   LOG(INFO) << "uploading " << value << "to histogram for metric " << metrics;
 }
-#endif
 }  // namespace
 
 namespace chromeos_update_engine {
 
 namespace metrics {
 
-#ifndef _UE_SIDELOAD
 // The histograms are defined in:
 // depot/google3/analysis/uma/configs/clearcut/TRON/histograms.xml
 constexpr char kMetricsUpdateEngineAttemptNumber[] =
@@ -65,7 +61,11 @@
     "ota_update_engine_successful_update_payload_type";
 constexpr char kMetricsUpdateEngineSuccessfulUpdateRebootCount[] =
     "ota_update_engine_successful_update_reboot_count";
-#endif
+
+std::unique_ptr<MetricsReporterInterface> CreateMetricsReporter() {
+  return std::make_unique<MetricsReporterAndroid>();
+}
+
 }  // namespace metrics
 
 void MetricsReporterAndroid::ReportUpdateAttemptMetrics(
@@ -77,8 +77,6 @@
     int64_t payload_size,
     metrics::AttemptResult attempt_result,
     ErrorCode error_code) {
-// No need to log histogram under sideload mode.
-#ifndef _UE_SIDELOAD
   LogHistogram(metrics::kMetricsUpdateEngineAttemptNumber, attempt_number);
   LogHistogram(metrics::kMetricsUpdateEngineAttemptPayloadType,
                static_cast<int>(payload_type));
@@ -95,7 +93,6 @@
                static_cast<int>(attempt_result));
   LogHistogram(metrics::kMetricsUpdateEngineAttemptErrorCode,
                static_cast<int>(error_code));
-#endif
 }
 
 void MetricsReporterAndroid::ReportSuccessfulUpdateMetrics(
@@ -108,7 +105,6 @@
     base::TimeDelta total_duration,
     int reboot_count,
     int /* url_switch_count */) {
-#ifndef _UE_SIDELOAD
   LogHistogram(metrics::kMetricsUpdateEngineSuccessfulUpdateAttemptCount,
                attempt_count);
   LogHistogram(metrics::kMetricsUpdateEngineSuccessfulUpdatePayloadType,
@@ -123,15 +119,12 @@
       total_duration.InMinutes());
   LogHistogram(metrics::kMetricsUpdateEngineSuccessfulUpdateRebootCount,
                reboot_count);
-#endif
 }
 
 void MetricsReporterAndroid::ReportAbnormallyTerminatedUpdateAttemptMetrics() {
-#ifndef _UE_SIDELOAD
   int attempt_result =
       static_cast<int>(metrics::AttemptResult::kAbnormalTermination);
   LogHistogram(metrics::kMetricsUpdateEngineAttemptResult, attempt_result);
-#endif
 }
 
 };  // namespace chromeos_update_engine
diff --git a/metrics_reporter_interface.h b/metrics_reporter_interface.h
index bc9d387..2c7ce5b 100644
--- a/metrics_reporter_interface.h
+++ b/metrics_reporter_interface.h
@@ -17,6 +17,8 @@
 #ifndef UPDATE_ENGINE_METRICS_REPORTER_INTERFACE_H_
 #define UPDATE_ENGINE_METRICS_REPORTER_INTERFACE_H_
 
+#include <memory>
+
 #include <base/time/time.h>
 
 #include "update_engine/common/constants.h"
@@ -29,6 +31,12 @@
 enum class ServerToCheck;
 enum class CertificateCheckResult;
 
+namespace metrics {
+
+std::unique_ptr<MetricsReporterInterface> CreateMetricsReporter();
+
+}  // namespace metrics
+
 class MetricsReporterInterface {
  public:
   virtual ~MetricsReporterInterface() = default;
diff --git a/metrics_reporter_omaha.cc b/metrics_reporter_omaha.cc
index 5f24cbf..0397b83 100644
--- a/metrics_reporter_omaha.cc
+++ b/metrics_reporter_omaha.cc
@@ -112,6 +112,10 @@
     "UpdateEngine.InstallDateProvisioningSource";
 const char kMetricTimeToRebootMinutes[] = "UpdateEngine.TimeToRebootMinutes";
 
+std::unique_ptr<MetricsReporterInterface> CreateMetricsReporter() {
+  return std::make_unique<MetricsReporterOmaha>();
+}
+
 }  // namespace metrics
 
 MetricsReporterOmaha::MetricsReporterOmaha()
diff --git a/metrics_reporter_stub.cc b/metrics_reporter_stub.cc
new file mode 100644
index 0000000..81664a5
--- /dev/null
+++ b/metrics_reporter_stub.cc
@@ -0,0 +1,31 @@
+//
+// 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.
+//
+
+#include "update_engine/metrics_reporter_stub.h"
+
+#include <memory>
+
+namespace chromeos_update_engine {
+
+namespace metrics {
+
+std::unique_ptr<MetricsReporterInterface> CreateMetricsReporter() {
+  return std::make_unique<MetricsReporterStub>();
+}
+
+}  // namespace metrics
+
+}  // namespace chromeos_update_engine
diff --git a/metrics_reporter_stub.h b/metrics_reporter_stub.h
new file mode 100644
index 0000000..d0f75ab
--- /dev/null
+++ b/metrics_reporter_stub.h
@@ -0,0 +1,88 @@
+//
+// 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.
+//
+
+#ifndef UPDATE_ENGINE_METRICS_REPORTER_STUB_H_
+#define UPDATE_ENGINE_METRICS_REPORTER_STUB_H_
+
+#include "update_engine/common/error_code.h"
+#include "update_engine/metrics_constants.h"
+#include "update_engine/metrics_reporter_interface.h"
+
+namespace chromeos_update_engine {
+
+class MetricsReporterStub : public MetricsReporterInterface {
+ public:
+  MetricsReporterStub() = default;
+
+  ~MetricsReporterStub() override = default;
+
+  void Initialize() override {}
+
+  void ReportRollbackMetrics(metrics::RollbackResult result) override {}
+
+  void ReportDailyMetrics(base::TimeDelta os_age) override {}
+
+  void ReportUpdateCheckMetrics(
+      SystemState* system_state,
+      metrics::CheckResult result,
+      metrics::CheckReaction reaction,
+      metrics::DownloadErrorCode download_error_code) override {}
+
+  void ReportUpdateAttemptMetrics(SystemState* system_state,
+                                  int attempt_number,
+                                  PayloadType payload_type,
+                                  base::TimeDelta duration,
+                                  base::TimeDelta duration_uptime,
+                                  int64_t payload_size,
+                                  metrics::AttemptResult attempt_result,
+                                  ErrorCode internal_error_code) override {}
+
+  void ReportUpdateAttemptDownloadMetrics(
+      int64_t payload_bytes_downloaded,
+      int64_t payload_download_speed_bps,
+      DownloadSource download_source,
+      metrics::DownloadErrorCode payload_download_error_code,
+      metrics::ConnectionType connection_type) override {}
+
+  void ReportAbnormallyTerminatedUpdateAttemptMetrics() override {}
+
+  void ReportSuccessfulUpdateMetrics(
+      int attempt_count,
+      int updates_abandoned_count,
+      PayloadType payload_type,
+      int64_t payload_size,
+      int64_t num_bytes_downloaded[kNumDownloadSources],
+      int download_overhead_percentage,
+      base::TimeDelta total_duration,
+      int reboot_count,
+      int url_switch_count) override {}
+
+  void ReportCertificateCheckMetrics(ServerToCheck server_to_check,
+                                     CertificateCheckResult result) override {}
+
+  void ReportFailedUpdateCount(int target_attempt) override {}
+
+  void ReportTimeToReboot(int time_to_reboot_minutes) override {}
+
+  void ReportInstallDateProvisioningSource(int source, int max) override {}
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(MetricsReporterStub);
+};
+
+}  // namespace chromeos_update_engine
+
+#endif  // UPDATE_ENGINE_METRICS_REPORTER_STUB_H_
diff --git a/update_attempter_android.cc b/update_attempter_android.cc
index dbddfe3..6d67000 100644
--- a/update_attempter_android.cc
+++ b/update_attempter_android.cc
@@ -34,7 +34,7 @@
 #include "update_engine/common/file_fetcher.h"
 #include "update_engine/common/utils.h"
 #include "update_engine/daemon_state_interface.h"
-#include "update_engine/metrics_reporter_android.h"
+#include "update_engine/metrics_reporter_interface.h"
 #include "update_engine/metrics_utils.h"
 #include "update_engine/network_selector.h"
 #include "update_engine/payload_consumer/download_action.h"
@@ -92,8 +92,8 @@
       boot_control_(boot_control),
       hardware_(hardware),
       processor_(new ActionProcessor()),
-      clock_(new Clock()),
-      metrics_reporter_(new MetricsReporterAndroid()) {
+      clock_(new Clock()) {
+  metrics_reporter_ = metrics::CreateMetricsReporter();
   network_selector_ = network::CreateNetworkSelector();
 }
 
