Loading android/bazel.go +51 −2 Original line number Diff line number Diff line Loading @@ -228,6 +228,7 @@ var ( bp2buildDefaultConfig = Bp2BuildConfig{ "art/libdexfile": Bp2BuildDefaultTrueRecursively, "bionic": Bp2BuildDefaultTrueRecursively, "bootable/recovery/tools/recovery_l10n": Bp2BuildDefaultTrue, "build/bazel/examples/soong_config_variables": Bp2BuildDefaultTrueRecursively, "build/bazel/examples/apex/minimal": Bp2BuildDefaultTrueRecursively, "build/soong": Bp2BuildDefaultTrue, Loading @@ -235,6 +236,40 @@ var ( "build/soong/cc/ndkstubgen": Bp2BuildDefaultTrue, "build/soong/cc/symbolfile": Bp2BuildDefaultTrue, "cts/common/device-side/nativetesthelper/jni": Bp2BuildDefaultTrueRecursively, "development/apps/DevelopmentSettings": Bp2BuildDefaultTrue, "development/apps/Fallback": Bp2BuildDefaultTrue, "development/apps/WidgetPreview": Bp2BuildDefaultTrue, "development/samples/BasicGLSurfaceView": Bp2BuildDefaultTrue, "development/samples/BluetoothChat": Bp2BuildDefaultTrue, "development/samples/BrokenKeyDerivation": Bp2BuildDefaultTrue, "development/samples/Compass": Bp2BuildDefaultTrue, "development/samples/ContactManager": Bp2BuildDefaultTrue, "development/samples/FixedGridLayout": Bp2BuildDefaultTrue, "development/samples/HelloEffects": Bp2BuildDefaultTrue, "development/samples/Home": Bp2BuildDefaultTrue, "development/samples/HoneycombGallery": Bp2BuildDefaultTrue, "development/samples/JetBoy": Bp2BuildDefaultTrue, "development/samples/KeyChainDemo": Bp2BuildDefaultTrue, "development/samples/LceDemo": Bp2BuildDefaultTrue, "development/samples/LunarLander": Bp2BuildDefaultTrue, "development/samples/MultiResolution": Bp2BuildDefaultTrue, "development/samples/MultiWindow": Bp2BuildDefaultTrue, "development/samples/NotePad": Bp2BuildDefaultTrue, "development/samples/Obb": Bp2BuildDefaultTrue, "development/samples/RSSReader": Bp2BuildDefaultTrue, "development/samples/ReceiveShareDemo": Bp2BuildDefaultTrue, "development/samples/SearchableDictionary": Bp2BuildDefaultTrue, "development/samples/SipDemo": Bp2BuildDefaultTrue, "development/samples/SkeletonApp": Bp2BuildDefaultTrue, "development/samples/Snake": Bp2BuildDefaultTrue, "development/samples/SpellChecker/": Bp2BuildDefaultTrueRecursively, "development/samples/ThemedNavBarKeyboard": Bp2BuildDefaultTrue, "development/samples/ToyVpn": Bp2BuildDefaultTrue, "development/samples/TtsEngine": Bp2BuildDefaultTrue, "development/samples/USB/AdbTest": Bp2BuildDefaultTrue, "development/samples/USB/MissileLauncher": Bp2BuildDefaultTrue, "development/samples/VoiceRecognitionService": Bp2BuildDefaultTrue, "development/samples/VoicemailProviderDemo": Bp2BuildDefaultTrue, "development/sdk": Bp2BuildDefaultTrueRecursively, "external/arm-optimized-routines": Bp2BuildDefaultTrueRecursively, "external/boringssl": Bp2BuildDefaultTrueRecursively, Loading @@ -261,9 +296,19 @@ var ( "external/selinux/libselinux": Bp2BuildDefaultTrueRecursively, "external/zlib": Bp2BuildDefaultTrueRecursively, "external/zstd": Bp2BuildDefaultTrueRecursively, "frameworks/base/media/tests/MediaDump": Bp2BuildDefaultTrue, "frameworks/base/startop/apps/test": Bp2BuildDefaultTrue, "frameworks/native/libs/adbd_auth": Bp2BuildDefaultTrueRecursively, "frameworks/native/opengl/tests/gl2_cameraeye": Bp2BuildDefaultTrue, "frameworks/native/opengl/tests/gl2_java": Bp2BuildDefaultTrue, "frameworks/native/opengl/tests/testLatency": Bp2BuildDefaultTrue, "frameworks/native/opengl/tests/testPauseResume": Bp2BuildDefaultTrue, "frameworks/native/opengl/tests/testViewport": Bp2BuildDefaultTrue, "frameworks/proto_logging/stats/stats_log_api_gen": Bp2BuildDefaultTrueRecursively, "libnativehelper": Bp2BuildDefaultTrueRecursively, "packages/apps/DevCamera": Bp2BuildDefaultTrue, "packages/apps/HTMLViewer": Bp2BuildDefaultTrue, "packages/apps/Protips": Bp2BuildDefaultTrue, "packages/modules/adb": Bp2BuildDefaultTrue, "packages/modules/adb/crypto": Bp2BuildDefaultTrueRecursively, "packages/modules/adb/libs": Bp2BuildDefaultTrueRecursively, Loading @@ -271,6 +316,9 @@ var ( "packages/modules/adb/pairing_connection": Bp2BuildDefaultTrueRecursively, "packages/modules/adb/proto": Bp2BuildDefaultTrueRecursively, "packages/modules/adb/tls": Bp2BuildDefaultTrueRecursively, "packages/providers/MediaProvider/tools/dialogs": Bp2BuildDefaultTrue, "packages/screensavers/Basic": Bp2BuildDefaultTrue, "packages/services/Car/tests/SampleRearViewCamera": Bp2BuildDefaultTrue, "prebuilts/clang/host/linux-x86": Bp2BuildDefaultTrueRecursively, "system/apex": Bp2BuildDefaultFalse, // TODO(b/207466993): flaky failures "system/core/debuggerd": Bp2BuildDefaultTrue, Loading Loading @@ -393,6 +441,7 @@ var ( "mdnsd", // http://b/202876379 has arch-variant static_executable "acvp_modulewrapper", // disabled for android x86/x86_64 "CarHTMLViewer", // depends on unconverted modules android.car-stubs, car-ui-lib } // Per-module denylist of cc_library modules to only generate the static Loading android/bazel_paths.go +11 −6 Original line number Diff line number Diff line Loading @@ -279,6 +279,16 @@ func transformSubpackagePaths(ctx BazelConversionPathContext, paths bazel.LabelL return newPaths } // Converts root-relative Paths to a list of bazel.Label relative to the module in ctx. func RootToModuleRelativePaths(ctx BazelConversionPathContext, paths Paths) []bazel.Label { var newPaths []bazel.Label for _, path := range PathsWithModuleSrcSubDir(ctx, paths, "") { s := path.Rel() newPaths = append(newPaths, bazel.Label{Label: s}) } return newPaths } // expandSrcsForBazel returns bazel.LabelList with paths rooted from the module's local source // directory and Bazel target labels, excluding those included in the excludes argument (which // should already be expanded to resolve references to Soong-modules). Valid elements of paths Loading Loading @@ -328,12 +338,7 @@ func expandSrcsForBazel(ctx BazelConversionPathContext, paths, expandedExcludes // e.g. turn "math/*.c" in // external/arm-optimized-routines to external/arm-optimized-routines/math/*.c rootRelativeGlobPath := pathForModuleSrc(ctx, p).String() globbedPaths := GlobFiles(ctx, rootRelativeGlobPath, rootRelativeExpandedExcludes) globbedPaths = PathsWithModuleSrcSubDir(ctx, globbedPaths, "") for _, path := range globbedPaths { s := path.Rel() expandedPaths = append(expandedPaths, bazel.Label{Label: s}) } expandedPaths = RootToModuleRelativePaths(ctx, GlobFiles(ctx, rootRelativeGlobPath, rootRelativeExpandedExcludes)) } else { if !InList(p, expandedExcludes) { expandedPaths = append(expandedPaths, bazel.Label{Label: p}) Loading bp2build/android_app_conversion_test.go 0 → 100644 +92 −0 Original line number Diff line number Diff line // Copyright 2021 Google Inc. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package bp2build import ( "android/soong/android" "android/soong/java" "testing" ) func runAndroidAppTestCase(t *testing.T, tc bp2buildTestCase) { t.Helper() runBp2BuildTestCase(t, registerAndroidAppModuleTypes, tc) } func registerAndroidAppModuleTypes(ctx android.RegistrationContext) { } func TestMinimalAndroidApp(t *testing.T) { runAndroidAppTestCase(t, bp2buildTestCase{ description: "Android app - simple example", moduleTypeUnderTest: "android_app", moduleTypeUnderTestFactory: java.AndroidAppFactory, moduleTypeUnderTestBp2BuildMutator: java.AppBp2Build, filesystem: map[string]string{ "app.java": "", "res/res.png": "", "AndroidManifest.xml": "", }, blueprint: ` android_app { name: "TestApp", srcs: ["app.java"], sdk_version: "current", } `, expectedBazelTargets: []string{ makeBazelTarget("android_binary", "TestApp", attrNameToString{ "srcs": `["app.java"]`, "manifest": `"AndroidManifest.xml"`, "resource_files": `["res/res.png"]`, }), }}) } func TestAndroidAppAllSupportedFields(t *testing.T) { runAndroidAppTestCase(t, bp2buildTestCase{ description: "Android app - all supported fields", moduleTypeUnderTest: "android_app", moduleTypeUnderTestFactory: java.AndroidAppFactory, moduleTypeUnderTestBp2BuildMutator: java.AppBp2Build, filesystem: map[string]string{ "app.java": "", "resa/res.png": "", "resb/res.png": "", "manifest/AndroidManifest.xml": "", }, blueprint: ` android_app { name: "TestApp", srcs: ["app.java"], sdk_version: "current", package_name: "com.google", resource_dirs: ["resa", "resb"], manifest: "manifest/AndroidManifest.xml", } `, expectedBazelTargets: []string{ makeBazelTarget("android_binary", "TestApp", attrNameToString{ "srcs": `["app.java"]`, "manifest": `"manifest/AndroidManifest.xml"`, "resource_files": `[ "resa/res.png", "resb/res.png", ]`, "custom_package": `"com.google"`, }), }}) } java/android_resources.go +1 −1 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ var androidResourceIgnoreFilenames = []string{ // androidResourceGlob returns the list of files in the given directory, using the standard // exclusion patterns for Android resources. func androidResourceGlob(ctx android.ModuleContext, dir android.Path) android.Paths { func androidResourceGlob(ctx android.EarlyModuleContext, dir android.Path) android.Paths { return ctx.GlobFiles(filepath.Join(dir.String(), "**/*"), androidResourceIgnoreFilenames) } Loading java/app.go +46 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ func RegisterAppBuildComponents(ctx android.RegistrationContext) { ctx.RegisterModuleType("override_android_test", OverrideAndroidTestModuleFactory) android.RegisterBp2BuildMutator("android_app_certificate", AndroidAppCertificateBp2Build) android.RegisterBp2BuildMutator("android_app", AppBp2Build) } // AndroidManifest.xml merging Loading Loading @@ -139,6 +140,7 @@ type overridableAppProperties struct { } type AndroidApp struct { android.BazelModuleBase Library aapt android.OverridableModuleBase Loading Loading @@ -1438,3 +1440,47 @@ func androidAppCertificateBp2BuildInternal(ctx android.TopDownMutatorContext, mo ctx.CreateBazelTargetModule(props, android.CommonAttributes{Name: module.Name()}, attrs) } type bazelAndroidAppAttributes struct { Srcs bazel.LabelListAttribute Manifest bazel.Label Custom_package *string Resource_files bazel.LabelListAttribute } // AppBp2Build is used for android_app. func AppBp2Build(ctx android.TopDownMutatorContext) { a, ok := ctx.Module().(*AndroidApp) if !ok || !a.ConvertWithBp2build(ctx) { return } if ctx.ModuleType() != "android_app" { return } //TODO(b/209577426): Support multiple arch variants srcs := bazel.MakeLabelListAttribute(android.BazelLabelForModuleSrcExcludes(ctx, a.properties.Srcs, a.properties.Exclude_srcs)) manifest := proptools.StringDefault(a.aaptProperties.Manifest, "AndroidManifest.xml") resourceFiles := bazel.LabelList{ Includes: []bazel.Label{}, } for _, dir := range android.PathsWithOptionalDefaultForModuleSrc(ctx, a.aaptProperties.Resource_dirs, "res") { files := android.RootToModuleRelativePaths(ctx, androidResourceGlob(ctx, dir)) resourceFiles.Includes = append(resourceFiles.Includes, files...) } attrs := &bazelAndroidAppAttributes{ Srcs: srcs, Manifest: android.BazelLabelForModuleSrcSingle(ctx, manifest), // TODO(b/209576404): handle package name override by product variable PRODUCT_MANIFEST_PACKAGE_NAME_OVERRIDES Custom_package: a.overridableAppProperties.Package_name, Resource_files: bazel.MakeLabelListAttribute(resourceFiles), } props := bazel.BazelTargetModuleProperties{Rule_class: "android_binary", Bzl_load_location: "@rules_android//rules:rules.bzl"} ctx.CreateBazelTargetModule(props, android.CommonAttributes{Name: a.Name()}, attrs) } Loading
android/bazel.go +51 −2 Original line number Diff line number Diff line Loading @@ -228,6 +228,7 @@ var ( bp2buildDefaultConfig = Bp2BuildConfig{ "art/libdexfile": Bp2BuildDefaultTrueRecursively, "bionic": Bp2BuildDefaultTrueRecursively, "bootable/recovery/tools/recovery_l10n": Bp2BuildDefaultTrue, "build/bazel/examples/soong_config_variables": Bp2BuildDefaultTrueRecursively, "build/bazel/examples/apex/minimal": Bp2BuildDefaultTrueRecursively, "build/soong": Bp2BuildDefaultTrue, Loading @@ -235,6 +236,40 @@ var ( "build/soong/cc/ndkstubgen": Bp2BuildDefaultTrue, "build/soong/cc/symbolfile": Bp2BuildDefaultTrue, "cts/common/device-side/nativetesthelper/jni": Bp2BuildDefaultTrueRecursively, "development/apps/DevelopmentSettings": Bp2BuildDefaultTrue, "development/apps/Fallback": Bp2BuildDefaultTrue, "development/apps/WidgetPreview": Bp2BuildDefaultTrue, "development/samples/BasicGLSurfaceView": Bp2BuildDefaultTrue, "development/samples/BluetoothChat": Bp2BuildDefaultTrue, "development/samples/BrokenKeyDerivation": Bp2BuildDefaultTrue, "development/samples/Compass": Bp2BuildDefaultTrue, "development/samples/ContactManager": Bp2BuildDefaultTrue, "development/samples/FixedGridLayout": Bp2BuildDefaultTrue, "development/samples/HelloEffects": Bp2BuildDefaultTrue, "development/samples/Home": Bp2BuildDefaultTrue, "development/samples/HoneycombGallery": Bp2BuildDefaultTrue, "development/samples/JetBoy": Bp2BuildDefaultTrue, "development/samples/KeyChainDemo": Bp2BuildDefaultTrue, "development/samples/LceDemo": Bp2BuildDefaultTrue, "development/samples/LunarLander": Bp2BuildDefaultTrue, "development/samples/MultiResolution": Bp2BuildDefaultTrue, "development/samples/MultiWindow": Bp2BuildDefaultTrue, "development/samples/NotePad": Bp2BuildDefaultTrue, "development/samples/Obb": Bp2BuildDefaultTrue, "development/samples/RSSReader": Bp2BuildDefaultTrue, "development/samples/ReceiveShareDemo": Bp2BuildDefaultTrue, "development/samples/SearchableDictionary": Bp2BuildDefaultTrue, "development/samples/SipDemo": Bp2BuildDefaultTrue, "development/samples/SkeletonApp": Bp2BuildDefaultTrue, "development/samples/Snake": Bp2BuildDefaultTrue, "development/samples/SpellChecker/": Bp2BuildDefaultTrueRecursively, "development/samples/ThemedNavBarKeyboard": Bp2BuildDefaultTrue, "development/samples/ToyVpn": Bp2BuildDefaultTrue, "development/samples/TtsEngine": Bp2BuildDefaultTrue, "development/samples/USB/AdbTest": Bp2BuildDefaultTrue, "development/samples/USB/MissileLauncher": Bp2BuildDefaultTrue, "development/samples/VoiceRecognitionService": Bp2BuildDefaultTrue, "development/samples/VoicemailProviderDemo": Bp2BuildDefaultTrue, "development/sdk": Bp2BuildDefaultTrueRecursively, "external/arm-optimized-routines": Bp2BuildDefaultTrueRecursively, "external/boringssl": Bp2BuildDefaultTrueRecursively, Loading @@ -261,9 +296,19 @@ var ( "external/selinux/libselinux": Bp2BuildDefaultTrueRecursively, "external/zlib": Bp2BuildDefaultTrueRecursively, "external/zstd": Bp2BuildDefaultTrueRecursively, "frameworks/base/media/tests/MediaDump": Bp2BuildDefaultTrue, "frameworks/base/startop/apps/test": Bp2BuildDefaultTrue, "frameworks/native/libs/adbd_auth": Bp2BuildDefaultTrueRecursively, "frameworks/native/opengl/tests/gl2_cameraeye": Bp2BuildDefaultTrue, "frameworks/native/opengl/tests/gl2_java": Bp2BuildDefaultTrue, "frameworks/native/opengl/tests/testLatency": Bp2BuildDefaultTrue, "frameworks/native/opengl/tests/testPauseResume": Bp2BuildDefaultTrue, "frameworks/native/opengl/tests/testViewport": Bp2BuildDefaultTrue, "frameworks/proto_logging/stats/stats_log_api_gen": Bp2BuildDefaultTrueRecursively, "libnativehelper": Bp2BuildDefaultTrueRecursively, "packages/apps/DevCamera": Bp2BuildDefaultTrue, "packages/apps/HTMLViewer": Bp2BuildDefaultTrue, "packages/apps/Protips": Bp2BuildDefaultTrue, "packages/modules/adb": Bp2BuildDefaultTrue, "packages/modules/adb/crypto": Bp2BuildDefaultTrueRecursively, "packages/modules/adb/libs": Bp2BuildDefaultTrueRecursively, Loading @@ -271,6 +316,9 @@ var ( "packages/modules/adb/pairing_connection": Bp2BuildDefaultTrueRecursively, "packages/modules/adb/proto": Bp2BuildDefaultTrueRecursively, "packages/modules/adb/tls": Bp2BuildDefaultTrueRecursively, "packages/providers/MediaProvider/tools/dialogs": Bp2BuildDefaultTrue, "packages/screensavers/Basic": Bp2BuildDefaultTrue, "packages/services/Car/tests/SampleRearViewCamera": Bp2BuildDefaultTrue, "prebuilts/clang/host/linux-x86": Bp2BuildDefaultTrueRecursively, "system/apex": Bp2BuildDefaultFalse, // TODO(b/207466993): flaky failures "system/core/debuggerd": Bp2BuildDefaultTrue, Loading Loading @@ -393,6 +441,7 @@ var ( "mdnsd", // http://b/202876379 has arch-variant static_executable "acvp_modulewrapper", // disabled for android x86/x86_64 "CarHTMLViewer", // depends on unconverted modules android.car-stubs, car-ui-lib } // Per-module denylist of cc_library modules to only generate the static Loading
android/bazel_paths.go +11 −6 Original line number Diff line number Diff line Loading @@ -279,6 +279,16 @@ func transformSubpackagePaths(ctx BazelConversionPathContext, paths bazel.LabelL return newPaths } // Converts root-relative Paths to a list of bazel.Label relative to the module in ctx. func RootToModuleRelativePaths(ctx BazelConversionPathContext, paths Paths) []bazel.Label { var newPaths []bazel.Label for _, path := range PathsWithModuleSrcSubDir(ctx, paths, "") { s := path.Rel() newPaths = append(newPaths, bazel.Label{Label: s}) } return newPaths } // expandSrcsForBazel returns bazel.LabelList with paths rooted from the module's local source // directory and Bazel target labels, excluding those included in the excludes argument (which // should already be expanded to resolve references to Soong-modules). Valid elements of paths Loading Loading @@ -328,12 +338,7 @@ func expandSrcsForBazel(ctx BazelConversionPathContext, paths, expandedExcludes // e.g. turn "math/*.c" in // external/arm-optimized-routines to external/arm-optimized-routines/math/*.c rootRelativeGlobPath := pathForModuleSrc(ctx, p).String() globbedPaths := GlobFiles(ctx, rootRelativeGlobPath, rootRelativeExpandedExcludes) globbedPaths = PathsWithModuleSrcSubDir(ctx, globbedPaths, "") for _, path := range globbedPaths { s := path.Rel() expandedPaths = append(expandedPaths, bazel.Label{Label: s}) } expandedPaths = RootToModuleRelativePaths(ctx, GlobFiles(ctx, rootRelativeGlobPath, rootRelativeExpandedExcludes)) } else { if !InList(p, expandedExcludes) { expandedPaths = append(expandedPaths, bazel.Label{Label: p}) Loading
bp2build/android_app_conversion_test.go 0 → 100644 +92 −0 Original line number Diff line number Diff line // Copyright 2021 Google Inc. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package bp2build import ( "android/soong/android" "android/soong/java" "testing" ) func runAndroidAppTestCase(t *testing.T, tc bp2buildTestCase) { t.Helper() runBp2BuildTestCase(t, registerAndroidAppModuleTypes, tc) } func registerAndroidAppModuleTypes(ctx android.RegistrationContext) { } func TestMinimalAndroidApp(t *testing.T) { runAndroidAppTestCase(t, bp2buildTestCase{ description: "Android app - simple example", moduleTypeUnderTest: "android_app", moduleTypeUnderTestFactory: java.AndroidAppFactory, moduleTypeUnderTestBp2BuildMutator: java.AppBp2Build, filesystem: map[string]string{ "app.java": "", "res/res.png": "", "AndroidManifest.xml": "", }, blueprint: ` android_app { name: "TestApp", srcs: ["app.java"], sdk_version: "current", } `, expectedBazelTargets: []string{ makeBazelTarget("android_binary", "TestApp", attrNameToString{ "srcs": `["app.java"]`, "manifest": `"AndroidManifest.xml"`, "resource_files": `["res/res.png"]`, }), }}) } func TestAndroidAppAllSupportedFields(t *testing.T) { runAndroidAppTestCase(t, bp2buildTestCase{ description: "Android app - all supported fields", moduleTypeUnderTest: "android_app", moduleTypeUnderTestFactory: java.AndroidAppFactory, moduleTypeUnderTestBp2BuildMutator: java.AppBp2Build, filesystem: map[string]string{ "app.java": "", "resa/res.png": "", "resb/res.png": "", "manifest/AndroidManifest.xml": "", }, blueprint: ` android_app { name: "TestApp", srcs: ["app.java"], sdk_version: "current", package_name: "com.google", resource_dirs: ["resa", "resb"], manifest: "manifest/AndroidManifest.xml", } `, expectedBazelTargets: []string{ makeBazelTarget("android_binary", "TestApp", attrNameToString{ "srcs": `["app.java"]`, "manifest": `"manifest/AndroidManifest.xml"`, "resource_files": `[ "resa/res.png", "resb/res.png", ]`, "custom_package": `"com.google"`, }), }}) }
java/android_resources.go +1 −1 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ var androidResourceIgnoreFilenames = []string{ // androidResourceGlob returns the list of files in the given directory, using the standard // exclusion patterns for Android resources. func androidResourceGlob(ctx android.ModuleContext, dir android.Path) android.Paths { func androidResourceGlob(ctx android.EarlyModuleContext, dir android.Path) android.Paths { return ctx.GlobFiles(filepath.Join(dir.String(), "**/*"), androidResourceIgnoreFilenames) } Loading
java/app.go +46 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ func RegisterAppBuildComponents(ctx android.RegistrationContext) { ctx.RegisterModuleType("override_android_test", OverrideAndroidTestModuleFactory) android.RegisterBp2BuildMutator("android_app_certificate", AndroidAppCertificateBp2Build) android.RegisterBp2BuildMutator("android_app", AppBp2Build) } // AndroidManifest.xml merging Loading Loading @@ -139,6 +140,7 @@ type overridableAppProperties struct { } type AndroidApp struct { android.BazelModuleBase Library aapt android.OverridableModuleBase Loading Loading @@ -1438,3 +1440,47 @@ func androidAppCertificateBp2BuildInternal(ctx android.TopDownMutatorContext, mo ctx.CreateBazelTargetModule(props, android.CommonAttributes{Name: module.Name()}, attrs) } type bazelAndroidAppAttributes struct { Srcs bazel.LabelListAttribute Manifest bazel.Label Custom_package *string Resource_files bazel.LabelListAttribute } // AppBp2Build is used for android_app. func AppBp2Build(ctx android.TopDownMutatorContext) { a, ok := ctx.Module().(*AndroidApp) if !ok || !a.ConvertWithBp2build(ctx) { return } if ctx.ModuleType() != "android_app" { return } //TODO(b/209577426): Support multiple arch variants srcs := bazel.MakeLabelListAttribute(android.BazelLabelForModuleSrcExcludes(ctx, a.properties.Srcs, a.properties.Exclude_srcs)) manifest := proptools.StringDefault(a.aaptProperties.Manifest, "AndroidManifest.xml") resourceFiles := bazel.LabelList{ Includes: []bazel.Label{}, } for _, dir := range android.PathsWithOptionalDefaultForModuleSrc(ctx, a.aaptProperties.Resource_dirs, "res") { files := android.RootToModuleRelativePaths(ctx, androidResourceGlob(ctx, dir)) resourceFiles.Includes = append(resourceFiles.Includes, files...) } attrs := &bazelAndroidAppAttributes{ Srcs: srcs, Manifest: android.BazelLabelForModuleSrcSingle(ctx, manifest), // TODO(b/209576404): handle package name override by product variable PRODUCT_MANIFEST_PACKAGE_NAME_OVERRIDES Custom_package: a.overridableAppProperties.Package_name, Resource_files: bazel.MakeLabelListAttribute(resourceFiles), } props := bazel.BazelTargetModuleProperties{Rule_class: "android_binary", Bzl_load_location: "@rules_android//rules:rules.bzl"} ctx.CreateBazelTargetModule(props, android.CommonAttributes{Name: a.Name()}, attrs) }