Send the system image build fingerprint and bootloader versions.

In Android, we had STUBS for the bootloader (firmware) version, board,
and EC version. This patch populates those versions and strings based on
the system props using Android standard properties and includes the full
build.fingerprint in the request, which could be used to double-check
the request.

Bug: 35364971
Test: `update_engine_client --check_for_update` sends all this
information now.

(cherry picked from commit 094ce0bec1de7952e2ddc6c0f3c94dc3615b99c0)

Change-Id: I8265c5b8f4415f825160ea259c5b84b4b77372d7
diff --git a/image_properties_android.cc b/image_properties_android.cc
index 5ec63a5..e3b7616 100644
--- a/image_properties_android.cc
+++ b/image_properties_android.cc
@@ -20,6 +20,7 @@
 
 #include <base/logging.h>
 #include <brillo/osrelease_reader.h>
+#include <cutils/properties.h>
 
 #include "update_engine/common/boot_control_interface.h"
 #include "update_engine/common/constants.h"
@@ -40,6 +41,10 @@
 const char kPrefsImgPropChannelName[] = "img-prop-channel-name";
 const char kPrefsImgPropPowerwashAllowed[] = "img-prop-powerwash-allowed";
 
+// System properties that identifies the "board".
+const char kPropProductName[] = "ro.product.name";
+const char kPropBuildFingerprint[] = "ro.build.fingerprint";
+
 std::string GetStringWithDefault(const brillo::OsReleaseReader& osrelease,
                                  const std::string& key,
                                  const std::string& default_value) {
@@ -71,7 +76,12 @@
       GetStringWithDefault(osrelease, kProductVersion, "0");
   result.version = system_version + "." + product_version;
 
-  result.board = "brillo";
+  char prop[PROPERTY_VALUE_MAX];
+  property_get(kPropProductName, prop, "brillo");
+  result.board = prop;
+
+  property_get(kPropBuildFingerprint, prop, "none");
+  result.build_fingerprint = prop;
 
   // Brillo images don't have a channel assigned. We stored the name of the
   // channel where we got the image from in prefs at the time of the update, so