@@ -17,6 +17,7 @@ load("@com_google_protobuf//:protobuf_deps.bzl", "PROTOBUF_MAVEN_ARTIFACTS", "pr
1717
1818protobuf_deps ()
1919
20+ # Register remote JDK toolchains to safely compile Java targets under Bazel 8.
2021load ("@rules_java//java:rules_java_deps.bzl" , "rules_java_dependencies" )
2122
2223rules_java_dependencies ()
@@ -25,6 +26,15 @@ load("@bazel_features//:deps.bzl", "bazel_features_deps")
2526
2627bazel_features_deps ()
2728
29+ # Must be loaded after bazel_features_deps() to avoid circular deps.
30+ load ("@rules_java//java:repositories.bzl" , "rules_java_toolchains" )
31+
32+ rules_java_toolchains ()
33+
34+ load ("@rules_android//rules:rules.bzl" , "android_sdk_repository" )
35+
36+ android_sdk_repository (name = "androidsdk" )
37+
2838load ("@bazel_jar_jar//:jar_jar.bzl" , "jar_jar_repositories" )
2939
3040jar_jar_repositories ()
@@ -49,10 +59,119 @@ http_archive(
4959load ("@rules_jvm_external//:defs.bzl" , "maven_install" )
5060
5161maven_install (
52- artifacts = IO_GRPC_GRPC_JAVA_ARTIFACTS + PROTOBUF_MAVEN_ARTIFACTS ,
62+ artifacts = IO_GRPC_GRPC_JAVA_ARTIFACTS + PROTOBUF_MAVEN_ARTIFACTS + [
63+ # Hack: Android compile-time worker ResourceProcessorBusyBox uses protos internally.
64+ # This ensures rules_jvm_external generates its namespace target alias,
65+ # enabling the IO_GRPC_GRPC_JAVA_OVERRIDE_TARGETS to override it correctly.
66+ "com.google.protobuf:protobuf-java-util:3.25.5" ,
67+ ],
5368 override_targets = IO_GRPC_GRPC_JAVA_OVERRIDE_TARGETS ,
5469 repositories = [
5570 "https://repo.maven.apache.org/maven2/" ,
71+ # For androidx deps (e.g. core) not published to Maven Central.
72+ "https://maven.google.com" ,
73+ ],
74+ strict_visibility = False ,
75+ )
76+
77+ # Define a custom rules_android_maven repository to override its com.google.protobuf
78+ # runtime dependency to point directly to our workspace compiled C++ target.
79+ # This resolves severe runtime-vs-gencode validation crashes inside the precompiled
80+ # ResourceProcessorBusyBox tool when executing under legacy workspace mode.
81+ maven_install (
82+ name = "rules_android_maven" ,
83+ artifacts = [
84+ "androidx.privacysandbox.tools:tools:1.0.0-alpha06" ,
85+ "androidx.privacysandbox.tools:tools-apigenerator:1.0.0-alpha06" ,
86+ "androidx.privacysandbox.tools:tools-apipackager:1.0.0-alpha06" ,
87+ "androidx.test:core:1.6.0-alpha01" ,
88+ "androidx.test.ext:junit:1.2.0-alpha01" ,
89+ "com.android.tools.apkdeployer:apkdeployer:8.8.0-alpha05" ,
90+ "org.gradle:gradle-core:4.2.1" ,
91+ "com.android.tools.build:bundletool:1.15.5" ,
92+ "com.android.tools:desugar_jdk_libs_minimal:2.0.4" ,
93+ "com.android.tools:desugar_jdk_libs_configuration_minimal:2.0.4" ,
94+ "com.android.tools:desugar_jdk_libs_nio:2.0.4" ,
95+ "com.android.tools:desugar_jdk_libs_configuration_nio:2.0.4" ,
96+ "com.android.tools.build:gradle:8.7.0" ,
97+ "com.android.tools:r8:8.5.35" ,
98+ "org.bouncycastle:bcprov-jdk18on:1.77" ,
99+ "org.hamcrest:hamcrest-core:2.2" ,
100+ "org.robolectric:robolectric:4.14.1" ,
101+ "com.google.flogger:flogger:0.8" ,
102+ "com.google.guava:guava:32.1.2-jre" ,
103+ "com.google.truth:truth:1.1.5" ,
104+ "info.picocli:picocli:4.7.4" ,
105+ "jakarta.inject:jakarta.inject-api:2.0.1" ,
106+ "junit:junit:4.13.2" ,
107+ "com.beust:jcommander:1.82" ,
108+ "com.google.protobuf:protobuf-java:3.25.5" ,
109+ "com.google.protobuf:protobuf-java-util:3.25.5" ,
110+ "com.google.code.findbugs:jsr305:3.0.2" ,
111+ "androidx.databinding:databinding-compiler:8.7.0" ,
112+ "org.ow2.asm:asm:9.6" ,
113+ "org.ow2.asm:asm-commons:9.6" ,
114+ "org.ow2.asm:asm-tree:9.6" ,
115+ "org.ow2.asm:asm-util:9.6" ,
116+ "com.android.tools.layoutlib:layoutlib-api:30.1.3" ,
117+ "com.android:zipflinger:8.7.0" ,
118+ "com.android.tools.build:manifest-merger:30.1.3" ,
119+ "com.android:signflinger:8.7.0" ,
120+ "com.android.tools.build:aapt2-proto:8.6.1-11315950" ,
121+ "com.android.tools.analytics-library:protos:30.1.3" ,
122+ "com.android.tools.analytics-library:shared:30.1.3" ,
123+ "com.android.tools.analytics-library:tracker:30.1.3" ,
124+ "com.android.tools:annotations:30.1.3" ,
125+ "com.android.tools.build:apksig:8.7.0" ,
126+ "com.android.tools.build:apkzlib:8.7.0" ,
127+ "com.android.tools.build:builder:8.7.0" ,
128+ "com.android.tools.build:builder-model:8.7.0" ,
129+ "com.google.auto.value:auto-value:1.11.0" ,
130+ "com.google.auto.value:auto-value-annotations:1.11.0" ,
131+ "com.google.auto:auto-common:1.2.2" ,
132+ "com.google.auto.service:auto-service:1.1.1" ,
133+ "com.google.auto.service:auto-service-annotations:1.1.1" ,
134+ "com.google.errorprone:error_prone_annotations:2.33.0" ,
135+ "com.google.errorprone:error_prone_type_annotations:2.33.0" ,
136+ "com.google.errorprone:error_prone_check_api:2.33.0" ,
137+ "com.google.errorprone:error_prone_core:2.33.0" ,
138+ ],
139+ override_targets = {
140+ "com.google.protobuf:protobuf-java" : "@com_google_protobuf//:protobuf_java" ,
141+ "com.google.protobuf:protobuf-java-util" : "@com_google_protobuf//:protobuf_java_util" ,
142+ },
143+ repositories = [
144+ "https://repo1.maven.org/maven2" ,
145+ "https://maven.google.com" ,
146+ "https://repo.gradle.org/gradle/libs-releases" ,
56147 ],
57- strict_visibility = True ,
148+ use_starlark_android_rules = True ,
149+ aar_import_bzl_label = "@rules_android//rules:rules.bzl" ,
150+ )
151+
152+ # Download rules_android prerequisite repositories (such as @robolectric,
153+ # @io_bazel_rules_go, and @bazel_gazelle). This MUST be executed before loading
154+ # @rules_android//:defs.bzl to resolve top-level circular Starlark load statements.
155+ load ("@rules_android//:prereqs.bzl" , "rules_android_prereqs" )
156+
157+ rules_android_prereqs ()
158+
159+ load ("@rules_android//:defs.bzl" , "rules_android_workspace" )
160+
161+ rules_android_workspace ()
162+
163+ load ("@rules_android//rules/android_sdk_repository:rule.bzl" , "android_sdk_repository" )
164+
165+ android_sdk_repository (
166+ name = "androidsdk" ,
167+ )
168+
169+ # Register Android and SDK toolchains.
170+ # Note: @rules_android//toolchains/android_sdk:android_sdk_tools is required
171+ # to bridge legacy generated `@androidsdk` toolchains to modern standalone
172+ # rules_android toolchain type expectations under legacy workspace mode.
173+ register_toolchains (
174+ "@androidsdk//:all" ,
175+ "@rules_android//toolchains/android:all" ,
176+ "@rules_android//toolchains/android_sdk:android_sdk_tools" ,
58177)
0 commit comments