Add android constraints inside java_lite_proto_library

I’ve extended internal java semantics with add_constraints function (open source version doesn’t need it - empty function is enough).
In order to use internal add_constraint in tests (which depends on java_common.add_contraints -> experimental only), I've added experimental_google_legacy_api build option to all tests which depends on android constraint and java_lite_proto_library.

Resolved not allowed dependencies on .jar artifacts in Android binaries by adding JavaInfo inside 'provides' in java_lite_proto_library rule.

I've also added java_lite_proto_aspect as an artifact name for JavaLiteProtoLibrary inside GoogleJavaSematics.

PiperOrigin-RevId: 430192660
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaStarlarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaStarlarkCommon.java
index 252b5af..a2d21a8 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaStarlarkCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaStarlarkCommon.java
@@ -31,8 +31,10 @@
 import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi;
 import com.google.devtools.build.lib.starlarkbuildapi.java.JavaCommonApi;
 import com.google.devtools.build.lib.starlarkbuildapi.java.JavaToolchainStarlarkApiProviderApi;
+import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 import net.starlark.java.eval.EvalException;
 import net.starlark.java.eval.Module;
 import net.starlark.java.eval.Sequence;
@@ -270,9 +272,12 @@
 
   @Override
   public JavaInfo addConstraints(JavaInfo javaInfo, Sequence<?> constraints) throws EvalException {
-    // No implementation in Bazel. This method not callable in Starlark except through
-    // (discouraged) use of --experimental_google_legacy_api.
-    return null;
+    List<String> constraintStrings = Sequence.cast(constraints, String.class, "constraints");
+    ImmutableList<String> mergedConstraints =
+        Stream.concat(javaInfo.getJavaConstraints().stream(), constraintStrings.stream())
+            .distinct()
+            .collect(toImmutableList());
+    return JavaInfo.Builder.copyOf(javaInfo).setJavaConstraints(mergedConstraints).build();
   }
 
   @Override
diff --git a/src/main/starlark/builtins_bzl/common/java/java_semantics.bzl b/src/main/starlark/builtins_bzl/common/java/java_semantics.bzl
index e6e7b1f..104c400 100644
--- a/src/main/starlark/builtins_bzl/common/java/java_semantics.bzl
+++ b/src/main/starlark/builtins_bzl/common/java/java_semantics.bzl
@@ -35,6 +35,9 @@
     # wrap the jar in JavaInfo so we can add it to deps for java_common.compile()
     return JavaInfo(output_jar = runner_jar, compile_jar = runner_jar)
 
+def _add_constraints(java_info, constraints):
+    return java_info
+
 semantics = struct(
     JAVA_TOOLCHAIN_LABEL = "@bazel_tools//tools/jdk:current_java_toolchain",
     JAVA_PLUGINS_FLAG_ALIAS_LABEL = "@bazel_tools//tools/jdk:java_plugins_flag_alias",
@@ -57,4 +60,5 @@
     LINT_PROGRESS_MESSAGE = "Running Android Lint for: %{label}",
     check_proto_registry_collision = _check_proto_registry_collision,
     get_coverage_runner = _get_coverage_runner,
+    add_constraints = _add_constraints,
 )
diff --git a/src/main/starlark/builtins_bzl/common/java/proto/java_lite_proto_library.bzl b/src/main/starlark/builtins_bzl/common/java/proto/java_lite_proto_library.bzl
index c152d4d..b3d0f72 100644
--- a/src/main/starlark/builtins_bzl/common/java/proto/java_lite_proto_library.bzl
+++ b/src/main/starlark/builtins_bzl/common/java/proto/java_lite_proto_library.bzl
@@ -116,6 +116,7 @@
             java_toolchain = ctx.attr._java_toolchain[java_common.JavaToolchainInfo],
             enable_jspecify = False,
         )
+        java_info = semantics.add_constraints(java_info, ["android"])
     else:
         # If there are no proto sources just pass along the compilation dependencies.
         java_info = java_common.merge(deps)
@@ -148,4 +149,5 @@
             default = configuration_field(fragment = "proto", name = "proto_toolchain_for_java_lite"),
         ),
     },
+    provides = [JavaInfo],
 )
diff --git a/src/test/java/com/google/devtools/build/lib/rules/java/proto/StarlarkJavaLiteProtoLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/java/proto/StarlarkJavaLiteProtoLibraryTest.java
index ba281a4..4f1a1c2 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/java/proto/StarlarkJavaLiteProtoLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/java/proto/StarlarkJavaLiteProtoLibraryTest.java
@@ -70,7 +70,9 @@
 
   @Before
   public final void setupStarlarkRule() throws Exception {
-    setBuildLanguageOptions("--experimental_builtins_injection_override=+java_lite_proto_library");
+    setBuildLanguageOptions(
+        "--experimental_builtins_injection_override=+java_lite_proto_library",
+        "--experimental_google_legacy_api");
   }
 
   private void mockToolchains() throws IOException {