diff --git a/java/androidmk.go b/java/androidmk.go index 7a2fe1e11..359594c12 100644 --- a/java/androidmk.go +++ b/java/androidmk.go @@ -271,6 +271,21 @@ func (a *AndroidTest) AndroidMk() android.AndroidMkData { return data } +func (a *AndroidTestHelperApp) AndroidMk() android.AndroidMkData { + data := a.AndroidApp.AndroidMk() + data.Extra = append(data.Extra, func(w io.Writer, outputFile android.Path) { + fmt.Fprintln(w, "LOCAL_MODULE_TAGS := tests") + if len(a.appTestHelperAppProperties.Test_suites) > 0 { + fmt.Fprintln(w, "LOCAL_COMPATIBILITY_SUITE :=", + strings.Join(a.appTestHelperAppProperties.Test_suites, " ")) + } else { + fmt.Fprintln(w, "LOCAL_COMPATIBILITY_SUITE := null-suite") + } + }) + + return data +} + func (a *AndroidLibrary) AndroidMk() android.AndroidMkData { data := a.Library.AndroidMk() diff --git a/java/app.go b/java/app.go index b9088c335..d21b62aec 100644 --- a/java/app.go +++ b/java/app.go @@ -30,6 +30,7 @@ import ( func init() { android.RegisterModuleType("android_app", AndroidAppFactory) android.RegisterModuleType("android_test", AndroidTestFactory) + android.RegisterModuleType("android_test_helper_app", AndroidTestHelperAppFactory) android.RegisterModuleType("android_app_certificate", AndroidAppCertificateFactory) } @@ -359,6 +360,39 @@ func AndroidTestFactory() android.Module { return module } +type appTestHelperAppProperties struct { + // list of compatibility suites (for example "cts", "vts") that the module should be + // installed into. + Test_suites []string `android:"arch_variant"` +} + +type AndroidTestHelperApp struct { + AndroidApp + + appTestHelperAppProperties appTestHelperAppProperties +} + +func AndroidTestHelperAppFactory() android.Module { + module := &AndroidTestHelperApp{} + + module.Module.deviceProperties.Optimize.Enabled = proptools.BoolPtr(true) + + module.Module.properties.Installable = proptools.BoolPtr(true) + module.appProperties.EmbedJNI = true + + module.AddProperties( + &module.Module.properties, + &module.Module.deviceProperties, + &module.Module.protoProperties, + &module.aaptProperties, + &module.appProperties, + &module.appTestHelperAppProperties) + + android.InitAndroidMultiTargetsArchModule(module, android.DeviceSupported, android.MultilibCommon) + android.InitDefaultableModule(module) + return module +} + type AndroidAppCertificate struct { android.ModuleBase properties AndroidAppCertificateProperties