Fix the issue "\n" didn't get interpreted properly.

Added params to WriteFile rule that allow users to turn on the
specific 'echo' options, such as "enable the interpretation of backslash
escapes".

Bug: b/38261000
Test: tested with real data files.
Change-Id: I5145056b5c2522a3a72b9436055ec95d2fbd94c0
diff --git a/android/defs.go b/android/defs.go
index 6f46316..a7ba219 100644
--- a/android/defs.go
+++ b/android/defs.go
@@ -80,9 +80,12 @@
 			Description: "concatenate licenses $out",
 		})
 
+	// ubuntu 14.04 offcially use dash for /bin/sh, and its builtin echo command
+	// doesn't support -e option. Therefore we force to use /bin/bash when writing out
+	// content to file.
 	WriteFile = pctx.AndroidStaticRule("WriteFile",
 		blueprint.RuleParams{
-			Command:     "echo '$content' > $out",
+			Command:     "/bin/bash -c 'echo -e $$0 > $out' '$content'",
 			Description: "writing file $out",
 		},
 		"content")
diff --git a/python/builder.go b/python/builder.go
index 541d2bf..b823fcb 100644
--- a/python/builder.go
+++ b/python/builder.go
@@ -82,7 +82,7 @@
 		Output:      fileList,
 		Implicits:   files,
 		Args: map[string]string{
-			"content": strings.Join(content, "\n"),
+			"content": strings.Join(content, `\n`),
 		},
 	})