Allow exporting of sdk members to be done per tag

Previously, every module added to an sdk directly through one of the
SdkMemberType specific properties, e.g. java_libs, was exported and
every module added automatically via a transitive dependencies was not
exported. This change allows that behavior to be customized per tag.

Bug: 186290299
Test: m art-module-sdk
      - verify that this change does not affect its contents.
Change-Id: I563b5bcd823e61c23cdb706cfcbb13337963d550
diff --git a/sdk/update.go b/sdk/update.go
index 8b75da2..43ec926 100644
--- a/sdk/update.go
+++ b/sdk/update.go
@@ -130,7 +130,8 @@
 			// Keep track of which multilib variants are used by the sdk.
 			s.multilibUsages = s.multilibUsages.addArchType(child.Target().Arch.ArchType)
 
-			s.memberVariantDeps = append(s.memberVariantDeps, sdkMemberVariantDep{memberType, child.(android.SdkAware)})
+			export := memberTag.ExportMember()
+			s.memberVariantDeps = append(s.memberVariantDeps, sdkMemberVariantDep{memberType, child.(android.SdkAware), export})
 
 			// If the member type supports transitive sdk members then recurse down into
 			// its dependencies, otherwise exit traversal.
@@ -226,12 +227,12 @@
 		// Record the names of all the members, both explicitly specified and implicitly
 		// included.
 		for _, memberVariantDep := range sdkVariant.memberVariantDeps {
-			allMembersByName[memberVariantDep.variant.Name()] = struct{}{}
-		}
+			name := memberVariantDep.variant.Name()
+			allMembersByName[name] = struct{}{}
 
-		// Merge the exported member sets from all sdk variants.
-		for key, _ := range sdkVariant.getExportedMembers() {
-			exportedMembersByName[key] = struct{}{}
+			if memberVariantDep.export {
+				exportedMembersByName[name] = struct{}{}
+			}
 		}
 	}
 
@@ -944,6 +945,7 @@
 type sdkMemberVariantDep struct {
 	memberType android.SdkMemberType
 	variant    android.SdkAware
+	export     bool
 }
 
 var _ android.SdkMember = (*sdkMember)(nil)