diff options
| -rw-r--r-- | dexpreopt/Android.bp | 1 | ||||
| -rw-r--r-- | dexpreopt/system_server_zip.go | 49 |
2 files changed, 50 insertions, 0 deletions
diff --git a/dexpreopt/Android.bp b/dexpreopt/Android.bp index 679d06627..ea3f52bd2 100644 --- a/dexpreopt/Android.bp +++ b/dexpreopt/Android.bp @@ -9,6 +9,7 @@ bootstrap_go_package { "class_loader_context.go", "config.go", "dexpreopt.go", + "system_server_zip.go", "testing.go", ], testSrcs: [ diff --git a/dexpreopt/system_server_zip.go b/dexpreopt/system_server_zip.go new file mode 100644 index 000000000..cef847b7d --- /dev/null +++ b/dexpreopt/system_server_zip.go @@ -0,0 +1,49 @@ +package dexpreopt + +import "android/soong/android" + +func init() { + android.InitRegistrationContext.RegisterSingletonType("system_server_zip_singleton", systemServerZipSingletonFactory) +} + +func systemServerZipSingletonFactory() android.Singleton { + return &systemServerZipSingleton{} +} + +type systemServerZipSingleton struct{} + +func (s *systemServerZipSingleton) GenerateBuildActions(ctx android.SingletonContext) { + global := GetGlobalConfig(ctx) + if global.DisablePreopt || global.OnlyPreoptArtBootImage { + return + } + + systemServerDexjarsDir := android.PathForOutput(ctx, SystemServerDexjarsDir) + + out := android.PathForOutput(ctx, "system_server.zip") + builder := android.NewRuleBuilder(pctx, ctx) + cmd := builder.Command().BuiltTool("soong_zip"). + FlagWithOutput("-o ", out). + FlagWithArg("-C ", systemServerDexjarsDir.String()) + + for i := 0; i < global.SystemServerJars.Len(); i++ { + jar := global.SystemServerJars.Jar(i) + ".jar" + cmd.FlagWithInput("-f ", systemServerDexjarsDir.Join(ctx, jar)) + } + for i := 0; i < global.StandaloneSystemServerJars.Len(); i++ { + jar := global.StandaloneSystemServerJars.Jar(i) + ".jar" + cmd.FlagWithInput("-f ", systemServerDexjarsDir.Join(ctx, jar)) + } + for i := 0; i < global.ApexSystemServerJars.Len(); i++ { + jar := global.ApexSystemServerJars.Jar(i) + ".jar" + cmd.FlagWithInput("-f ", systemServerDexjarsDir.Join(ctx, jar)) + } + for i := 0; i < global.ApexStandaloneSystemServerJars.Len(); i++ { + jar := global.ApexStandaloneSystemServerJars.Jar(i) + ".jar" + cmd.FlagWithInput("-f ", systemServerDexjarsDir.Join(ctx, jar)) + } + + builder.Build("system_server_zip", "building system_server.zip") + + ctx.DistForGoal("droidcore", out) +} |