Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .bazelci/presubmit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -221,3 +221,4 @@ tasks:
build_targets:
- "//java/com/basicapp:basic_app"

buildifier: latest
4 changes: 3 additions & 1 deletion WORKSPACE
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
workspace(name = "rules_android")

load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")

load("prereqs.bzl", "rules_android_prereqs")

rules_android_prereqs(dev_mode = True)

load("@bazel_features//:deps.bzl", "bazel_features_deps")

bazel_features_deps()

load("@rules_cc//cc:extensions.bzl", "compatibility_proxy_repo")

compatibility_proxy_repo()

load("@rules_java//java:rules_java_deps.bzl", "rules_java_dependencies")

rules_java_dependencies()

# note that the following line is what is minimally required from protobuf for the java rules
Expand Down
12 changes: 6 additions & 6 deletions android/rules.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@

# Don't use relative paths since this file is coppied to //android/rules.bzl.

load(
"//providers:providers.bzl",
_AndroidAppsInfo = "AndroidAppsInfo",
_ApkInfo = "ApkInfo",
_StarlarkApkInfo = "StarlarkApkInfo",
)
load(
"//rules:android_sdk.bzl",
_android_sdk = "android_sdk",
Expand All @@ -27,12 +33,6 @@ load(
"//rules:instrumented_app_info_aspect.bzl",
_instrumented_app_info_aspect = "instrumented_app_info_aspect",
)
load(
"//providers:providers.bzl",
_AndroidAppsInfo = "AndroidAppsInfo",
_ApkInfo = "ApkInfo",
_StarlarkApkInfo = "StarlarkApkInfo",
)
load(
"//rules/aar_import:rule.bzl",
_aar_import = "aar_import",
Expand Down
14 changes: 8 additions & 6 deletions defs.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,12 @@ def rules_android_workspace():
# put anything into @maven for WORKSPACE mode.
maven_install(
name = "maven",
artifacts = PROTOBUF_MAVEN_ARTIFACTS, # protobuf maven deps
repositories = [ # protobuf maven deps
"https://repo1.maven.org/maven2", # protobuf maven deps
"https://maven.google.com", # protobuf maven deps
], # protobuf maven deps
artifacts = PROTOBUF_MAVEN_ARTIFACTS, # protobuf maven deps
repositories = [
# protobuf maven deps
"https://repo1.maven.org/maven2", # protobuf maven deps
"https://maven.google.com", # protobuf maven deps
], # protobuf maven deps
)

bazel_skylib_workspace()
Expand Down Expand Up @@ -153,7 +154,8 @@ def rules_android_workspace():
# All lines in the artifacts list must be tagged "bazel worker api" for
# the presubmit maven artifact consistency checker to pass.
name = "bazel_worker_maven",
artifacts = [ # bazel worker api
artifacts = [
# bazel worker api
"com.google.code.gson:gson:2.10.1", # bazel worker api
"com.google.errorprone:error_prone_annotations:2.23.0", # bazel worker api
"com.google.guava:guava:33.0.0-jre", # bazel worker api
Expand Down
2 changes: 1 addition & 1 deletion examples/basicapp/BUILD
Original file line number Diff line number Diff line change
@@ -1 +1 @@
# Empty build file to satisfy gazelle for rules_go.
# Empty build file to satisfy gazelle for rules_go.
5 changes: 2 additions & 3 deletions examples/basicapp/MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,11 @@ module(
bazel_dep(name = "rules_java", version = "9.0.3")
bazel_dep(name = "bazel_skylib", version = "1.8.1")
bazel_dep(name = "rules_jvm_external", version = "6.7")

bazel_dep(
name = "rules_android",
version = "0.7.3",
)


# Local override to enable this app to be used for rules_android presubmit
# integration testing. If you're basing your app's MODULE file on this
# example, you do *not* need the following override.
Expand All @@ -22,7 +20,8 @@ local_path_override(

remote_android_extensions = use_extension(
"@rules_android//bzlmod_extensions:android_extensions.bzl",
"remote_android_tools_extensions")
"remote_android_tools_extensions",
)
use_repo(remote_android_extensions, "android_tools")

android_sdk_repository_extension = use_extension("@rules_android//rules/android_sdk_repository:rule.bzl", "android_sdk_repository_extension")
Expand Down
14 changes: 13 additions & 1 deletion examples/basicapp/WORKSPACE
Original file line number Diff line number Diff line change
@@ -1,44 +1,56 @@
local_repository(
name = "rules_android",
path = "../..", # rules_android's WORKSPACE relative to this inner workspace
path = "../..", # rules_android's WORKSPACE relative to this inner workspace
)

# --SNIP--: Everything below this line goes into the example WORKSPACE snippet in the release notes.

# Android rules dependencies
load("@rules_android//:prereqs.bzl", "rules_android_prereqs")

rules_android_prereqs()

load("@bazel_features//:deps.bzl", "bazel_features_deps")

bazel_features_deps()

load("@rules_cc//cc:extensions.bzl", "compatibility_proxy_repo")

compatibility_proxy_repo()

##### rules_java setup for rules_android #####
load("@rules_java//java:rules_java_deps.bzl", "rules_java_dependencies")

rules_java_dependencies()

# note that the following line is what is minimally required from protobuf for the java rules
# consider using the protobuf_deps() public API from @com_google_protobuf//:protobuf_deps.bzl
load("@com_google_protobuf//bazel/private:proto_bazel_features.bzl", "proto_bazel_features") # buildifier: disable=bzl-visibility

proto_bazel_features(name = "proto_bazel_features")

# register toolchains
load("@rules_java//java:repositories.bzl", "rules_java_toolchains")

rules_java_toolchains()

##### rules_jvm_external setup for rules_android #####
load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")

rules_jvm_external_deps()

load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")

rules_jvm_external_setup()

##### rules_android setup #####
load("@rules_android//:defs.bzl", "rules_android_workspace")

rules_android_workspace()

# Android SDK setup
load("@rules_android//rules:rules.bzl", "android_sdk_repository")

android_sdk_repository(
name = "androidsdk",
)
Expand Down
6 changes: 3 additions & 3 deletions examples/basicapp/java/com/basicapp/BUILD
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
load(
"@rules_android//android:rules.bzl",
"android_binary",
"android_library",
"android_application",
"android_application",
"android_binary",
"android_library",
)

android_binary(
Expand Down
2 changes: 1 addition & 1 deletion mobile_install/adapters/aar_import.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
# limitations under the License.
"""Rule adapter for aar_import."""

load("@rules_java//java/common:java_info.bzl", "JavaInfo")
load(
"//mobile_install:providers.bzl",
"MIAndroidAssetsInfo",
Expand All @@ -26,7 +27,6 @@ load("//mobile_install:transform.bzl", "dex")
load("//providers:providers.bzl", "StarlarkAndroidResourcesInfo")
load("//rules:java.bzl", _java = "java")
load("//rules:visibility.bzl", "PROJECT_VISIBILITY")
load("@rules_java//java/common:java_info.bzl", "JavaInfo")
load(":base.bzl", "make_adapter")
load(":desugar.bzl", "get_desugar_classpath")

Expand Down
2 changes: 1 addition & 1 deletion mobile_install/adapters/android_binary.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
# limitations under the License.
"""Rule adapter for android_binary."""

load("@rules_java//java/common:java_info.bzl", "JavaInfo")
load("//mobile_install:launcher_direct.bzl", "make_direct_launcher")
load("//mobile_install:process.bzl", "process")
load(
Expand All @@ -27,7 +28,6 @@ load("//mobile_install:utils.bzl", "utils")
load("//providers:providers.bzl", "AndroidBinaryNativeLibsInfo", "AndroidBuildStampInfo", "AndroidIdeInfo")
load("//rules:visibility.bzl", "PROJECT_VISIBILITY")
load("//rules/flags:flags.bzl", "flags")
load("@rules_java//java/common:java_info.bzl", "JavaInfo")
load(":base.bzl", "make_adapter")
load(":desugar.bzl", "get_desugar_classpath")

Expand Down
2 changes: 1 addition & 1 deletion mobile_install/adapters/android_library.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
# limitations under the License.
"""Rule adapter for android_library."""

load("@rules_java//java/common:java_info.bzl", "JavaInfo")
load(
"//mobile_install:providers.bzl",
"MIAndroidAarNativeLibsInfo",
Expand All @@ -27,7 +28,6 @@ load("//mobile_install:tools.bzl", "TOOLCHAIN_TYPES")
load("//mobile_install:transform.bzl", "dex", "filter_jars")
load("//providers:providers.bzl", "AndroidIdeInfo")
load("//rules:visibility.bzl", "PROJECT_VISIBILITY")
load("@rules_java//java/common:java_info.bzl", "JavaInfo")
load(":base.bzl", "make_adapter")
load(":desugar.bzl", "get_desugar_classpath")

Expand Down
2 changes: 1 addition & 1 deletion mobile_install/adapters/default.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
# limitations under the License.
"""Rule adapter for unknown rules without specific adapters"""

load("@rules_java//java/common:java_info.bzl", "JavaInfo")
load(
"//mobile_install:providers.bzl",
"MIAndroidDexInfo",
Expand All @@ -22,7 +23,6 @@ load(
load("//mobile_install:transform.bzl", "dex", "extract_jar_resources")
load("//mobile_install:utils.bzl", "utils")
load("//rules:visibility.bzl", "PROJECT_VISIBILITY")
load("@rules_java//java/common:java_info.bzl", "JavaInfo")
load(":base.bzl", "make_adapter")
load(":desugar.bzl", "get_desugar_classpath")

Expand Down
2 changes: 1 addition & 1 deletion mobile_install/adapters/java_import.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
# limitations under the License.
"""Rule adapter for java_import."""

load("@rules_java//java/common:java_info.bzl", "JavaInfo")
load(
"//mobile_install:providers.bzl",
"MIAndroidDexInfo",
Expand All @@ -22,7 +23,6 @@ load(
load("//mobile_install:transform.bzl", "dex", "extract_jar_resources")
load("//mobile_install:utils.bzl", "utils")
load("//rules:visibility.bzl", "PROJECT_VISIBILITY")
load("@rules_java//java/common:java_info.bzl", "JavaInfo")
load(":base.bzl", "make_adapter")
load(":desugar.bzl", "get_desugar_classpath")

Expand Down
2 changes: 1 addition & 1 deletion mobile_install/adapters/java_library.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
# limitations under the License.
"""Rule adapter for java_library."""

load("@rules_java//java/common:java_info.bzl", "JavaInfo")
load(
"//mobile_install:providers.bzl",
"MIAndroidDexInfo",
Expand All @@ -21,7 +22,6 @@ load(
)
load("//mobile_install:transform.bzl", "dex", "extract_jar_resources")
load("//rules:visibility.bzl", "PROJECT_VISIBILITY")
load("@rules_java//java/common:java_info.bzl", "JavaInfo")
load(":base.bzl", "make_adapter")
load(":desugar.bzl", "get_desugar_classpath")

Expand Down
2 changes: 1 addition & 1 deletion mobile_install/adapters/java_lite_grpc_library.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@
# limitations under the License.
"""Rule adapter for _java_lite_grpc_library."""

load("@rules_java//java/common:java_info.bzl", "JavaInfo")
load("//mobile_install:providers.bzl", "MIAndroidDexInfo", "MIJavaResourcesInfo", "providers")
load("//mobile_install:transform.bzl", "dex", "extract_jar_resources")
load("//rules:visibility.bzl", "PROJECT_VISIBILITY")
load("@rules_java//java/common:java_info.bzl", "JavaInfo")
load(":base.bzl", "make_adapter")
load(":desugar.bzl", "get_desugar_classpath")

Expand Down
4 changes: 2 additions & 2 deletions mobile_install/adapters/java_lite_proto_library.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,11 @@ def _aspect_attrs():
"""Attrs of the rule requiring traversal by the aspect."""
return ["deps", "_aspect_proto_toolchain_for_javalite", "_proto_toolchain_for_javalite"]

def _adapt(target, ctx):
def _adapt(_target, ctx):
"""Adapts the rule and target data.

Args:
target: The target.
_target: The target.
ctx: The context.

Returns:
Expand Down
2 changes: 1 addition & 1 deletion mobile_install/adapters/proto_library.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@
# limitations under the License.
"""Rule adapter for proto_library."""

load("@rules_java//java/common:java_info.bzl", "JavaInfo")
load("//mobile_install:providers.bzl", "MIAndroidDexInfo", "providers")
load("//mobile_install:transform.bzl", "dex")
load("//rules:visibility.bzl", "PROJECT_VISIBILITY")
load("@rules_java//java/common:java_info.bzl", "JavaInfo")
load(":base.bzl", "make_adapter")
load(":desugar.bzl", "get_desugar_classpath")

Expand Down
23 changes: 21 additions & 2 deletions mobile_install/apks.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,26 @@ def make_split_apks(
key_rotation_min_sdk,
zipalign_alignment,
sibling):
"""Create a split for each dex and for resources"""
"""Create a split for each dex and for resources.

Args:
ctx: The context.
manifest: The merged AndroidManifest.xml.
r_dex: The generated R dex artifact.
dexes: A list of dex artifacts to package as splits.
resource_apk: The resource APK.
jar_resources: Java resource jars to package.
native_zips: Native library zips to package.
swigdeps_file: A generated SWIG deps file.
debug_signing_keys: Debug keystores used to sign APKs.
debug_signing_lineage_file: File containing the signing lineage.
key_rotation_min_sdk: Minimum API level to rotate signing keys for.
zipalign_alignment: Zip alignment used before signing.
sibling: The file used to root generated outputs.

Returns:
A tuple of the manifest package-name file and the generated split APKs.
"""
manifest_package_name = utils.isolated_declare_file(ctx, "manifest_package_name.txt", sibling = sibling)
manifests = {}
artifacts = {}
Expand All @@ -115,7 +134,7 @@ def make_split_apks(
to_pack = dexes + [r_dex]
if native_zips:
to_pack.extend(native_zips)
for i, artifact in enumerate(to_pack):
for artifact in to_pack:
# the split attr in the manifest will be used to name the file on the device like
# split_${SPLIT_ID}.apk. We need to follow the same pattern so that we can compare
# files during sync time and only do the incremental install.
Expand Down
2 changes: 1 addition & 1 deletion mobile_install/constants.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ constants = struct(
EMPTY_LIST = [],
EMPTY_DICT = dict(),

# Skylark Types
# Starlark Types
TYPE_DEPSET = type(depset()),
TYPE_DICT = type(dict()),
TYPE_LIST = type([]),
Expand Down
4 changes: 3 additions & 1 deletion mobile_install/mi.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@
# limitations under the License.
"""Aspect for mobile-install."""

load("@rules_java//java/common:java_info.bzl", "JavaInfo")
load("//rules:min_sdk_version.bzl", "min_sdk_version")
load("//rules:utils.bzl", "ANDROID_SDK_TOOLCHAIN_TYPE", "ANDROID_TOOLCHAIN_TYPE")
load("//rules:visibility.bzl", "PROJECT_VISIBILITY")
load("//rules/flags:flags.bzl", "flags")
load("@rules_java//java/common:java_info.bzl", "JavaInfo")
load(":adapters.bzl", "adapters")
load(":debug.bzl", "debug")
load(":tools.bzl", "TOOLCHAIN_TYPES", "TOOL_ATTRS")
Expand Down Expand Up @@ -57,7 +57,9 @@ def make_aspect(
dex_shards: Number of dex shards to split the project across.
is_cmd: A Boolean, when True the aspect is running in the context of the
mobile-install command. If False it is as a rule (e.g. mi_test).
is_test: Whether the aspect is running for a test rule.
res_shards: Number of Android resource shards during processing.
tools: Tool attributes to attach to the aspect.
Returns:
A configured aspect.
"""
Expand Down
1 change: 1 addition & 0 deletions mobile_install/process.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ def process(
debug_signing_keys: Debug keystores to be used to sign the apk.
debug_signing_lineage_file: File containing the signing lineage.
key_rotation_min_sdk: String of the minimum API level to rotate signing keys for.
zipalign_alignment: Zip alignment used before signing.
apk: The generated apk for the app.
sibling: The path to the launcher file.

Expand Down
2 changes: 1 addition & 1 deletion mobile_install/r_java.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
# limitations under the License.
"""Methods to create and process R.java."""

load("//rules:visibility.bzl", "PROJECT_VISIBILITY")
load("@rules_java//java/common:java_common.bzl", "java_common")
load("//rules:visibility.bzl", "PROJECT_VISIBILITY")
load(":utils.bzl", "utils")

visibility(PROJECT_VISIBILITY)
Expand Down
Loading