Improved error message when multiple annotations.

Old:
Check failed: values.size() == 2u (values.size()=3, 2u=2) Currently only \
signature and one flag are supported

New:
Check failed: flags.size() == 1u (flags.size()=2, 1u=1)
out/target/common/obj/PACKAGING/hiddenapi-flags.csv:36125
Landroid/content/om/OverlayInfo;->isEnabled()Z: Expected one flag, found 2:
greylist,whitelist
See go/hiddenapi-error for help.

Test: m
Change-Id: Iab4bef5d24e416ea43e0302f898fc987f3158489
diff --git a/tools/hiddenapi/hiddenapi.cc b/tools/hiddenapi/hiddenapi.cc
index 6af822d..86e5f54 100644
--- a/tools/hiddenapi/hiddenapi.cc
+++ b/tools/hiddenapi/hiddenapi.cc
@@ -34,6 +34,8 @@
 
 namespace art {
 
+const char kErrorHelp[] = "\nSee go/hiddenapi-error for help.";
+
 static int original_argc;
 static char** original_argv;
 
@@ -983,16 +985,27 @@
 
     std::map<std::string, hiddenapi::ApiList> api_flag_map;
 
-    for (std::string line; std::getline(api_file, line);) {
+    int line_number = 1;
+    for (std::string line; std::getline(api_file, line); line_number++) {
       std::vector<std::string> values = android::base::Split(line, ",");
-      CHECK_EQ(values.size(), 2u) << "Currently only signature and one flag are supported";
-
+      CHECK_GT(values.size(), 1u) << path << ":" << line_number << ": No flags found"
+          << kErrorHelp;
       const std::string& signature = values[0];
-      CHECK(api_flag_map.find(signature) == api_flag_map.end()) << "Duplicate entry: " << signature;
+
+      CHECK(api_flag_map.find(signature) == api_flag_map.end()) << "Duplicate entry in " << path
+          << ": " << signature << kErrorHelp;
+
+      int numFlags = values.size() - 1;
+
+      CHECK_EQ(numFlags, 1) << "\n" << path << ":" << line_number << "\n"
+          << signature << ": Expected one flag, found " << numFlags << ":\n"
+          << ::android::base::Join(std::vector<std::string>(values.begin() + 1, values.end()), ",")
+          << kErrorHelp;
 
       const std::string& flag_str = values[1];
       hiddenapi::ApiList membership = hiddenapi::ApiList::FromName(flag_str);
-      CHECK(membership.IsValid()) << "Unknown ApiList name: " << flag_str;
+      CHECK(membership.IsValid()) << path << ":" << line_number << ": Unknown ApiList name: "
+          << flag_str << kErrorHelp;
 
       api_flag_map.emplace(signature, membership);
     }