Empty attribute values in styles should be strings

In aapt1, if you specified the value of an attribute in a style as an
empty string (eg. <item name="my_attr"></item>), the encoded value would
be an empty string. In aapt2 currently, @null is encoded instead. This
change restores aapt1 behavior. Use @null explicitly if the desired
value is to be @null.

Bug: 133450400
Test: manual comparison of APK created by aapt1 and aapt2
<attr name="my_attr" format="string|reference" />
<style name="MyName">
    <item name="my_attr"></item>
</style>

$ aapt p -M AndroidManifest.xml -F out1.apk -S res -f

$ aapt2 compile --dir res-o compiled.flata
$ aapt2 link --manifest AndroidManifest.xml -o out2.apk compiled.flata
$ aapt2 dump out2.apk

Change-Id: I8aa0ba30379dac0b1229da525abbc5482f40114b
diff --git a/tools/aapt2/ResourceParser.cpp b/tools/aapt2/ResourceParser.cpp
index 45cea81..859fe80 100644
--- a/tools/aapt2/ResourceParser.cpp
+++ b/tools/aapt2/ResourceParser.cpp
@@ -769,16 +769,14 @@
     return std::move(string);
   }
 
-  // If the text is empty, and the value is not allowed to be a string, encode it as a @null.
-  if (util::TrimWhitespace(raw_value).empty()) {
-    return ResourceUtils::MakeNull();
-  }
-
   if (allow_raw_value) {
     // We can't parse this so return a RawString if we are allowed.
     return util::make_unique<RawString>(
         table_->string_pool.MakeRef(util::TrimWhitespace(raw_value),
                                     StringPool::Context(config_)));
+  } else if (util::TrimWhitespace(raw_value).empty()) {
+    // If the text is empty, and the value is not allowed to be a string, encode it as a @null.
+    return ResourceUtils::MakeNull();
   }
   return {};
 }