Copy apex_available properties to snapshot modules

Bug: 142935992
Test: m nothing
Change-Id: I1cdaae5b4e13a89dc46541dacd34ef5a44735b6a
diff --git a/sdk/update.go b/sdk/update.go
index 087b8bc..b335777 100644
--- a/sdk/update.go
+++ b/sdk/update.go
@@ -550,6 +550,8 @@
 	m := s.bpFile.newModule(moduleType)
 	m.AddProperty("name", name)
 
+	variant := member.Variants()[0]
+
 	if s.sdk.isInternalMember(name) {
 		// An internal member is only referenced from the sdk snapshot which is in the
 		// same package so can be marked as private.
@@ -557,7 +559,7 @@
 	} else {
 		// Extract visibility information from a member variant. All variants have the same
 		// visibility so it doesn't matter which one is used.
-		visibility := android.EffectiveVisibilityRules(s.ctx, member.Variants()[0])
+		visibility := android.EffectiveVisibilityRules(s.ctx, variant)
 		if len(visibility) != 0 {
 			m.AddProperty("visibility", visibility)
 		}
@@ -565,6 +567,14 @@
 
 	addHostDeviceSupportedProperties(&s.sdk.ModuleBase, m)
 
+	// Where available copy apex_available properties from the member.
+	if apexAware, ok := variant.(interface{ ApexAvailable() []string }); ok {
+		apexAvailable := apexAware.ApexAvailable()
+		if len(apexAvailable) > 0 {
+			m.AddProperty("apex_available", apexAvailable)
+		}
+	}
+
 	s.prebuiltModules[name] = m
 	s.prebuiltOrder = append(s.prebuiltOrder, m)
 	return m