Merge changes from topic "aconfig_dump_map" into main am: 25c187cc7d
am: 1ed5d5ca20
am: 1befeeb5e8
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/2854663 Change-Id: I18069b9fa74f1c72527bff397c61bc5510e7a684 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -20,6 +20,7 @@ import (
|
|||||||
|
|
||||||
"android/soong/android"
|
"android/soong/android"
|
||||||
"android/soong/bazel"
|
"android/soong/bazel"
|
||||||
|
|
||||||
"github.com/google/blueprint"
|
"github.com/google/blueprint"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -118,7 +119,8 @@ func optionalVariable(prefix string, value string) string {
|
|||||||
type DeclarationsProviderData struct {
|
type DeclarationsProviderData struct {
|
||||||
Package string
|
Package string
|
||||||
Container string
|
Container string
|
||||||
IntermediatePath android.WritablePath
|
IntermediateCacheOutputPath android.WritablePath
|
||||||
|
IntermediateDumpOutputPath android.WritablePath
|
||||||
}
|
}
|
||||||
|
|
||||||
var DeclarationsProviderKey = blueprint.NewProvider(DeclarationsProviderData{})
|
var DeclarationsProviderKey = blueprint.NewProvider(DeclarationsProviderData{})
|
||||||
@@ -151,14 +153,14 @@ func (module *DeclarationsModule) GenerateAndroidBuildActions(ctx android.Module
|
|||||||
|
|
||||||
// Intermediate format
|
// Intermediate format
|
||||||
declarationFiles := android.PathsForModuleSrc(ctx, module.properties.Srcs)
|
declarationFiles := android.PathsForModuleSrc(ctx, module.properties.Srcs)
|
||||||
intermediatePath := android.PathForModuleOut(ctx, "intermediate.pb")
|
intermediateCacheFilePath := android.PathForModuleOut(ctx, "intermediate.pb")
|
||||||
defaultPermission := ctx.Config().ReleaseAconfigFlagDefaultPermission()
|
defaultPermission := ctx.Config().ReleaseAconfigFlagDefaultPermission()
|
||||||
inputFiles := make([]android.Path, len(declarationFiles))
|
inputFiles := make([]android.Path, len(declarationFiles))
|
||||||
copy(inputFiles, declarationFiles)
|
copy(inputFiles, declarationFiles)
|
||||||
inputFiles = append(inputFiles, valuesFiles...)
|
inputFiles = append(inputFiles, valuesFiles...)
|
||||||
ctx.Build(pctx, android.BuildParams{
|
ctx.Build(pctx, android.BuildParams{
|
||||||
Rule: aconfigRule,
|
Rule: aconfigRule,
|
||||||
Output: intermediatePath,
|
Output: intermediateCacheFilePath,
|
||||||
Inputs: inputFiles,
|
Inputs: inputFiles,
|
||||||
Description: "aconfig_declarations",
|
Description: "aconfig_declarations",
|
||||||
Args: map[string]string{
|
Args: map[string]string{
|
||||||
@@ -170,10 +172,19 @@ func (module *DeclarationsModule) GenerateAndroidBuildActions(ctx android.Module
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
intermediateDumpFilePath := android.PathForModuleOut(ctx, "intermediate.txt")
|
||||||
|
ctx.Build(pctx, android.BuildParams{
|
||||||
|
Rule: aconfigTextRule,
|
||||||
|
Output: intermediateDumpFilePath,
|
||||||
|
Inputs: android.Paths{intermediateCacheFilePath},
|
||||||
|
Description: "aconfig_text",
|
||||||
|
})
|
||||||
|
|
||||||
ctx.SetProvider(DeclarationsProviderKey, DeclarationsProviderData{
|
ctx.SetProvider(DeclarationsProviderKey, DeclarationsProviderData{
|
||||||
Package: module.properties.Package,
|
Package: module.properties.Package,
|
||||||
Container: module.properties.Container,
|
Container: module.properties.Container,
|
||||||
IntermediatePath: intermediatePath,
|
IntermediateCacheOutputPath: intermediateCacheFilePath,
|
||||||
|
IntermediateDumpOutputPath: intermediateDumpFilePath,
|
||||||
})
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -182,8 +193,8 @@ func CollectDependencyAconfigFiles(ctx android.ModuleContext, mergedAconfigFiles
|
|||||||
*mergedAconfigFiles = make(map[string]android.Paths)
|
*mergedAconfigFiles = make(map[string]android.Paths)
|
||||||
}
|
}
|
||||||
ctx.VisitDirectDeps(func(module android.Module) {
|
ctx.VisitDirectDeps(func(module android.Module) {
|
||||||
if dep := ctx.OtherModuleProvider(module, DeclarationsProviderKey).(DeclarationsProviderData); dep.IntermediatePath != nil {
|
if dep := ctx.OtherModuleProvider(module, DeclarationsProviderKey).(DeclarationsProviderData); dep.IntermediateCacheOutputPath != nil {
|
||||||
(*mergedAconfigFiles)[dep.Container] = append((*mergedAconfigFiles)[dep.Container], dep.IntermediatePath)
|
(*mergedAconfigFiles)[dep.Container] = append((*mergedAconfigFiles)[dep.Container], dep.IntermediateCacheOutputPath)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if dep := ctx.OtherModuleProvider(module, TransitiveDeclarationsInfoProvider).(TransitiveDeclarationsInfo); len(dep.AconfigFiles) > 0 {
|
if dep := ctx.OtherModuleProvider(module, TransitiveDeclarationsInfoProvider).(TransitiveDeclarationsInfo); len(dep.AconfigFiles) > 0 {
|
||||||
|
@@ -41,7 +41,10 @@ func TestAconfigDeclarations(t *testing.T) {
|
|||||||
depData := result.ModuleProvider(module, DeclarationsProviderKey).(DeclarationsProviderData)
|
depData := result.ModuleProvider(module, DeclarationsProviderKey).(DeclarationsProviderData)
|
||||||
android.AssertStringEquals(t, "package", depData.Package, "com.example.package")
|
android.AssertStringEquals(t, "package", depData.Package, "com.example.package")
|
||||||
android.AssertStringEquals(t, "container", depData.Container, "com.android.foo")
|
android.AssertStringEquals(t, "container", depData.Container, "com.android.foo")
|
||||||
if !strings.HasSuffix(depData.IntermediatePath.String(), "/intermediate.pb") {
|
if !strings.HasSuffix(depData.IntermediateCacheOutputPath.String(), "/intermediate.pb") {
|
||||||
t.Errorf("Missing intermediates path in provider: %s", depData.IntermediatePath.String())
|
t.Errorf("Missing intermediates proto path in provider: %s", depData.IntermediateCacheOutputPath.String())
|
||||||
|
}
|
||||||
|
if !strings.HasSuffix(depData.IntermediateDumpOutputPath.String(), "/intermediate.txt") {
|
||||||
|
t.Errorf("Missing intermediates text path in provider: %s", depData.IntermediateDumpOutputPath.String())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -41,7 +41,7 @@ func (this *allAconfigDeclarationsSingleton) GenerateBuildActions(ctx android.Si
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
decl := ctx.ModuleProvider(module, DeclarationsProviderKey).(DeclarationsProviderData)
|
decl := ctx.ModuleProvider(module, DeclarationsProviderKey).(DeclarationsProviderData)
|
||||||
cacheFiles = append(cacheFiles, decl.IntermediatePath)
|
cacheFiles = append(cacheFiles, decl.IntermediateCacheOutputPath)
|
||||||
})
|
})
|
||||||
|
|
||||||
// Generate build action for aconfig
|
// Generate build action for aconfig
|
||||||
|
@@ -132,7 +132,7 @@ func (this *CcAconfigLibraryCallbacks) GeneratorBuildActions(ctx cc.ModuleContex
|
|||||||
|
|
||||||
ctx.Build(pctx, android.BuildParams{
|
ctx.Build(pctx, android.BuildParams{
|
||||||
Rule: cppRule,
|
Rule: cppRule,
|
||||||
Input: declarations.IntermediatePath,
|
Input: declarations.IntermediateCacheOutputPath,
|
||||||
Outputs: []android.WritablePath{
|
Outputs: []android.WritablePath{
|
||||||
this.generatedCpp,
|
this.generatedCpp,
|
||||||
this.generatedH,
|
this.generatedH,
|
||||||
|
@@ -21,6 +21,7 @@ import (
|
|||||||
"android/soong/android"
|
"android/soong/android"
|
||||||
"android/soong/bazel"
|
"android/soong/bazel"
|
||||||
"android/soong/java"
|
"android/soong/java"
|
||||||
|
|
||||||
"github.com/google/blueprint"
|
"github.com/google/blueprint"
|
||||||
"github.com/google/blueprint/proptools"
|
"github.com/google/blueprint/proptools"
|
||||||
)
|
)
|
||||||
@@ -86,7 +87,7 @@ func (callbacks *JavaAconfigDeclarationsLibraryCallbacks) GenerateSourceJarBuild
|
|||||||
|
|
||||||
ctx.Build(pctx, android.BuildParams{
|
ctx.Build(pctx, android.BuildParams{
|
||||||
Rule: javaRule,
|
Rule: javaRule,
|
||||||
Input: declarations.IntermediatePath,
|
Input: declarations.IntermediateCacheOutputPath,
|
||||||
Output: srcJarPath,
|
Output: srcJarPath,
|
||||||
Description: "aconfig.srcjar",
|
Description: "aconfig.srcjar",
|
||||||
Args: map[string]string{
|
Args: map[string]string{
|
||||||
|
@@ -74,7 +74,7 @@ func (a *aconfigDecorator) GenerateSource(ctx rust.ModuleContext, deps rust.Path
|
|||||||
|
|
||||||
ctx.Build(pctx, android.BuildParams{
|
ctx.Build(pctx, android.BuildParams{
|
||||||
Rule: rustRule,
|
Rule: rustRule,
|
||||||
Input: declarations.IntermediatePath,
|
Input: declarations.IntermediateCacheOutputPath,
|
||||||
Outputs: []android.WritablePath{
|
Outputs: []android.WritablePath{
|
||||||
generatedSource,
|
generatedSource,
|
||||||
},
|
},
|
||||||
|
@@ -40,6 +40,19 @@ var (
|
|||||||
Restat: true,
|
Restat: true,
|
||||||
}, "release_version", "package", "declarations", "values", "default-permission")
|
}, "release_version", "package", "declarations", "values", "default-permission")
|
||||||
|
|
||||||
|
// For create-device-config-sysprops: Generate aconfig flag value map text file
|
||||||
|
aconfigTextRule = pctx.AndroidStaticRule("aconfig_text",
|
||||||
|
blueprint.RuleParams{
|
||||||
|
Command: `${aconfig} dump --format bool` +
|
||||||
|
` --cache ${in}` +
|
||||||
|
` --out ${out}.tmp` +
|
||||||
|
` && ( if cmp -s ${out}.tmp ${out} ; then rm ${out}.tmp ; else mv ${out}.tmp ${out} ; fi )`,
|
||||||
|
CommandDeps: []string{
|
||||||
|
"${aconfig}",
|
||||||
|
},
|
||||||
|
Restat: true,
|
||||||
|
})
|
||||||
|
|
||||||
// For all_aconfig_declarations: Combine all parsed_flags proto files
|
// For all_aconfig_declarations: Combine all parsed_flags proto files
|
||||||
AllDeclarationsRule = pctx.AndroidStaticRule("All_aconfig_declarations_dump",
|
AllDeclarationsRule = pctx.AndroidStaticRule("All_aconfig_declarations_dump",
|
||||||
blueprint.RuleParams{
|
blueprint.RuleParams{
|
||||||
|
@@ -202,7 +202,8 @@ var mergeAssetsRule = pctx.AndroidStaticRule("mergeAssets",
|
|||||||
func aapt2Link(ctx android.ModuleContext,
|
func aapt2Link(ctx android.ModuleContext,
|
||||||
packageRes, genJar, proguardOptions, rTxt android.WritablePath,
|
packageRes, genJar, proguardOptions, rTxt android.WritablePath,
|
||||||
flags []string, deps android.Paths,
|
flags []string, deps android.Paths,
|
||||||
compiledRes, compiledOverlay, assetPackages android.Paths, splitPackages android.WritablePaths) {
|
compiledRes, compiledOverlay, assetPackages android.Paths, splitPackages android.WritablePaths,
|
||||||
|
featureFlagsPaths android.Paths) {
|
||||||
|
|
||||||
var inFlags []string
|
var inFlags []string
|
||||||
|
|
||||||
@@ -255,6 +256,11 @@ func aapt2Link(ctx android.ModuleContext,
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, featureFlagsPath := range featureFlagsPaths {
|
||||||
|
deps = append(deps, featureFlagsPath)
|
||||||
|
inFlags = append(inFlags, "--feature-flags", "@"+featureFlagsPath.String())
|
||||||
|
}
|
||||||
|
|
||||||
// Note the absence of splitPackages. The caller is supposed to compose and provide --split flag
|
// Note the absence of splitPackages. The caller is supposed to compose and provide --split flag
|
||||||
// values via the flags parameter when it wants to split outputs.
|
// values via the flags parameter when it wants to split outputs.
|
||||||
// TODO(b/174509108): Perhaps we can process it in this func while keeping the code reasonably
|
// TODO(b/174509108): Perhaps we can process it in this func while keeping the code reasonably
|
||||||
|
@@ -351,6 +351,7 @@ type aaptBuildActionOptions struct {
|
|||||||
excludedLibs []string
|
excludedLibs []string
|
||||||
enforceDefaultTargetSdkVersion bool
|
enforceDefaultTargetSdkVersion bool
|
||||||
extraLinkFlags []string
|
extraLinkFlags []string
|
||||||
|
aconfigTextFiles android.Paths
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *aapt) buildActions(ctx android.ModuleContext, opts aaptBuildActionOptions) {
|
func (a *aapt) buildActions(ctx android.ModuleContext, opts aaptBuildActionOptions) {
|
||||||
@@ -531,7 +532,8 @@ func (a *aapt) buildActions(ctx android.ModuleContext, opts aaptBuildActionOptio
|
|||||||
transitiveAssets = android.ReverseSliceInPlace(staticDeps.assets())
|
transitiveAssets = android.ReverseSliceInPlace(staticDeps.assets())
|
||||||
}
|
}
|
||||||
aapt2Link(ctx, packageRes, srcJar, proguardOptionsFile, rTxt,
|
aapt2Link(ctx, packageRes, srcJar, proguardOptionsFile, rTxt,
|
||||||
linkFlags, linkDeps, compiledRes, compiledOverlay, transitiveAssets, splitPackages)
|
linkFlags, linkDeps, compiledRes, compiledOverlay, transitiveAssets, splitPackages,
|
||||||
|
opts.aconfigTextFiles)
|
||||||
// Extract assets from the resource package output so that they can be used later in aapt2link
|
// Extract assets from the resource package output so that they can be used later in aapt2link
|
||||||
// for modules that depend on this one.
|
// for modules that depend on this one.
|
||||||
if android.PrefixInList(linkFlags, "-A ") {
|
if android.PrefixInList(linkFlags, "-A ") {
|
||||||
@@ -1195,7 +1197,7 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
|||||||
|
|
||||||
transitiveAssets := android.ReverseSliceInPlace(staticDeps.assets())
|
transitiveAssets := android.ReverseSliceInPlace(staticDeps.assets())
|
||||||
aapt2Link(ctx, a.exportPackage, nil, proguardOptionsFile, a.rTxt,
|
aapt2Link(ctx, a.exportPackage, nil, proguardOptionsFile, a.rTxt,
|
||||||
linkFlags, linkDeps, nil, overlayRes, transitiveAssets, nil)
|
linkFlags, linkDeps, nil, overlayRes, transitiveAssets, nil, nil)
|
||||||
|
|
||||||
a.rJar = android.PathForModuleOut(ctx, "busybox/R.jar")
|
a.rJar = android.PathForModuleOut(ctx, "busybox/R.jar")
|
||||||
resourceProcessorBusyBoxGenerateBinaryR(ctx, a.rTxt, a.manifest, a.rJar, nil, true)
|
resourceProcessorBusyBoxGenerateBinaryR(ctx, a.rTxt, a.manifest, a.rJar, nil, true)
|
||||||
|
33
java/app.go
33
java/app.go
@@ -22,7 +22,9 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"android/soong/aconfig"
|
||||||
"android/soong/testing"
|
"android/soong/testing"
|
||||||
|
|
||||||
"github.com/google/blueprint"
|
"github.com/google/blueprint"
|
||||||
"github.com/google/blueprint/proptools"
|
"github.com/google/blueprint/proptools"
|
||||||
|
|
||||||
@@ -170,6 +172,9 @@ type overridableAppProperties struct {
|
|||||||
// binaries would be installed by default (in PRODUCT_PACKAGES) the other binary will be removed
|
// binaries would be installed by default (in PRODUCT_PACKAGES) the other binary will be removed
|
||||||
// from PRODUCT_PACKAGES.
|
// from PRODUCT_PACKAGES.
|
||||||
Overrides []string
|
Overrides []string
|
||||||
|
|
||||||
|
// Names of aconfig_declarations modules that specify aconfig flags that the app depends on.
|
||||||
|
Flags_packages []string
|
||||||
}
|
}
|
||||||
|
|
||||||
type AndroidApp struct {
|
type AndroidApp struct {
|
||||||
@@ -316,6 +321,10 @@ func (a *AndroidApp) OverridablePropertiesDepsMutator(ctx android.BottomUpMutato
|
|||||||
`must be names of android_app_certificate modules in the form ":module"`)
|
`must be names of android_app_certificate modules in the form ":module"`)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, aconfig_declaration := range a.overridableAppProperties.Flags_packages {
|
||||||
|
ctx.AddDependency(ctx.Module(), aconfigDeclarationTag, aconfig_declaration)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *AndroidTestHelperApp) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
func (a *AndroidTestHelperApp) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||||
@@ -500,13 +509,27 @@ func (a *AndroidApp) aaptBuildActions(ctx android.ModuleContext) {
|
|||||||
if a.Updatable() {
|
if a.Updatable() {
|
||||||
a.aapt.defaultManifestVersion = android.DefaultUpdatableModuleVersion
|
a.aapt.defaultManifestVersion = android.DefaultUpdatableModuleVersion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var aconfigTextFilePaths android.Paths
|
||||||
|
ctx.VisitDirectDepsWithTag(aconfigDeclarationTag, func(dep android.Module) {
|
||||||
|
if provider, ok := ctx.OtherModuleProvider(dep, aconfig.DeclarationsProviderKey).(aconfig.DeclarationsProviderData); ok {
|
||||||
|
aconfigTextFilePaths = append(aconfigTextFilePaths, provider.IntermediateDumpOutputPath)
|
||||||
|
} else {
|
||||||
|
ctx.ModuleErrorf("Only aconfig_declarations module type is allowed for "+
|
||||||
|
"flags_packages property, but %s is not aconfig_declarations module type",
|
||||||
|
dep.Name(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
a.aapt.buildActions(ctx,
|
a.aapt.buildActions(ctx,
|
||||||
aaptBuildActionOptions{
|
aaptBuildActionOptions{
|
||||||
android.SdkContext(a),
|
sdkContext: android.SdkContext(a),
|
||||||
a.classLoaderContexts,
|
classLoaderContexts: a.classLoaderContexts,
|
||||||
a.usesLibraryProperties.Exclude_uses_libs,
|
excludedLibs: a.usesLibraryProperties.Exclude_uses_libs,
|
||||||
a.enforceDefaultTargetSdkVersion(),
|
enforceDefaultTargetSdkVersion: a.enforceDefaultTargetSdkVersion(),
|
||||||
aaptLinkFlags,
|
extraLinkFlags: aaptLinkFlags,
|
||||||
|
aconfigTextFiles: aconfigTextFilePaths,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@@ -4333,3 +4333,48 @@ func TestApexGlobalMinSdkVersionOverride(t *testing.T) {
|
|||||||
)
|
)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestAppFlagsPackages(t *testing.T) {
|
||||||
|
ctx := testApp(t, `
|
||||||
|
android_app {
|
||||||
|
name: "foo",
|
||||||
|
srcs: ["a.java"],
|
||||||
|
sdk_version: "current",
|
||||||
|
flags_packages: [
|
||||||
|
"bar",
|
||||||
|
"baz",
|
||||||
|
],
|
||||||
|
}
|
||||||
|
aconfig_declarations {
|
||||||
|
name: "bar",
|
||||||
|
package: "com.example.package",
|
||||||
|
srcs: [
|
||||||
|
"bar.aconfig",
|
||||||
|
],
|
||||||
|
}
|
||||||
|
aconfig_declarations {
|
||||||
|
name: "baz",
|
||||||
|
package: "com.example.package",
|
||||||
|
srcs: [
|
||||||
|
"baz.aconfig",
|
||||||
|
],
|
||||||
|
}
|
||||||
|
`)
|
||||||
|
|
||||||
|
foo := ctx.ModuleForTests("foo", "android_common")
|
||||||
|
|
||||||
|
// android_app module depends on aconfig_declarations listed in flags_packages
|
||||||
|
android.AssertBoolEquals(t, "foo expected to depend on bar", true,
|
||||||
|
CheckModuleHasDependency(t, ctx, "foo", "android_common", "bar"))
|
||||||
|
|
||||||
|
android.AssertBoolEquals(t, "foo expected to depend on baz", true,
|
||||||
|
CheckModuleHasDependency(t, ctx, "foo", "android_common", "baz"))
|
||||||
|
|
||||||
|
aapt2LinkRule := foo.Rule("android/soong/java.aapt2Link")
|
||||||
|
linkInFlags := aapt2LinkRule.Args["inFlags"]
|
||||||
|
android.AssertStringDoesContain(t,
|
||||||
|
"aapt2 link command expected to pass feature flags arguments",
|
||||||
|
linkInFlags,
|
||||||
|
"--feature-flags @out/soong/.intermediates/bar/intermediate.txt --feature-flags @out/soong/.intermediates/baz/intermediate.txt",
|
||||||
|
)
|
||||||
|
}
|
||||||
|
@@ -409,6 +409,7 @@ var (
|
|||||||
syspropPublicStubDepTag = dependencyTag{name: "sysprop public stub"}
|
syspropPublicStubDepTag = dependencyTag{name: "sysprop public stub"}
|
||||||
javaApiContributionTag = dependencyTag{name: "java-api-contribution"}
|
javaApiContributionTag = dependencyTag{name: "java-api-contribution"}
|
||||||
depApiSrcsTag = dependencyTag{name: "dep-api-srcs"}
|
depApiSrcsTag = dependencyTag{name: "dep-api-srcs"}
|
||||||
|
aconfigDeclarationTag = dependencyTag{name: "aconfig-declaration"}
|
||||||
jniInstallTag = installDependencyTag{name: "jni install"}
|
jniInstallTag = installDependencyTag{name: "jni install"}
|
||||||
binaryInstallTag = installDependencyTag{name: "binary install"}
|
binaryInstallTag = installDependencyTag{name: "binary install"}
|
||||||
usesLibReqTag = makeUsesLibraryDependencyTag(dexpreopt.AnySdkVersion, false)
|
usesLibReqTag = makeUsesLibraryDependencyTag(dexpreopt.AnySdkVersion, false)
|
||||||
|
@@ -26,6 +26,7 @@ import (
|
|||||||
|
|
||||||
"github.com/google/blueprint/proptools"
|
"github.com/google/blueprint/proptools"
|
||||||
|
|
||||||
|
"android/soong/aconfig"
|
||||||
"android/soong/android"
|
"android/soong/android"
|
||||||
"android/soong/cc"
|
"android/soong/cc"
|
||||||
"android/soong/dexpreopt"
|
"android/soong/dexpreopt"
|
||||||
@@ -47,6 +48,8 @@ var prepareForJavaTest = android.GroupFixturePreparers(
|
|||||||
cc.PrepareForTestWithCcBuildComponents,
|
cc.PrepareForTestWithCcBuildComponents,
|
||||||
// Include all the default java modules.
|
// Include all the default java modules.
|
||||||
PrepareForTestWithDexpreopt,
|
PrepareForTestWithDexpreopt,
|
||||||
|
// Include aconfig modules.
|
||||||
|
aconfig.PrepareForTestWithAconfigBuildComponents,
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestMain(m *testing.M) {
|
func TestMain(m *testing.M) {
|
||||||
|
Reference in New Issue
Block a user