Skip to main content
Glama
android.bzl17 kB
# Copyright (c) Meta Platforms, Inc. and affiliates. # # This source code is licensed under both the MIT license found in the # LICENSE-MIT file in the root directory of this source tree and the Apache # License, Version 2.0 found in the LICENSE-APACHE file in the root directory # of this source tree. load("@prelude//android:android_toolchain.bzl", "AndroidPlatformInfo", "AndroidToolchainInfo") def _android_sdk_tools_impl(ctx): sub_targets = {} sub_targets["aapt2"] = [RunInfo(args = ["{}/build-tools/{}/aapt2".format(ctx.attrs.android_sdk_path, ctx.attrs.build_tools_version)])] sub_targets["aidl"] = [RunInfo(args = ["{}/build-tools/{}/aidl".format(ctx.attrs.android_sdk_path, ctx.attrs.build_tools_version)])] sub_targets["zipalign"] = [RunInfo(args = ["{}/build-tools/{}/zipalign".format(ctx.attrs.android_sdk_path, ctx.attrs.build_tools_version)])] sub_targets["adb"] = [RunInfo(args = ["{}/build-tools/platform-tools/adb".format(ctx.attrs.android_sdk_path)])] android_jar = ctx.actions.declare_output("android.jar") ctx.actions.run(cmd_args(["ln", "-s", "{}/platforms/{}/android.jar".format(ctx.attrs.android_sdk_path, ctx.attrs.compile_sdk_version), android_jar.as_output()]), category = "android_jar_symlink") sub_targets["android.jar"] = [DefaultInfo(default_output = android_jar)] core_for_system_modules_jar = ctx.actions.declare_output("core_for_system_modules.jar") ctx.actions.run(cmd_args(["ln", "-s", "{}/platforms/{}/core_for_system_modules.jar".format(ctx.attrs.android_sdk_path, ctx.attrs.compile_sdk_version), core_for_system_modules_jar.as_output()]), category = "core_for_system_modules_jar_symlink") sub_targets["core_for_system_modules.jar"] = [DefaultInfo(default_output = core_for_system_modules_jar)] framework_aidl_file = ctx.actions.declare_output("framework.aidl") ctx.actions.run(cmd_args(["ln", "-s", "{}/platforms/{}/framework.aidl".format(ctx.attrs.android_sdk_path, ctx.attrs.compile_sdk_version), framework_aidl_file.as_output()]), category = "framework_aidl_symlink") sub_targets["framework.aidl"] = [DefaultInfo(default_output = framework_aidl_file)] optimized_proguard_config = ctx.actions.declare_output("proguard-android-optimize.txt") ctx.actions.run(cmd_args(["ln", "-s", "{}/platforms/tools/proguard/proguard-android-optimize.txt".format(ctx.attrs.android_sdk_path), optimized_proguard_config.as_output()]), category = "optimized_proguard_config_symlink") sub_targets["optimized_proguard_config"] = [DefaultInfo(default_output = optimized_proguard_config)] proguard_config = ctx.actions.declare_output("proguard-android.txt") ctx.actions.run(cmd_args(["ln", "-s", "{}/platforms/tools/proguard/proguard-android.txt".format(ctx.attrs.android_sdk_path), proguard_config.as_output()]), category = "proguard_config_symlink") sub_targets["proguard_config"] = [DefaultInfo(default_output = proguard_config)] proguard_jar = ctx.actions.declare_output("proguard.jar") ctx.actions.run(cmd_args(["ln", "-s", "{}/platforms/tools/proguard/lib/proguard.jar".format(ctx.attrs.android_sdk_path), proguard_jar.as_output()]), category = "proguard_jar_symlink") sub_targets["proguard.jar"] = [DefaultInfo(default_output = proguard_jar)] return [ DefaultInfo(sub_targets = sub_targets), ] android_sdk_tools = rule( impl = _android_sdk_tools_impl, attrs = { "android_sdk_path": attrs.string(default = read_root_config("android", "sdk_path", "/opt/android_sdk")), "build_tools_version": attrs.string(default = read_root_config("android", "build_tools_version", "35.0.0")), "compile_sdk_version": attrs.string(default = read_root_config("android", "compile_sdk_version", "android-35")), }, ) def system_android_toolchain( name, android_sdk_tools_target, **kwargs): kwargs["aapt2_filter_resources"] = "prelude//android/tools:filter_extra_resources" kwargs["aapt2"] = "{}[aapt2]".format(android_sdk_tools_target) kwargs["aar_builder"] = "prelude//toolchains/android/src/com/facebook/buck/android/aar:aar_builder_binary" kwargs["adb"] = "{}[adb]".format(android_sdk_tools_target) kwargs["aidl"] = "{}[aidl]".format(android_sdk_tools_target) kwargs["android_jar"] = "{}[android.jar]".format(android_sdk_tools_target) kwargs["android_optional_jars"] = [] kwargs["apk_builder"] = "prelude//toolchains/android/src/com/facebook/buck/android/apk:apk_builder_binary" kwargs["apk_module_graph"] = "prelude//toolchains/android/src/com/facebook/buck/android/apkmodule:apkmodule_binary" kwargs["app_without_resources_stub"] = "prelude//android/tools:app_without_resources_stub" kwargs["bundle_apks_builder"] = "prelude//toolchains/android/src/com/facebook/buck/android/bundle:bundle_apks_builder_binary" kwargs["bundle_builder"] = "prelude//toolchains/android/src/com/facebook/buck/android/bundle:bundle_builder_binary" kwargs["combine_native_library_dirs"] = "prelude//android/tools:combine_native_library_dirs" kwargs["copy_string_resources"] = "prelude//toolchains/android/src/com/facebook/buck/android/resources/strings:copy_string_resources_binary" kwargs["cross_module_native_deps_check"] = True kwargs["d8_command"] = "prelude//toolchains/android/src/com/facebook/buck/android/dex:run_d8_binary" kwargs["duplicate_class_checker"] = "prelude//android/tools:duplicate_class_checker" kwargs["exo_resources_rewriter"] = "prelude//toolchains/android/src/com/facebook/buck/android/resources:exo_resources_rewriter_binary" # TODO: We should support exopackage in OSS builds. kwargs["exopackage_agent_apk"] = None kwargs["filter_dex_class_names"] = "prelude//android/tools:filter_dex" kwargs["filter_prebuilt_native_library_dir"] = "prelude//android/tools:filter_prebuilt_native_library_dir" kwargs["filter_resources"] = "prelude//toolchains/android/src/com/facebook/buck/android/resources/filter:filter_resources_binary" kwargs["framework_aidl_file"] = "{}[framework.aidl]".format(android_sdk_tools_target) kwargs["generate_build_config"] = "prelude//toolchains/android/src/com/facebook/buck/android/build_config:generate_build_config_binary" kwargs["generate_manifest"] = "prelude//toolchains/android/src/com/facebook/buck/android/manifest:generate_manifest_binary" kwargs["installer"] = "prelude//toolchains/android/src/com/facebook/buck/installer/android:android_installer" kwargs["instrumentation_test_can_run_locally"] = True kwargs["instrumentation_test_runner_classpath"] = [ "prelude//toolchains/android/src/com/facebook/buck/testrunner:testrunner-bin-fixed", "prelude//toolchains/android/third-party:android-common", "prelude//toolchains/android/third-party:ddmlib", "prelude//toolchains/android/third-party:guava-jar", "prelude//toolchains/android/third-party:failureaccess", "prelude//toolchains/android/third-party:listenablefuture", "prelude//toolchains/android/third-party:kxml2", "prelude//toolchains/android/third-party:protobuf", "prelude//toolchains/android/third-party:jackson-annotations", "prelude//toolchains/android/third-party:jackson-core", "prelude//toolchains/android/third-party:jackson-databind-jar", ] kwargs["instrumentation_test_runner_main_class"] = "com.facebook.buck.testrunner.InstrumentationMain" kwargs["jar_splitter_command"] = "prelude//toolchains/android/src/com/facebook/buck/android/dex:jar_splitter_binary" kwargs["jdk_system_image"] = "prelude//android/tools:jdk_system_image" kwargs["manifest_utils"] = "prelude//toolchains/android/src/com/facebook/buck/android:manifest_utils_binary" kwargs["merge_android_resource_sources"] = "prelude//toolchains/android/src/com/facebook/buck/android/aapt:merge_android_resource_sources_binary" kwargs["merge_android_resources"] = "prelude//toolchains/android/src/com/facebook/buck/android/resources:merge_android_resources_binary" kwargs["merge_assets"] = "prelude//toolchains/android/src/com/facebook/buck/android/resources:merge_assets_binary" kwargs["mergemap_tool"] = "prelude//android/tools:compute_merge_sequence" kwargs["mini_aapt"] = "prelude//toolchains/android/src/com/facebook/buck/android/aapt:mini_aapt_binary" kwargs["multi_dex_command"] = "prelude//toolchains/android/src/com/facebook/buck/android/dex:multi_dex_binary" kwargs["native_libs_as_assets_metadata"] = "prelude//android/tools:native_libs_as_assets_metadata" kwargs["optimized_proguard_config"] = "{}[optimized_proguard_config]".format(android_sdk_tools_target) kwargs["package_meta_inf_version_files"] = False kwargs["package_strings_as_assets"] = "prelude//toolchains/android/src/com/facebook/buck/android/resources/strings:package_strings_as_assets_binary" kwargs["proguard_config"] = "{}[proguard_config]".format(android_sdk_tools_target) kwargs["proguard_jar"] = "{}[proguard.jar]".format(android_sdk_tools_target) kwargs["r_dot_java_weight_factor"] = 8 kwargs["replace_application_id_placeholders"] = "prelude//toolchains/android/src/com/facebook/buck/android/manifest:replace_application_id_placeholders_binary" kwargs["secondary_dex_compression_command"] = "prelude//toolchains/android/src/com/facebook/buck/android/dex:secondary_dex_compression_binary" kwargs["secondary_dex_weight_limit"] = 1024 kwargs["set_application_id_to_specified_package"] = True kwargs["should_run_sanity_check_for_placeholders"] = True kwargs["unpack_aar"] = "prelude//android/tools:unpack_aar" kwargs["zipalign"] = "{}[zipalign]".format(android_sdk_tools_target) system_android_toolchain_rule( name = name, **kwargs ) def system_android_toolchain_rule_impl(ctx): return [ DefaultInfo(), AndroidPlatformInfo( name = ctx.attrs.name, ), AndroidToolchainInfo( aapt2 = ctx.attrs.aapt2[RunInfo], aapt2_filter_resources = ctx.attrs.aapt2_filter_resources[RunInfo], aar_builder = ctx.attrs.aar_builder[RunInfo], adb = ctx.attrs.adb[RunInfo], aidl = ctx.attrs.aidl[RunInfo], android_bootclasspath = [ctx.attrs.android_jar], android_jar = ctx.attrs.android_jar, android_optional_jars = ctx.attrs.android_optional_jars, apk_builder = ctx.attrs.apk_builder, apk_module_graph = ctx.attrs.apk_module_graph, app_without_resources_stub = ctx.attrs.app_without_resources_stub, bundle_apks_builder = ctx.attrs.bundle_apks_builder, bundle_builder = ctx.attrs.bundle_builder, combine_native_library_dirs = ctx.attrs.combine_native_library_dirs, copy_string_resources = ctx.attrs.copy_string_resources, cross_module_native_deps_check = ctx.attrs.cross_module_native_deps_check, d8_command = ctx.attrs.d8_command, duplicate_class_checker = ctx.attrs.duplicate_class_checker, exo_resources_rewriter = ctx.attrs.exo_resources_rewriter, exopackage_agent_apk = ctx.attrs.exopackage_agent_apk, filter_dex_class_names = ctx.attrs.filter_dex_class_names, filter_prebuilt_native_library_dir = ctx.attrs.filter_prebuilt_native_library_dir, filter_resources = ctx.attrs.filter_resources, framework_aidl_file = ctx.attrs.framework_aidl_file, generate_build_config = ctx.attrs.generate_build_config, generate_manifest = ctx.attrs.generate_manifest, installer = ctx.attrs.installer, instrumentation_test_can_run_locally = ctx.attrs.instrumentation_test_can_run_locally, instrumentation_test_runner_classpath = ctx.attrs.instrumentation_test_runner_classpath, instrumentation_test_runner_main_class = ctx.attrs.instrumentation_test_runner_main_class, jar_splitter_command = ctx.attrs.jar_splitter_command, jdk_system_image = ctx.attrs.jdk_system_image, manifest_utils = ctx.attrs.manifest_utils, merge_android_resource_sources = ctx.attrs.merge_android_resource_sources, merge_android_resources = ctx.attrs.merge_android_resources, merge_assets = ctx.attrs.merge_assets, mergemap_tool = ctx.attrs.mergemap_tool[RunInfo], mini_aapt = ctx.attrs.mini_aapt, multi_dex_command = ctx.attrs.multi_dex_command, native_libs_as_assets_metadata = ctx.attrs.native_libs_as_assets_metadata, optimized_proguard_config = ctx.attrs.optimized_proguard_config, p7zip = None, package_meta_inf_version_files = ctx.attrs.package_meta_inf_version_files, package_strings_as_assets = ctx.attrs.package_strings_as_assets, proguard_config = ctx.attrs.proguard_config, proguard_jar = ctx.attrs.proguard_jar, r_dot_java_weight_factor = ctx.attrs.r_dot_java_weight_factor, replace_application_id_placeholders = ctx.attrs.replace_application_id_placeholders, secondary_dex_compression_command = ctx.attrs.secondary_dex_compression_command, secondary_dex_weight_limit = ctx.attrs.secondary_dex_weight_limit, set_application_id_to_specified_package = ctx.attrs.set_application_id_to_specified_package, should_run_sanity_check_for_placeholders = ctx.attrs.should_run_sanity_check_for_placeholders, unpack_aar = ctx.attrs.unpack_aar, zipalign = ctx.attrs.zipalign, ), ] system_android_toolchain_rule = rule( attrs = { "aapt2": attrs.dep(providers = [RunInfo]), "aapt2_filter_resources": attrs.dep(providers = [RunInfo]), "aar_builder": attrs.dep(providers = [RunInfo]), "adb": attrs.dep(providers = [RunInfo]), "aidl": attrs.dep(providers = [RunInfo]), "android_jar": attrs.source(), "android_optional_jars": attrs.list(attrs.source()), "apk_builder": attrs.dep(providers = [RunInfo]), "apk_module_graph": attrs.dep(providers = [RunInfo]), "app_without_resources_stub": attrs.source(), "bundle_apks_builder": attrs.dep(providers = [RunInfo]), "bundle_builder": attrs.dep(providers = [RunInfo]), "combine_native_library_dirs": attrs.dep(providers = [RunInfo]), "copy_string_resources": attrs.dep(providers = [RunInfo]), "cross_module_native_deps_check": attrs.bool(), "d8_command": attrs.dep(providers = [RunInfo]), "duplicate_class_checker": attrs.option(attrs.dep(providers = [RunInfo]), default = None), "exo_resources_rewriter": attrs.dep(providers = [RunInfo]), "exopackage_agent_apk": attrs.option(attrs.source(), default = None), "filter_dex_class_names": attrs.dep(providers = [RunInfo]), "filter_prebuilt_native_library_dir": attrs.dep(providers = [RunInfo]), "filter_resources": attrs.dep(providers = [RunInfo]), "framework_aidl_file": attrs.source(), "generate_build_config": attrs.dep(providers = [RunInfo]), "generate_manifest": attrs.dep(providers = [RunInfo]), "installer": attrs.label(), "instrumentation_test_can_run_locally": attrs.bool(), "instrumentation_test_runner_classpath": attrs.list(attrs.source()), "instrumentation_test_runner_main_class": attrs.string(), "jar_splitter_command": attrs.dep(providers = [RunInfo]), "jdk_system_image": attrs.source(), "manifest_utils": attrs.dep(providers = [RunInfo]), "merge_android_resource_sources": attrs.dep(providers = [RunInfo]), "merge_android_resources": attrs.dep(providers = [RunInfo]), "merge_assets": attrs.dep(providers = [RunInfo]), "mergemap_tool": attrs.dep(providers = [RunInfo]), "mini_aapt": attrs.dep(providers = [RunInfo]), "multi_dex_command": attrs.dep(providers = [RunInfo]), "native_libs_as_assets_metadata": attrs.dep(providers = [RunInfo]), "optimized_proguard_config": attrs.source(), "package_meta_inf_version_files": attrs.bool(), "package_strings_as_assets": attrs.dep(providers = [RunInfo]), "proguard_config": attrs.source(), "proguard_jar": attrs.source(), "r_dot_java_weight_factor": attrs.int(), "replace_application_id_placeholders": attrs.dep(providers = [RunInfo]), "secondary_dex_compression_command": attrs.dep(providers = [RunInfo]), "secondary_dex_weight_limit": attrs.int(), "set_application_id_to_specified_package": attrs.bool(), "should_run_sanity_check_for_placeholders": attrs.bool(), "unpack_aar": attrs.dep(providers = [RunInfo]), "zipalign": attrs.dep(providers = [RunInfo]), }, impl = system_android_toolchain_rule_impl, is_toolchain_rule = True, )

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/systeminit/si'

If you have feedback or need assistance with the MCP directory API, please join our Discord server