Statsd: Enable host_supported for libstatslog

* libutils must be used as a static library when compiled on host
* Host does not have Android system properties and hence we cannot
  use <cutils/properties.h>. In fact, properties.cpp is not even
  compiled on host for libcutils. Therefore, this CL adds a check
  for __ANDROID__ macro before including <sys/propoerties.h> and
  before calling properties_get_bool()
* On host, statsd logging will be disabled since host does not
  use statsd for anything

Fixes: 121294178
Test: test drive statsd
Change-Id: I838ff02468c650c5f7d85e68fa5008b98f08ce8c
This commit is contained in:
Jack He
2018-12-20 00:42:31 -08:00
parent 783ec04909
commit 34a892d2f5
2 changed files with 19 additions and 1 deletions

View File

@@ -96,6 +96,7 @@ genrule {
cc_library_shared {
name: "libstatslog",
host_supported: true,
generated_sources: ["statslog.cpp"],
generated_headers: ["statslog.h"],
cflags: [
@@ -105,8 +106,19 @@ cc_library_shared {
export_generated_headers: ["statslog.h"],
shared_libs: [
"liblog",
"libutils",
"libcutils",
],
static_libs: ["libstatssocket"],
target: {
android: {
shared_libs: [
"libutils",
],
},
host: {
static_libs: [
"libutils",
],
},
},
}

View File

@@ -108,7 +108,9 @@ static int write_stats_log_cpp(FILE *out, const Atoms &atoms,
fprintf(out, "#include <mutex>\n");
fprintf(out, "#include <chrono>\n");
fprintf(out, "#include <thread>\n");
fprintf(out, "#ifdef __ANDROID__\n");
fprintf(out, "#include <cutils/properties.h>\n");
fprintf(out, "#endif\n");
fprintf(out, "#include <stats_event_list.h>\n");
fprintf(out, "#include <log/log.h>\n");
fprintf(out, "#include <statslog.h>\n");
@@ -119,7 +121,11 @@ static int write_stats_log_cpp(FILE *out, const Atoms &atoms,
fprintf(out, "namespace util {\n");
fprintf(out, "// the single event tag id for all stats logs\n");
fprintf(out, "const static int kStatsEventTag = 1937006964;\n");
fprintf(out, "#ifdef __ANDROID__\n");
fprintf(out, "const static bool kStatsdEnabled = property_get_bool(\"ro.statsd.enable\", true);\n");
fprintf(out, "#else\n");
fprintf(out, "const static bool kStatsdEnabled = false;\n");
fprintf(out, "#endif\n");
std::set<string> kTruncatingAtomNames = {"mobile_radio_power_state_changed",
"audio_state_changed",