cmd/gomobile: follow the symlink if assets is a symlink

Fixes golang/go#12713.

Change-Id: Ie63a48b2ab3f39d6481fab702e00c762587501b2
Reviewed-on: https://go-review.googlesource.com/14824
Reviewed-by: David Crawshaw <crawshaw@golang.org>
diff --git a/cmd/gomobile/build_androidapp.go b/cmd/gomobile/build_androidapp.go
index c489381..1f6a230 100644
--- a/cmd/gomobile/build_androidapp.go
+++ b/cmd/gomobile/build_androidapp.go
@@ -179,6 +179,11 @@
 		assetsDirExists = fi.IsDir()
 	}
 	if assetsDirExists {
+		// if assets is a symlink, follow the symlink.
+		assetsDir, err = filepath.EvalSymlinks(assetsDir)
+		if err != nil {
+			return nil, err
+		}
 		err = filepath.Walk(assetsDir, func(path string, info os.FileInfo, err error) error {
 			if err != nil {
 				return err
diff --git a/cmd/gomobile/build_iosapp.go b/cmd/gomobile/build_iosapp.go
index 48bb19d..9c78a02 100644
--- a/cmd/gomobile/build_iosapp.go
+++ b/cmd/gomobile/build_iosapp.go
@@ -140,7 +140,11 @@
 		// skip walking through to deep copy.
 		return nil
 	}
-
+	// if assets is a symlink, follow the symlink.
+	srcAssets, err = filepath.EvalSymlinks(srcAssets)
+	if err != nil {
+		return err
+	}
 	return filepath.Walk(srcAssets, func(path string, info os.FileInfo, err error) error {
 		if err != nil {
 			return err