diff --git a/android/sdk.go b/android/sdk.go
index b9220ca..533bd0e 100644
--- a/android/sdk.go
+++ b/android/sdk.go
@@ -178,7 +178,7 @@
 	// prefer=true. And one that is not versioned, not marked as prefer=true and
 	// will only be used if the equivalently named non-prebuilt module is not
 	// present.
-	AddPrebuiltModule(name string, moduleType string) BpModule
+	AddPrebuiltModule(member SdkMember, moduleType string) BpModule
 }
 
 // A set of properties for use in a .bp file.
diff --git a/cc/library.go b/cc/library.go
index 60b00b1..4faf68d 100644
--- a/cc/library.go
+++ b/cc/library.go
@@ -1435,10 +1435,10 @@
 // copy exported header files and stub *.so files
 func (mt *librarySdkMemberType) BuildSnapshot(sdkModuleContext android.ModuleContext, builder android.SnapshotBuilder, member android.SdkMember) {
 	info := organizeVariants(member)
-	buildSharedNativeLibSnapshot(sdkModuleContext, info, builder)
+	buildSharedNativeLibSnapshot(sdkModuleContext, info, builder, member)
 }
 
-func buildSharedNativeLibSnapshot(sdkModuleContext android.ModuleContext, info *nativeLibInfo, builder android.SnapshotBuilder) {
+func buildSharedNativeLibSnapshot(sdkModuleContext android.ModuleContext, info *nativeLibInfo, builder android.SnapshotBuilder, member android.SdkMember) {
 	// a function for emitting include dirs
 	printExportedDirCopyCommandsForNativeLibs := func(lib archSpecificNativeLibInfo) {
 		includeDirs := lib.exportedIncludeDirs
@@ -1489,10 +1489,10 @@
 		}
 	}
 
-	info.generatePrebuiltLibrary(sdkModuleContext, builder)
+	info.generatePrebuiltLibrary(sdkModuleContext, builder, member)
 }
 
-func (info *nativeLibInfo) generatePrebuiltLibrary(sdkModuleContext android.ModuleContext, builder android.SnapshotBuilder) {
+func (info *nativeLibInfo) generatePrebuiltLibrary(sdkModuleContext android.ModuleContext, builder android.SnapshotBuilder, member android.SdkMember) {
 
 	// a function for emitting include dirs
 	addExportedDirsForNativeLibs := func(lib archSpecificNativeLibInfo, properties android.BpPropertySet, systemInclude bool) {
@@ -1509,7 +1509,7 @@
 		properties.AddProperty(propertyName, includeDirs)
 	}
 
-	pbm := builder.AddPrebuiltModule(info.name, "cc_prebuilt_library_shared")
+	pbm := builder.AddPrebuiltModule(member, "cc_prebuilt_library_shared")
 
 	if !info.hasArchSpecificFlags {
 		addExportedDirsForNativeLibs(info.archVariants[0], pbm, false /*systemInclude*/)
diff --git a/java/droiddoc.go b/java/droiddoc.go
index 45a72e1..76cdaea 100644
--- a/java/droiddoc.go
+++ b/java/droiddoc.go
@@ -2000,6 +2000,6 @@
 	snapshotRelativeDir := filepath.Join("java", d.Name()+"_stubs_sources")
 	builder.UnzipToSnapshot(stubsSrcJar, snapshotRelativeDir)
 
-	pbm := builder.AddPrebuiltModule(sdkModuleContext.OtherModuleName(d), "prebuilt_stubs_sources")
+	pbm := builder.AddPrebuiltModule(member, "prebuilt_stubs_sources")
 	pbm.AddProperty("srcs", []string{snapshotRelativeDir})
 }
diff --git a/java/java.go b/java/java.go
index f933d8d..f58e5ba 100644
--- a/java/java.go
+++ b/java/java.go
@@ -1760,7 +1760,7 @@
 		}
 	}
 
-	module := builder.AddPrebuiltModule(sdkModuleContext.OtherModuleName(j), "java_import")
+	module := builder.AddPrebuiltModule(member, "java_import")
 	module.AddProperty("jars", []string{snapshotRelativeJavaLibPath})
 }
 
diff --git a/sdk/update.go b/sdk/update.go
index 7731fbb..c967233 100644
--- a/sdk/update.go
+++ b/sdk/update.go
@@ -368,7 +368,8 @@
 	s.zipsToMerge = append(s.zipsToMerge, tmpZipPath)
 }
 
-func (s *snapshotBuilder) AddPrebuiltModule(name string, moduleType string) android.BpModule {
+func (s *snapshotBuilder) AddPrebuiltModule(member android.SdkMember, moduleType string) android.BpModule {
+	name := member.Name()
 	if s.prebuiltModules[name] != nil {
 		panic(fmt.Sprintf("Duplicate module detected, module %s has already been added", name))
 	}
