diff --git a/java/dexpreopt_bootjars.go b/java/dexpreopt_bootjars.go
index 8a6f3d1..be14be4 100644
--- a/java/dexpreopt_bootjars.go
+++ b/java/dexpreopt_bootjars.go
@@ -431,9 +431,6 @@
 	defaultImageConfig := defaultBootImageConfig(ctx)
 	profile := bootImageProfileRule(ctx, defaultImageConfig)
 
-	// Generate the updatable bootclasspath packages rule.
-	updatableBcpPackagesRule(ctx, defaultImageConfig)
-
 	// Create the default boot image.
 	d.defaultBootImage = buildBootImage(ctx, defaultImageConfig, profile)
 
@@ -887,32 +884,9 @@
 	return profile
 }
 
-func updatableBcpPackagesRule(ctx android.SingletonContext, image *bootImageConfig) android.WritablePath {
-	if ctx.Config().UnbundledBuild() {
-		return nil
-	}
-
-	global := dexpreopt.GetGlobalConfig(ctx)
-	var modules []android.Module
-	updatableModules := global.UpdatableBootJars.CopyOfJars()
-	ctx.VisitAllModules(func(module android.Module) {
-		if !isActiveModule(module) {
-			return
-		}
-		name := ctx.ModuleName(module)
-		if i := android.IndexList(name, updatableModules); i != -1 {
-			modules = append(modules, module)
-			// Do not match the same library repeatedly.
-			updatableModules = append(updatableModules[:i], updatableModules[i+1:]...)
-		}
-	})
-
-	return generateUpdatableBcpPackagesRule(ctx, image, modules)
-}
-
 // generateUpdatableBcpPackagesRule generates the rule to create the updatable-bcp-packages.txt file
 // and returns a path to the generated file.
-func generateUpdatableBcpPackagesRule(ctx android.SingletonContext, image *bootImageConfig, updatableModules []android.Module) android.WritablePath {
+func generateUpdatableBcpPackagesRule(ctx android.ModuleContext, image *bootImageConfig, updatableModules []android.Module) android.WritablePath {
 	// Collect `permitted_packages` for updatable boot jars.
 	var updatablePackages []string
 	for _, module := range updatableModules {
@@ -921,7 +895,7 @@
 			if len(pp) > 0 {
 				updatablePackages = append(updatablePackages, pp...)
 			} else {
-				ctx.Errorf("Missing permitted_packages for %s", ctx.ModuleName(module))
+				ctx.ModuleErrorf("Missing permitted_packages")
 			}
 		}
 	}
